open class SuperFoo { public fun bar(): String { if (this is Foo) { superFoo() // Smart cast return baz() // Cannot be cast } return baz() } public fun baz() = "OK" } class Foo : SuperFoo() { public fun superFoo() {} } fun box(): String = Foo().bar()