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

    }
    public abstract interface B : R|kotlin/Any| {
        public abstract fun foo(): R|kotlin/Int|

    }
    public final fun getAny(): R|kotlin/Any?| {
        ^getAny Null(null)
    }
    public final fun test_0(): R|kotlin/Unit| {
        lval a: R|kotlin/Any?| = R|/getAny|()
        lval b: R|kotlin/Any?| = R|/getAny|()
        (R|<local>/a| as R|A|)
        R|<local>/a|.R|/A.foo|()
        (R|<local>/b| as R|B|)
        R|<local>/b|.R|/B.foo|()
    }
    public final fun test_1(): R|kotlin/Unit| {
        lval a: R|kotlin/Any?| = R|/getAny|()
        lval b: R|kotlin/Any?| = R|/getAny|()
        when () {
            (R|<local>/a| is R|A|) && (R|<local>/b| is R|B|) ->  {
                R|<local>/a|.R|/A.foo|()
                R|<local>/b|.R|/B.foo|()
            }
        }

    }
    public final class D : R|kotlin/Any| {
        public constructor(any: R|kotlin/Any?|): R|D| {
            super<R|kotlin/Any|>()
        }

        public final val any: R|kotlin/Any?| = R|<local>/any|
            public get(): R|kotlin/Any?|

    }
    public final fun test_2(d1: R|D|, d2: R|D|): R|kotlin/Unit| {
        lval a: R|kotlin/Any| = when (lval <elvis>: R|kotlin/Any?| = R|<local>/d1|.R|/D.any|) {
            ==($subj$, Null(null)) ->  {
                ^test_2 Unit
            }
            else ->  {
                R|<local>/<elvis>|
            }
        }

        lval b: R|kotlin/Any| = when (lval <elvis>: R|kotlin/Any| = R|<local>/d2|.R|/D.any|) {
            ==($subj$, Null(null)) ->  {
                ^test_2 Unit
            }
            else ->  {
                R|<local>/<elvis>|
            }
        }

        (R|<local>/a| as R|A|)
        R|<local>/a|.R|/A.foo|()
        (R|<local>/b| as R|B|)
        R|<local>/b|.R|/B.foo|()
    }
    public final fun test_3(d1: R|D|, d2: R|D|): R|kotlin/Unit| {
        lval a: R|kotlin/Any?| = R|<local>/d1|?.R|/D.any|
        lval b: R|kotlin/Any?| = R|<local>/d2|?.R|/D.any|
        (R|<local>/a| as R|A|)
        R|<local>/a|.R|/A.foo|()
        (R|<local>/b| as R|B|)
        R|<local>/b|.<Ambiguity: foo, [/A.foo, /B.foo]>#()
    }
