record Top(Child c1, Child c2) {} record Child(I x, I y){} record Wrong(int x) {} sealed interface I permits A, B {} final class A implements I {} final class B implements I {} public class Test { void test(Object o, Integer i){ switch (o){ if (o instanceof Child(A a)){ } if (o instanceof Child(A a, B b)){ } if (o instanceof Top(Child a, Child(int x, I y))){ } if (o instanceof Top(Child a, Child(A a, I y))){ } if (o instanceof Top(Child a, Wrong(int x))){ } if (i instanceof Wrong(int x)) { } } } }