FILE: arraySetWithOperation.kt public final class A : R|kotlin/Any| { public constructor(): R|A| { super() } public final operator fun get(index: R|kotlin/Int|): R|T| { ^get Null(null)!! } public final operator fun set(index: R|kotlin/Int|, value: R|T|): R|kotlin/Unit| { } } public final class B : R|kotlin/Any| { public constructor(): R|B| { super() } public final operator fun plusAssign(other: R|B|): R|kotlin/Unit| { } } public final class C : R|kotlin/Any| { public constructor(): R|C| { super() } public final operator fun plus(other: R|C|): R|C| { ^plus this@R|/C| } } public final class D : R|kotlin/Any| { public constructor(): R|D| { super() } public final operator fun plusAssign(other: R|D|): R|kotlin/Unit| { } public final operator fun plus(other: R|D|): R|D| { ^plus this@R|/D| } } public final fun test_1(a: R|A|): R|kotlin/Unit| { R|/a|.R|FakeOverride|(Int(0)).R|/B.plusAssign|(R|/B.B|()) } public final fun test_2(a: R|A|): R|kotlin/Unit| { { lval <>: R|A| = R|/a| lval <>: R|kotlin/Int| = Int(0) R|/<>|.R|FakeOverride|(R|/<>|, R|/<>|.R|FakeOverride|(R|/<>|).R|/C.plus|(R|/C.C|())) } } public final fun test_3(a: R|A|): R|kotlin/Unit| { ArraySet:[R|/a|.R|FakeOverride|(Int(0)).R|/D.plusAssign|(R|/D.D|())] } public final fun test_4(b: R|B|): R|kotlin/Unit| { ArraySet:[R|/b|.#(Int(0)).#(R|/B.B|())] }