import java.util.List; record RecordInterface(I x, I y) {} interface Super {} record RecordSuper(int x) implements Super {} sealed interface I permits C, D {} final class C implements I {} final class D implements I {} class Dominance { Integer integer; Object object; void test(){ switch (integer) { case Integer i -> {} case 1 -> {} default -> {} } switch (integer) { case Integer i when i > 0 -> {} case 1 -> {} default -> {} } switch (integer) { case 1 -> {} case Integer i when i > 0 -> {} default -> {} } switch (integer) { case 1 -> {} case Integer i -> {} } switch (object) { case CharSequence s -> {} case String c -> {} } switch (object) { case CharSequence s -> {} case String c when c.length() > 0 -> {} } switch (object) { case CharSequence s when true -> {} case String c -> {} } switch (object) { case CharSequence s when true -> {} case String c when c.length() > 0 -> {} } switch (object) { case RecordInterface(I z, I y) s -> {} case RecordInterface(C z, D y) -> {} default -> {} } switch (object) { case RecordInterface(I z, D y) s when true -> {} case RecordInterface(C z, D y) -> {} default -> {} } switch (object) { case RecordInterface(C z, D y) s when true -> {} case RecordInterface(C z, D y) s when y.hashCode() > 0 -> {} default -> {} } switch (object) { case RecordInterface(C z, D y) s when z.hashCode() > 5 -> {} case RecordInterface(C z, D y) s when y.hashCode() > 0 -> {} default -> {} } switch (object) { case RecordInterface(C z, D y) -> {} case RecordInterface(I z, I y) -> {} default -> {} } switch (object) { case RecordInterface(I z, D y) -> {} case RecordInterface(C z, C y) -> {} default -> {} } switch (object) { case Super i -> {} case RecordSuper(int z) q when z > 0 -> {} case default -> {} } switch (object) { case List l -> System.out.println(); case List l when l.size() == 2 -> System.out.println(); default -> throw new IllegalStateException("Unexpected value: " + object); } switch (integer) { case Integer i -> {} case null -> {} } } }