interface A { fun foo(t: T) = "A" } class Z : A fun box(): String { val z = Z() val a: A = z return when { z.foo("") != "A" -> "Fail #1" a.foo("") != "A" -> "Fail #2" else -> "OK" } }