open class A class B : A() { fun foo() = 1 } class Test { val a : A = B() private val b : B get() = a as B //'private' is important here fun outer() : Int { fun inner() : Int = b.foo() //'no such field error' here return inner() } } fun box() = if (Test().outer() == 1) "OK" else "fail"