FILE: nullability.kt public abstract interface A : R|kotlin/Any| { public abstract fun foo(): R|kotlin/Unit| public abstract fun getA(): R|A| } public abstract interface MyData : R|kotlin/Any| { public abstract val s: R|kotlin/Int| public get(): R|kotlin/Int| public abstract fun fs(): R|kotlin/Int| } public abstract interface Q : R|kotlin/Any| { public abstract val data: R|MyData?| public get(): R|MyData?| public abstract fun fdata(): R|MyData?| } public final class QImpl : R|Q| { public constructor(data: R|MyData?|): R|QImpl| { super() } public open override val data: R|MyData?| = R|/data| public get(): R|MyData?| public open override fun fdata(): R|MyData?| { ^fdata Null(null) } } public final class QImplMutable : R|Q| { public constructor(data: R|MyData?|): R|QImplMutable| { super() } public open override var data: R|MyData?| = R|/data| public get(): R|MyData?| public set(value: R|MyData?|): R|kotlin/Unit| public open override fun fdata(): R|MyData?| { ^fdata Null(null) } } public final class QImplWithCustomGetter : R|Q| { public constructor(): R|QImplWithCustomGetter| { super() } public open override val data: R|MyData?| public get(): R|MyData?| { ^ Null(null) } public open override fun fdata(): R|MyData?| { ^fdata Null(null) } } public final fun test_1(x: R|A?|): R|kotlin/Unit| { when () { !=(R|/x|, Null(null)) -> { R|/x|.R|/A.foo|() } else -> { R|/x|.R|/A.foo#|() } } R|/x|.R|/A.foo#|() } public final fun test_2(x: R|A?|): R|kotlin/Unit| { when () { ==(R|/x|, Null(null)) -> { R|/x|.R|/A.foo#|() } else -> { R|/x|.R|/A.foo|() } } R|/x|.R|/A.foo#|() } public final fun test_3(x: R|A?|): R|kotlin/Unit| { R|/x| ?: ^test_3 Unit R|/x|.R|/A.foo|() } public final fun test_4(x: R|A?|): R|kotlin/Unit| { when () { ==(R|/x|?.{ $subj$.R|/A.getA|() }, Null(null)) -> { ^test_4 Unit } } R|/x|.R|/A.foo|() } public final fun test_5(q: R|Q?|): R|kotlin/Unit| { when () { !=(R|/q|?.{ $subj$.R|/Q.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> { R|/q|.R|/Q.data| R|/q|.R|/Q.data|.R|/MyData.s#| R|/q|.R|/Q.data|.R|/MyData.s#|.R|kotlin/Int.inc|() } } } public final fun test_6(q: R|Q?|): R|kotlin/Unit| { R|/q|?.{ $subj$.R|/Q.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() } ?: ^test_6 Unit R|/q|.R|/Q.data| R|/q|.R|/Q.data|.R|/MyData.s#| R|/q|.R|/Q.data|.R|/MyData.s#|.R|kotlin/Int.inc|() } public final fun test_7(q: R|Q?|): R|kotlin/Unit| { when () { !=(R|/q|?.{ $subj$.R|/Q.fdata|() }?.{ $subj$.R|/MyData.fs|() }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> { R|/q|.R|/Q.fdata|() R|/q|.R|/Q.fdata|().R|/MyData.fs#|() R|/q|.R|/Q.fdata|().R|/MyData.fs#|().R|kotlin/Int.inc|() } } } public final fun test_8(b: R|kotlin/Boolean?|): R|kotlin/Unit| { when () { ==(R|/b|, Boolean(true)) -> { R|/b|.R|kotlin/Boolean.not|() } } } public final fun test_9(a: R|kotlin/Int|, b: R|kotlin/Int?|): R|kotlin/Unit| { when () { ==(R|/a|, R|/b|) -> { R|/b|.R|kotlin/Int.inc|() } } R|/b|.R|kotlin/Int.inc#|() when () { ===(R|/a|, R|/b|) -> { R|/b|.R|kotlin/Int.inc|() } } R|/b|.R|kotlin/Int.inc#|() when () { ==(R|/b|, R|/a|) -> { R|/b|.R|kotlin/Int.inc|() } } R|/b|.R|kotlin/Int.inc#|() when () { ===(R|/b|, R|/a|) -> { R|/b|.R|kotlin/Int.inc|() } } R|/b|.R|kotlin/Int.inc#|() } public final fun test_10(a: R|kotlin/Int?|, b: R|kotlin/Int?|): R|kotlin/Unit| { when () { ==(R|/a|, R|/b|) -> { R|/b|.R|kotlin/Int.inc#|() } } R|/b|.R|kotlin/Int.inc#|() when () { ===(R|/a|, R|/b|) -> { R|/b|.R|kotlin/Int.inc#|() } } R|/b|.R|kotlin/Int.inc#|() when () { ==(R|/b|, R|/a|) -> { R|/b|.R|kotlin/Int.inc#|() } } R|/b|.R|kotlin/Int.inc#|() when () { ===(R|/b|, R|/a|) -> { R|/b|.R|kotlin/Int.inc#|() } } R|/b|.R|kotlin/Int.inc#|() } public final fun test_11(q: R|QImpl?|, q2: R|QImpl|): R|kotlin/Unit| { when () { !=(R|/q|?.{ $subj$.R|/QImpl.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> { R|/q|.R|/QImpl.data| R|/q|.R|/QImpl.data|.R|/MyData.s| R|/q|.R|/QImpl.data|.R|/MyData.s|.R|kotlin/Int.inc|() R|/q2|.R|/QImpl.data| R|/q2|.R|/QImpl.data|.R|/MyData.s#| R|/q2|.R|/QImpl.data|.R|/MyData.s#|.R|kotlin/Int.inc|() when () { !=(R|/q2|.R|/QImpl.data|, Null(null)) -> { R|/q2|.R|/QImpl.data|.R|/MyData.s| R|/q2|.R|/QImpl.data|.R|/MyData.s|.R|kotlin/Int.inc|() } } } } } public final fun test_12(q: R|QImplWithCustomGetter?|): R|kotlin/Unit| { when () { !=(R|/q|?.{ $subj$.R|/QImplWithCustomGetter.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> { R|/q|.R|/QImplWithCustomGetter.data| R|/q|.R|/QImplWithCustomGetter.data|.R|/MyData.s#| R|/q|.R|/QImplWithCustomGetter.data|.R|/MyData.s#|.R|kotlin/Int.inc|() } } } public final fun test_13(q: R|QImplMutable?|): R|kotlin/Unit| { when () { !=(R|/q|?.{ $subj$.R|/QImplMutable.data| }?.{ $subj$.R|/MyData.s| }?.{ $subj$.R|kotlin/Int.inc|() }, Null(null)) -> { R|/q|.R|/QImplMutable.data| R|/q|.R|/QImplMutable.data|.R|/MyData.s#| R|/q|.R|/QImplMutable.data|.R|/MyData.s#|.R|kotlin/Int.inc|() } } } public final fun test_14(q: R|Q|): R|kotlin/Unit| { when () { ==(R|/q|.R|/Q.data|, Null(null)) -> { R|/q|.R|/Q.data|.R|/MyData.s#| } } }