FILE: boundSmartcastsInBranches.kt public final class A : R|kotlin/Any| { public constructor(): R|A| { super() } public final val s: R|kotlin/String| = String() public get(): R|kotlin/String| } public final fun test_0(list: R|kotlin/collections/List|): R|kotlin/Unit| { lvar goodA: R|A?| = Null(null) { lval : R|kotlin/collections/Iterator| = R|/list|.R|SubstitutionOverride|>|() while(R|/|.R|SubstitutionOverride|()) { lval a: R|A| = R|/|.R|SubstitutionOverride|() { when () { ==(R|/goodA|, Null(null)) -> { R|/goodA| = R|/a| continue@@@[R|/|.R|SubstitutionOverride|()] } } R|/goodA|.R|/A.s| } } } } public final fun test_1(a: R|A|, b: R|kotlin/Boolean|): R|kotlin/Unit| { lval x: R|kotlin/Any| when () { R|/b| -> { R|/x| = R|/A.A|() } else -> { R|/x| = R|/a| } } R|/x|.R|/A.s| } public final fun test_2(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { lval x: R|kotlin/Any| when () { R|/b| -> { R|/x| = R|/A.A|() } else -> { R|/x| = R|/a| (R|/a| as R|A|) } } R|/x|.R|/A.s| } public final fun test_3(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { lval x: R|kotlin/Any| when () { R|/b| -> { R|/x| = R|/A.A|() } else -> { (R|/a| as R|A|) R|/x| = R|/a| } } R|/x|.R|/A.s| } public final fun test_4(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { lval x: R|kotlin/Any| when () { R|/b| -> { R|/x| = R|/a| } else -> { R|/x| = R|/a| } } (R|/x| as R|A|) R|/x|.R|/A.s| R|/a|.R|/A.s| } public final fun test_5(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { lval x: R|kotlin/Any| when () { R|/b| -> { R|/x| = R|/a| } else -> { R|/x| = R|/a| } } (R|/a| as R|A|) R|/x|.R|/A.s| R|/a|.R|/A.s| } public final fun test_6(a: R|A|): R|kotlin/Unit| { lval x: R|kotlin/Any| R|/x| = R|/a| R|/x|.R|/A.s| } public final fun test_7(): R|kotlin/Unit| { lval z: R|kotlin/String?| = Null(null) lvar y: R|kotlin/String?| = R|/z| lval x: R|kotlin/String?| = R|/y| when () { !=(R|/x|, Null(null)) -> { R|/x|.R|kotlin/String.length| R|/y|.R|kotlin/String.length#| R|/z|.R|kotlin/String.length#| } } when () { !=(R|/y|, Null(null)) -> { R|/x|.R|kotlin/String.length#| R|/y|.R|kotlin/String.length| R|/z|.R|kotlin/String.length#| } } when () { !=(R|/z|, Null(null)) -> { R|/x|.R|kotlin/String.length#| R|/y|.R|kotlin/String.length#| R|/z|.R|kotlin/String.length| } } R|/y| = Null(null) when () { !=(R|/x|, Null(null)) -> { R|/x|.R|kotlin/String.length| R|/y|.R|kotlin/String.length#| R|/z|.R|kotlin/String.length#| } } when () { !=(R|/y|, Null(null)) -> { R|/x|.R|kotlin/String.length#| R|/y|.R|kotlin/String.length| R|/z|.R|kotlin/String.length#| } } when () { !=(R|/z|, Null(null)) -> { R|/x|.R|kotlin/String.length#| R|/y|.R|kotlin/String.length#| R|/z|.R|kotlin/String.length| } } } public final fun test_8(): R|kotlin/Unit| { lval z: R|kotlin/String?| = Null(null) lvar y: R|kotlin/String?| = R|/z| lval x: R|kotlin/String?| = R|/y| when () { !=(R|/x|, Null(null)) -> { R|/x|.R|kotlin/String.length| R|/y|.R|kotlin/String.length| R|/z|.R|kotlin/String.length| } } when () { !=(R|/y|, Null(null)) -> { R|/x|.R|kotlin/String.length| R|/y|.R|kotlin/String.length| R|/z|.R|kotlin/String.length| } } when () { !=(R|/z|, Null(null)) -> { R|/x|.R|kotlin/String.length| R|/y|.R|kotlin/String.length| R|/z|.R|kotlin/String.length| } } R|/y| = Null(null) when () { !=(R|/x|, Null(null)) -> { R|/x|.R|kotlin/String.length| R|/y|.R|kotlin/String.length#| R|/z|.R|kotlin/String.length| } } when () { !=(R|/y|, Null(null)) -> { R|/x|.R|kotlin/String.length#| R|/y|.R|kotlin/String.length| R|/z|.R|kotlin/String.length#| } } when () { !=(R|/z|, Null(null)) -> { R|/x|.R|kotlin/String.length| R|/y|.R|kotlin/String.length#| R|/z|.R|kotlin/String.length| } } } public final fun test_9(): R|kotlin/Unit| { lvar a: R|kotlin/String?| = Null(null) lval b: R|kotlin/String?| when () { !=(R|/a|, Null(null)) -> { R|/b| = R|/a| } else -> { R|/b| = R|/a| } } R|/b|.R|kotlin/String.length#| when () { !=(R|/a|, Null(null)) -> { R|/b|.R|kotlin/String.length| } } }