val Int.getter: Int get() { val extFun: Int.() -> Int = { this@getter } return this@getter.extFun() } var Int.setter: Int get() = 1 set(i: Int) { val extFun: Int.() -> Int = { this@setter } this@setter.extFun() } fun box(): String { val i = 1 if (i.getter != 1) return "getter failed" i.setter = 1 if (i.setter != 1) return "setter failed" return "OK" }