interface Z { val value: T val z: T get() = value } open class ZImpl : Z { override val value: String get() = "OK" } open class ZImpl2 : ZImpl() { override val z: String get() = super.z } fun box(): String { return ZImpl2().value }