package As val staticProperty : String = "1" val String.staticExt: String get() = "1" open class A(val init: String) { open val property : String = init private val privateProperty : String = init val String.ext: String get() = "1" val Int.myInc : Int get() = this + 1 open fun getPrivate() : String { return privateProperty; } open fun getExt() : String { return "0".ext; } public var backingField : Int = 0 get() = field.myInc set(s) { field = s } } open class B(init: String) : A("1") { override val property: String = init fun getOpenProperty(): String { return super.property } fun getWithBackingFieldProperty(): String { return property } } fun box() : String { val a = A("1"); val b = B("0"); a.backingField = 0 val result = a.property + a.getPrivate() + staticProperty + "0".staticExt + a.getExt() + a.backingField + a.backingField + b.getOpenProperty() + b.property + b.getWithBackingFieldProperty() return if (result == "1111111100") "OK" else "fail" }