FILE: equalsAndIdentity.kt public abstract interface A : R|kotlin/Any| { public abstract fun foo(): R|kotlin/Unit| } public final fun test_1(x: R|A|, y: R|A?|): R|kotlin/Unit| { when () { ==(R|/x|, R|/y|) -> { R|/x|.R|/A.foo|() R|/y|.R|/A.foo|() } } when () { ===(R|/x|, R|/y|) -> { R|/x|.R|/A.foo|() R|/y|.R|/A.foo|() } } } public final fun test_2(x: R|A?|, y: R|A?|): R|kotlin/Unit| { when () { ==(R|/x|, R|/y|) -> { R|/x|.R|/A.foo#|() R|/y|.R|/A.foo#|() } } when () { ===(R|/x|, R|/y|) -> { R|/x|.R|/A.foo#|() R|/y|.R|/A.foo#|() } } } public final fun test_3(x: R|A?|, y: R|A?|): R|kotlin/Unit| { when () { ==(R|/y|, Null(null)) -> { ^test_3 Unit } } when () { ==(R|/x|, R|/y|) -> { R|/x|.R|/A.foo|() R|/y|.R|/A.foo|() } } when () { ===(R|/x|, R|/y|) -> { R|/x|.R|/A.foo|() R|/y|.R|/A.foo|() } } }