open class A { open fun foo(): Any = "A" } open class C : A() { override fun foo(): Int = 222 } interface D { fun foo(): Number } class E : C(), D fun box(): String { val e = E() if (e.foo() != 222) return "Fail 1" val d: D = e val c: C = e val a: A = e if (d.foo() != 222) return "Fail 2" if (c.foo() != 222) return "Fail 3" if (a.foo() != 222) return "Fail 4" return "OK" }