FILE: endlessLoops.kt public abstract interface A : R|kotlin/Any| { public abstract fun foo(): R|kotlin/Unit| } public final fun test_1(x: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { while(Boolean(true)) { (R|/x| as R|A|) when () { R|/b| -> { break@@@[Boolean(true)] } } } R|/x|.R|/A.foo|() } public final fun test_2(x: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { while(Boolean(true)) { when () { R|/b| -> { (R|/x| as R|A|) break@@@[Boolean(true)] } } } R|/x|.R|/A.foo|() } public final fun test_3(x: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { while(Boolean(true)) { (R|/x| as R|A|) when () { R|/b| -> { break@@@[Boolean(true)] } } when () { R|/b| -> { break@@@[Boolean(true)] } } } R|/x|.R|/A.foo|() } public final fun test_4(x: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { while(Boolean(true)) { when () { R|/b| -> { (R|/x| as R|A|) break@@@[Boolean(true)] } } break@@@[Boolean(true)] } R|/x|.#() } public final fun test_5(x: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { do { when () { R|/b| -> { (R|/x| as R|A|) break@@@[Boolean(true)] } } } while(Boolean(true)) R|/x|.R|/A.foo|() } public final fun test_6(x: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| { do { (R|/x| as R|A|) when () { R|/b| -> { break@@@[Boolean(true)] } } } while(Boolean(true)) R|/x|.R|/A.foo|() } public final fun test_7(x: R|kotlin/Any|): R|kotlin/Unit| { do { (R|/x| as R|A|) } while(Boolean(true)) R|/x|.R|/A.foo|() }