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|SubstitutionOverride|(Int(0)).R|/B.plusAssign|(R|/B.B|()) Unit } public final fun test_2(a: R|A|): R|kotlin/Unit| { { lval : R|A| = R|/a| lval : R|kotlin/Int| = Int(0) R|/|.R|SubstitutionOverride|(R|/|, R|/|.R|SubstitutionOverride|(R|/|).R|/C.plus|(R|/C.C|())) } Unit } public final fun test_3(a: R|A|): R|kotlin/Unit| { R|/a|.R|SubstitutionOverride|(Int(0)).#(R|/D.D|()) Unit } public final fun test_4(b: R|B|): R|kotlin/Unit| { R|/b|.#(Int(0)).#(R|/B.B|()) Unit }