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

        public abstract val b: R|kotlin/Boolean|
            public get(): R|kotlin/Boolean|

    }
    public final fun test_1(x: R|A?|): R|kotlin/Unit| {
        when () {
            when (lval <elvis>: R|kotlin/Boolean?| = R|<local>/x|?.{ $subj$.R|/A.b| }) {
                ==($subj$, Null(null)) ->  {
                    ^test_1 Unit
                }
                else ->  {
                    R|<local>/<elvis>|
                }
            }
             ->  {
                R|<local>/x|.R|/A.foo|()
            }
        }

    }
    public final fun test2(a: R|kotlin/Any?|, b: R|kotlin/Any?|): R|kotlin/String| {
        when () {
            (R|<local>/b| !is R|kotlin/String|) ->  {
                ^test2 String()
            }
        }

        when () {
            (R|<local>/a| !is R|kotlin/String?|) ->  {
                ^test2 String()
            }
        }

        ^test2 when (lval <elvis>: R|kotlin/String?| = R|<local>/a|) {
            ==($subj$, Null(null)) ->  {
                R|<local>/b|
            }
            else ->  {
                R|<local>/<elvis>|
            }
        }

    }
