abstract class Base { abstract var s: T } trait Trait : Base { var value : T get() = s set(value) { s = value } } class Derived : Trait, Base() { override var s = "Fail" } fun box(): String { val d = Derived() d.value = "OK" return d.value }