import java.util.function.*; class Test { void test1(Object o, int mode) { switch (o) { case (Integer i) && i == mode -> System.out.println(); default -> {} } switch (o) { case (Integer i) && (switch (o) { case Integer ii && ii != mode -> 2; case default -> 1; }) == mode -> System.out.println(); default -> {} } switch (o) { case (Integer i) && (i = mode) > 0 -> System.out.println(); default -> {} } mode = 0; } void test2(Object o, final int mode) { switch (o) { case (Integer i) && (switch (o) { case Integer ii && ii != mode -> 2; case default -> 1; }) == mode -> o = null; default -> {} } switch (o) { case (Integer i) && (i = mode) > 0 -> System.out.println(); default -> {} } } void test3(Object o, int mode) { switch (o) { case (Integer i) && i == mode -> System.out.println(); default -> {} } switch (o) { case (Integer i) && (switch (o) { case Integer ii && ii != mode -> 2; case default -> 1; }) == mode -> System.out.println(); default -> {} } } void testInstanceofPatterns(Object o, int mode) { if (o instanceof Integer i && (i = mode) > 0) { } mode = 0; } void testNested(Object o, Integer in) { switch (o) { case Integer mode && (mode = 42) > 9: switch (o) { case (Integer i) && (i = mode) > 0 -> System.out.println(); default -> System.out.println(); } default : break; } String str; str = switch (o) { case Integer mode && (mode = 42) > 9 -> switch (o) { case (Integer i) && (i = mode) > 0 -> ""; default -> ""; }; default -> ""; }; str = switch (o) { case Integer mode && (mode = 42) > 9: yield switch (o) { case (Integer i) && (i = mode) > 0 -> ""; default -> ""; }; default: yield ""; }; // lambdas str = switch (o) { case Integer i && (i = in) > 0: yield ((Function)(x) -> (in = 5) > 0 ? "" : null).apply(in); default: yield ""; }; Consumer c = (mode) -> { switch (o) { case (Integer i) && (i = in) > 0 -> System.out.println(); default -> System.out.println(); } in = 1; }; // try-with-resources try (in) { switch (o) { case AutoCloseable ii && (in = ii) != null: break; default: break; } } catch (Exception e) { } // double nested switch (o) { case Integer mode && (mode = 42) > 9: switch (o) { case Integer i -> { switch (o) { case Integer ii && ii > mode: break; default: break; } } default -> System.out.println(); } default: break; } str = switch (o) { case Integer mode && (mode) > 9: yield switch (o) { case Integer i -> { yield switch (o) { case Integer ii && ii > mode: yield ""; default: yield ""; }; } default -> ""; }; default: yield ""; }; } }