interface Left interface Right class Bottom : Left, Right interface A { fun f(): T? { return null } } interface B : A {} abstract class C : A abstract class D : C() class Z : D(), B fun box(): String { Z().f() return "OK" }