FILE: Impl.kt public abstract class Impl : R|Base| { public constructor(): R|Impl| { super() } public open override fun foo(name: R|kotlin/String|): R|Base| { ^foo this@R|/Impl| } } FILE: test.kt public abstract class ImplDerived : R|Impl|, R|Derived| { public constructor(): R|ImplDerived| { super() } public abstract override fun foo(name: R|kotlin/String?|): R|Derived| } public abstract class DerivedImpl : R|Derived|, R|Impl| { public constructor(): R|DerivedImpl| { super() } public abstract override fun foo(name: R|kotlin/String?|): R|Derived| }