// FILE: lib.kt var result = "" interface Left interface Right class Bottom : Left, Right interface A { fun f(): T? { result = "A" return null } } interface B : A { override fun f(): T? { result = "B" return null } } abstract class C : A abstract class D : C() // FILE: box.kt class Z : D(), B fun box(): String { Z().f() return if (result == "B") "OK" else "Fail: $result" }