FILE: kt41917.kt public final class DummyDelegate : R|kotlin/Any| { public constructor(s: R|V|): R|DummyDelegate| { super() } public final val s: R|V| = R|/s| public get(): R|V| public final operator fun getValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|): R|V| { ^getValue this@R|/DummyDelegate|.R|/DummyDelegate.s| } } public final fun testImplicit(c: R|C|): R|kotlin/Int| { ^testImplicit R|/c|.R|/A.implicit|.R|kotlin/String.length| } public final fun testExplicit(c: R|C|): R|kotlin/Int| { ^testExplicit R|/c|.R|/A.explicit|.R|kotlin/String.length| } public open class A : R|kotlin/Any| { public constructor(): R|A| { super() } public final val implicit: R|kotlin/String|by R|/DummyDelegate.DummyDelegate|(String(hello)) public get(): R|kotlin/String| { ^ this@R|/A|.D|/A.implicit|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.implicit|) } public final val explicit: R|kotlin/String|by R|/DummyDelegate.DummyDelegate|(String(hello)) public get(): R|kotlin/String| { ^ this@R|/A|.D|/A.explicit|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.explicit|) } } public abstract interface B : R|kotlin/Any| { public abstract val implicit: R|kotlin/String| public get(): R|kotlin/String| public abstract val explicit: R|kotlin/String| public get(): R|kotlin/String| } public final class C : R|A|, R|B| { public constructor(): R|C| { super() } }