== foo == fun foo(a: Number) { val t = when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null } } --------------------- : {<: Number} NEW: magic[FAKE_INITIALIZER](a: Number) -> a : * NEW: r(a) -> 1 : * NEW: r(1) -> 1 : * NEW: magic[EQUALS_IN_WHEN_CONDITION](1|, ) -> "1" : {<: String?} NEW: r("1") -> 2 : {<: Int?} NEW: r(2) -> singleton(2) : OR{{<: Collection}, {<: Collection}} NEW: call(singleton(2), singleton|) -> Collections.singleton(2) : OR{{<: Collection}, {<: Collection}} COPY in Collections.singleton(2) : * NEW: call(in Collections.singleton(2), contains|, ) -> "2" : {<: String?} NEW: r("2") -> is Int : * NEW: magic[IS](is Int|) -> "Int" : {<: String?} NEW: r("Int") -> 3 : {<: Int?} NEW: r(3) -> singleton(3) : OR{{<: Collection}, {<: Collection}} NEW: call(singleton(3), singleton|) -> Collections.singleton(3) : OR{{<: Collection}, {<: Collection}} COPY !in Collections.singleton(3) : * NEW: call(!in Collections.singleton(3), contains|, ) -> "!3" : {<: String?} NEW: r("!3") -> !is Number : * NEW: magic[IS](!is Number|) -> "!Number" : {<: String?} NEW: r("!Number") -> null : {<: String?} NEW: r(null) -> when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null } : {<: String?} NEW: merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|, , , , , ) -> =====================