open class A { open fun foo(r: R): R {return r} } open class B : A() { } open class C : B() { override fun foo(r: String): String { return super.foo(r) + "K" } } fun box() = C().foo("O")