import kotlin.reflect.KProperty class Delegate { var inner = 1 operator fun getValue(t: Any?, p: KProperty<*>): Int = inner } class A { operator fun Delegate.setValue(t: Any?, p: KProperty<*>, i: Int) { inner = i } var prop: Int by Delegate() } fun box(): String { val c = A() if(c.prop != 1) return "fail get" c.prop = 2 if (c.prop != 2) return "fail set" return "OK" }