FILE: invokeAmbiguity.kt public open class A : R|kotlin/Any| { public constructor(): R|A| { super() } public final operator fun invoke(f: R|() -> kotlin/Unit|): R|kotlin/Int| { ^invoke Int(1) } } public final class B : R|kotlin/Any| { public constructor(): R|B| { super() } public final operator fun invoke(f: R|() -> kotlin/Unit|): R|kotlin/CharSequence| { ^invoke String() } } public open class C : R|kotlin/Any| { public constructor(): R|C| { super() } } public final val R|C|.attr: R|A| public get(): R|A| { ^ R|kotlin/TODO|() } public open class D : R|C| { public constructor(): R|D| { super() } } public final val R|D|.attr: R|B| public get(): R|B| { ^ R|kotlin/TODO|() } public final fun box(d: R|D|): R|kotlin/Unit| { R|/d|.R|/attr|.R|/B.invoke|( = attr@fun (): R|kotlin/Unit| { ^@attr Unit } ).R|kotlin/CharSequence.length| }