//namespace override trait T { fun foo() val v : Int } open class Br(t : T) : T { } class Br3(t : T) : Br(t) { } open class Br1(t : T) : T by t { } class Br2(t : T) : Br1(t) { } trait G { fun foo(t : T) : T } class GC() : G { } open class GC1(g : G) : G by g { } open class GC2(g : G) : GC1(g) { }