import java.util.Optional;
class Main {
class Case1{
interface I{}
sealed interface T permits A, B{}
sealed interface A extends T permits EN{}
enum EN implements A, I {EN_A, EN_B,}
final class B implements T {
}
public static void t(T t) {
switch (t) { //not error
case EN.EN_A -> System.out.println(3);
case EN.EN_B -> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
public static void t2(T t) {
switch (t) { //error
case EN.EN_B -> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
}
class Case2{
interface I{}
sealed interface T permits A, B{}
sealed interface A extends T permits R{}
record R(CharSequence s) implements A, I{}
final class B implements T {
}
public static void t(T t) {
switch (t) { //not error
case R(CharSequence s)-> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
public static void t2(T t) {
switch (t) { //error
case R(String s)-> System.out.println(3);
case I i -> System.out.println(1);
case B b -> System.out.println(2);
}
}
}
}