FILE: smartcastInByClause.kt
    public final class A : R|kotlin/Any| {
        public constructor(path: R|kotlin/String?|, index: R|kotlin/Int|): R|A| {
            super<R|kotlin/Any|>()
        }

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

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

    }
    public abstract interface Base : R|kotlin/Any| {
    }
    public final class Derived : R|Base| {
        public constructor(index: R|kotlin/Int|): R|Derived| {
            super<R|kotlin/Any|>()
        }

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

    }
    public final fun test(a: R|A?|): R|Base?| {
        lval path: R|kotlin/String| = R|<local>/a|?.{ $subj$.R|/A.path| } ?: ^test Null(null)
        R|/takeInt|(R|<local>/a|.R|/A.index|)
        ^test object : R|Base| {
            private constructor(): R|<anonymous>| {
                super<R|kotlin/Any|>()
            }

            local final field <$$delegate_0>: R|Base| = R|/Derived.Derived|(R|<local>/a|.R|/A.index|)

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

            public final fun foo(): R|kotlin/Unit| {
                R|/takeInt|(R|<local>/a|.R|/A.index|)
            }

        }

    }
    public final fun takeInt(x: R|kotlin/Int|): R|kotlin/Unit| {
    }
