open class A { open fun foo(a: T): Int = 2 } trait B : A { override fun foo(a: T): Int = 1 } class D : B, A() { fun boo(): Int { return super.foo(1) } } fun box(): String { if (D().boo() != 1) return "Fail" return "OK" }