abstract class A { open val Inv.phasedFir: D get() = TODO() } abstract class B : A() { final override val Inv.phasedFir: D get() = TODO() } abstract class Inv class C : B() { fun foo(x: Inv) { x.phasedFir } }