// Changed when traits were introduced. May not make sense any more open class Base() { public var v : Int = 0 } open class Left() : Base() {} trait Right : Base {} class D() : Left(), Right fun vl(l : Left) : Int = l.v fun vr(r : Right) : Int = r.v fun box() : String { val d = D() d.v = 42 if (d.v != 42) return "Fail #1" if (vl(d) != 42) return "Fail #2" if (vr(d) != 42) return "Fail #3" return "OK" }