sealed class A { object B : A() class C : A() } fun foo(): A = A.C() fun box(): String { val a: A = foo() val b: Boolean when (a) { A.B -> b = true is A.C -> b = false } return if (!b) "OK" else "FAIL" } // 0 TABLESWITCH // 0 LOOKUPSWITCH // 1 ATHROW