var result = "" interface Base open class Child : Base interface A { fun foo(a : E) { result += "A" } } class B : A { override fun foo(a : E) { result += "B" } } fun box(): String { val b = B() b.foo(Child()) val a: A = b a.foo(Child()) return if (result == "BB") "OK" else "Fail: $result" }