// ISSUE: KT-42130 interface A interface B : A fun B.foo(): Boolean = true fun run(action: () -> T): T = action() fun foo(a: A): String { return when (a) { is B -> when { run { a.foo() } -> "OK" else -> "Fail 1" } else -> "Fail 2" } } class C : B fun box(): String = foo(C())