class Holder(var value: Int) { fun get(that: Any?, desc: PropertyMetadata) = value fun set(that: Any?, desc: PropertyMetadata, newValue: Int) { value = newValue } } trait R> { var value: T } class A(start: Int) : R { override var value: Int by Holder(start) } fun box(): String { val a = A(239) a.value = 42 return if (a.value == 42) "OK" else "Fail 1" }