FILE: bangbang.kt
    public abstract interface A : R|kotlin/Any| {
        public abstract fun foo(): R|kotlin/Boolean|

    }
    public final fun test_0(a: R|A?|): R|kotlin/Unit| {
        when (lval <bangbang>: R|A?| = R|<local>/a|) {
            ==($subj$, Null(null)) ->  {
                throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
            }
            else ->  {
                R|<local>/<bangbang>|
            }
        }
        .R|/A.foo|()
        R|<local>/a|.R|/A.foo|()
    }
    public final fun test_1(a: R|A?|): R|kotlin/Unit| {
        when () {
            when (lval <bangbang>: R|A?| = R|<local>/a|) {
                ==($subj$, Null(null)) ->  {
                    throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
                }
                else ->  {
                    R|<local>/<bangbang>|
                }
            }
            .R|/A.foo|() ->  {
                R|<local>/a|.R|/A.foo|()
            }
        }

        R|<local>/a|.R|/A.foo|()
    }
    public final fun test_2(a: R|A?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
        when () {
            when (lval <bangbang>: R|A?| = R|<local>/a|) {
                ==($subj$, Null(null)) ->  {
                    throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
                }
                else ->  {
                    R|<local>/<bangbang>|
                }
            }
            .R|/A.foo|() && R|<local>/b| ->  {
                R|<local>/a|.R|/A.foo|()
            }
        }

        R|<local>/a|.R|/A.foo|()
    }
    public final fun test_3(a: R|A?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
        when () {
            R|<local>/b| && when (lval <bangbang>: R|A?| = R|<local>/a|) {
                ==($subj$, Null(null)) ->  {
                    throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
                }
                else ->  {
                    R|<local>/<bangbang>|
                }
            }
            .R|/A.foo|() ->  {
                R|<local>/a|.R|/A.foo|()
            }
        }

        R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
    }
    public final fun test_4(a: R|A?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
        when () {
            when (lval <bangbang>: R|A?| = R|<local>/a|) {
                ==($subj$, Null(null)) ->  {
                    throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
                }
                else ->  {
                    R|<local>/<bangbang>|
                }
            }
            .R|/A.foo|() || R|<local>/b| ->  {
                R|<local>/a|.R|/A.foo|()
            }
        }

        R|<local>/a|.R|/A.foo|()
    }
    public final fun test_5(a: R|A?|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
        when () {
            R|<local>/b| || when (lval <bangbang>: R|A?| = R|<local>/a|) {
                ==($subj$, Null(null)) ->  {
                    throw R|kotlin/KotlinNullPointerException.KotlinNullPointerException|()
                }
                else ->  {
                    R|<local>/<bangbang>|
                }
            }
            .R|/A.foo|() ->  {
                R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
            }
        }

        R|<local>/a|.<Inapplicable(WRONG_RECEIVER): [/A.foo]>#()
    }
