FILE: smartcastToNothing.kt public final fun getNothing(): R|kotlin/Nothing| { ^getNothing throw R|java/lang/Exception.Exception|() } public final fun getNullableNothing(): R|kotlin/Nothing?| { ^getNullableNothing Null(null) } public final val R|kotlin/String?|.q: R|kotlin/Int| public get(): R|kotlin/Int| { ^ Int(1) } public final val R|kotlin/String|.qq: R|kotlin/Int| public get(): R|kotlin/Int| { ^ Int(2) } public final fun myListOf(x: R|T|): R|kotlin/collections/List| { ^myListOf Null(null)!! } public final class A : R|kotlin/Any| { public constructor(): R|A| { super() } public final val a: R|kotlin/Int| = Int(1) public get(): R|kotlin/Int| public final val b: R|kotlin/Boolean| = Boolean(true) public get(): R|kotlin/Boolean| } public final fun test_0(results: R|kotlin/collections/List|): R|kotlin/Unit| { lvar s: R|A?| = Null(null) { lval : R|kotlin/collections/Iterator| = R|/results|.R|SubstitutionOverride|>|() while(R|/|.R|SubstitutionOverride|()) { lval result: R|kotlin/Nothing| = R|/|.R|SubstitutionOverride|() { R|/s| = R|/result| when () { R|/result|.# -> { break@@@[R|/|.R|SubstitutionOverride|()] } } } } } R|/s|?.{ $subj$.R|kotlin/let|( = let@fun (it: R|A|): R|kotlin/Int| { ^ R|/it|.R|/A.a| } ) } } public final fun test_1(a: R|kotlin/String?|): R|kotlin/Unit| { when () { (R|/a| is R|kotlin/Nothing?|) -> { lval b: R|kotlin/Int?| = R|/a|?.{ $subj$.R|kotlin/String.length| } } } when () { (R|/a| is R|kotlin/Nothing|) -> { lval b: R|kotlin/Int| = R|/a|.R|kotlin/String.length| } } }