FILE: kotlin.kt
    private final class Outer : R|kotlin/Any| {
        public constructor(): R|Outer| {
            super<R|kotlin/Any|>()
        }

        public open class Base1 : R|kotlin/Any| {
            public constructor(): R|Outer.Base1| {
                super<R|kotlin/Any|>()
            }

            public final fun foo(): R|kotlin/Unit| {
            }

        }

    }
    private open class Base2 : R|kotlin/Any| {
        public constructor(): R|Base2| {
            super<R|kotlin/Any|>()
        }

        public final fun foo(): R|kotlin/Unit| {
        }

    }
    private abstract interface BaseInterface : R|kotlin/Any| {
        public open fun foo(): R|kotlin/Int| {
            ^foo Int(0)
        }

    }
    public open class Base3 : R|BaseInterface| {
        public constructor(): R|Base3| {
            super<R|kotlin/Any|>()
        }

    }
    public final fun test1(): R|kotlin/Unit| {
        R|/J1.J1|().R|/Outer.Base1.foo|()
    }
    public final fun test2(a: R|J1|): R|kotlin/Unit| {
        R|<local>/a|.R|/Outer.Base1.foo|()
        R|/J2.J2|().R|/Base2.foo|()
    }
    public final fun test3(): R|kotlin/Unit| {
        R|/J3.J3|().R|/BaseInterface.foo|()
    }
