interface A { fun foo(): T } interface B : A class BImpl(a: A) : B, A by a fun box(): String { val b: B = BImpl(object : A { override fun foo() = "OK" }) if (b.foo() != "OK") return "fail 1" val a: A = b return a.foo() }