FILE: selfReferenceToCompanionObject.kt
    public abstract class Base : R|kotlin/Any| {
        public constructor(fn: R|() -> kotlin/String|): R|Base| {
            super<R|kotlin/Any|>()
        }

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

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

        public final companion object Companion : R|Base| {
            private constructor(): R|Host.Companion| {
                super<R|Base|>(R|kotlin/run|<R|() -> kotlin/String|>(<L> = run@fun <anonymous>(): R|() -> kotlin/String| <inline=Inline, kind=EXACTLY_ONCE>  {
                    ^ run@fun <anonymous>(): R|kotlin/String| <inline=Unknown>  {
                        ^ Q|Host|.R|/Host.Companion.ok|()
                    }

                }
                ))
            }

            public final fun ok(): R|kotlin/String| {
                ^ok String(OK)
            }

        }

    }
    public final enum class Test : R|kotlin/Enum<Test>| {
        private constructor(x: R|kotlin/String|, closure1: R|() -> kotlin/String|): R|Test| {
            super<R|kotlin/Enum<Test>|>()
        }

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

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

        public final static enum entry FOO: R|Test| = object : R|Test| {
            private constructor(): R|<anonymous>| {
                super<R|Test|>(String(O), this@R|kotlin/Enum.Companion|.R|kotlin/run|<R|kotlin/Enum.Companion|, R|() -> kotlin/String|>(<L> = run@fun R|kotlin/Enum.Companion|.<anonymous>(): R|() -> kotlin/String| <inline=Inline, kind=EXACTLY_ONCE>  {
                    ^ run@fun <anonymous>(): R|kotlin/String| <inline=Unknown>  {
                        ^ R|/Test.FOO|.R|/Test.x|
                    }

                }
                ))
            }

            public final override val y: R|kotlin/String| = String(K)
                public get(): R|kotlin/String|

            public final val closure2: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| <inline=Unknown>  {
                ^ this@R|/<anonymous>|.R|/<anonymous>.y|
            }

                public get(): R|() -> kotlin/String|

            public final override val z: R|kotlin/String| = this@R|/<anonymous>|.R|/<anonymous>.closure2|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
                public get(): R|kotlin/String|

        }

        public abstract val y: R|kotlin/String|
            public get(): R|kotlin/String|

        public abstract val z: R|kotlin/String|
            public get(): R|kotlin/String|

        public final static fun values(): R|kotlin/Array<Test>| {
        }

        public final static fun valueOf(value: R|kotlin/String|): R|Test| {
        }

    }
    public final fun box(): R|kotlin/String| {
        ^box Q|Host.Companion|.R|/Base.fn|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
    }
