// ISSUE: KT-44942 abstract class A { abstract fun foo(): String } class B : A() { override fun foo(): String = "fail" fun bar() = "fail" } class C : A() { override fun foo(): String = "OK" } fun A.test() = (this as? B)?.bar() ?: foo() fun box() = C().test()