Module: lib
FILE: lib.kt
    public final object A : R|kotlin/Any| {
        private constructor(): R|A| {
            super<R|kotlin/Any|>()
        }

        @R|kotlin/jvm/JvmStatic|() public final val somePropertyFromObject: R|kotlin/Int| = Int(0)
            public get(): R|kotlin/Int|

        @R|kotlin/jvm/JvmStatic|() public final fun someFunctionFromObject(str: R|kotlin/String|): R|kotlin/String| {
            ^someFunctionFromObject R|<local>/str|
        }

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

        public final companion object Companion : R|kotlin/Any| {
            private constructor(): R|B.Companion| {
                super<R|kotlin/Any|>()
            }

            @R|kotlin/jvm/JvmStatic|() public final val somePropertyFromCompanionObject: R|kotlin/Int| = Int(0)
                public get(): R|kotlin/Int|

            @R|kotlin/jvm/JvmStatic|() public final fun someFunctionFromCompanionObject(str: R|kotlin/String|): R|kotlin/String| {
                ^someFunctionFromCompanionObject R|<local>/str|
            }

        }

    }
Module: main
FILE: main.kt
    public final fun box(): R|kotlin/String| {
        lval somePropertyFromObjectName: R|kotlin/String| = Q|A|::R|/A.somePropertyFromObject|.R|SubstitutionOverride<kotlin/reflect/KProperty0.name: R|kotlin/String|>|
        lval someFunctionFromObjectName: R|kotlin/String| = Q|A|::R|/A.someFunctionFromObject|.R|SubstitutionOverride<kotlin/reflect/KFunction1.name: R|kotlin/String|>|
        lval somePropertyFromCompanionObjectName: R|kotlin/String| = Q|B.Companion|::R|/B.Companion.somePropertyFromCompanionObject|.R|SubstitutionOverride<kotlin/reflect/KProperty0.name: R|kotlin/String|>|
        lval someFunctionFromCompanionObjectName: R|kotlin/String| = Q|B.Companion|::R|/B.Companion.someFunctionFromCompanionObject|.R|SubstitutionOverride<kotlin/reflect/KFunction1.name: R|kotlin/String|>|
        when () {
            !=(R|<local>/somePropertyFromObjectName|, String(somePropertyFromObject)) ->  {
                ^box String(Fail 1)
            }
        }

        when () {
            !=(R|<local>/someFunctionFromObjectName|, String(someFunctionFromObject)) ->  {
                ^box String(Fail 2)
            }
        }

        when () {
            !=(R|<local>/somePropertyFromCompanionObjectName|, String(somePropertyFromCompanionObject)) ->  {
                ^box String(Fail 3)
            }
        }

        when () {
            !=(R|<local>/someFunctionFromCompanionObjectName|, String(someFunctionFromCompanionObject)) ->  {
                ^box String(Fail 4)
            }
        }

        ^box String(OK)
    }
