FILE: kt37327.kt
    public abstract interface Q : R|kotlin/Any| {
    }
    public sealed class A : R|Q| {
        protected constructor(): R|A| {
            super<R|kotlin/Any|>()
        }

    }
    public final class B : R|A| {
        public constructor(x: R|kotlin/Int|): R|B| {
            super<R|A|>()
        }

        public final val x: R|kotlin/Int| = R|<local>/x|
            public get(): R|kotlin/Int|

    }
    public final fun R|Q|.foo(): R|kotlin/Unit| {
        when () {
            (this@R|/foo| !is R|A|) ->  {
                ^foo Unit
            }
        }

        when (lval <when-subject>: R|Q| = this@R|/foo|) {
            ($subj$ is R|B|) ->  {
                this@R|/foo|.R|/B.x|
            }
        }

    }
