open class B { val p = "OK" } class BB : B() interface Z { fun T.getString() : String { return p } fun test(s: T) : String { return s.extension() } private fun T.extension(): String { return getString() } } object Z2 : Z { } fun box() : String { return Z2.test(BB()) }