FILE: classWithCompanionObject.kt
    @R|kotlinx/serialization/Serializable|() public final class SomeClass : R|kotlin/Any| {
        public constructor(i: R|kotlin/Int|): R|SomeClass| {
            super<R|kotlin/Any|>()
        }

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

        public final companion object Companion : R|kotlin/Any| {
            public final fun serializer(): R|kotlinx/serialization/KSerializer<SomeClass>|

            private constructor(): R|SomeClass.Companion| {
                super<R|kotlin/Any|>()
            }

        }

        @R|kotlin/Deprecated|(message = String(This synthesized declaration should not be used directly), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.HIDDEN|) public final object $serializer : R|kotlinx/serialization/internal/GeneratedSerializer<SomeClass>| {
            public final override fun serialize(encoder: R|kotlinx/serialization/encoding/Encoder|, value: R|SomeClass|): R|kotlin/Unit|

            public final override fun deserialize(decoder: R|kotlinx/serialization/encoding/Decoder|): R|SomeClass|

            public final val descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor|
                public get(): R|kotlinx/serialization/descriptors/SerialDescriptor|

            public final override fun childSerializers(): R|kotlin/Array<kotlinx/serialization/KSerializer<*>>|

            private constructor(): R|SomeClass.$serializer| {
                super<R|kotlin/Any|>()
            }

        }

    }
    public final fun box(): R|kotlin/String| {
        lval targetString: R|kotlin/String| = String({"i":42})
        lval serializer: R|kotlinx/serialization/KSerializer<SomeClass>| = Q|SomeClass.Companion|.R|/SomeClass.Companion.serializer|()
        lval descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor| = R|<local>/serializer|.R|SubstitutionOverride<kotlinx/serialization/KSerializer.descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor|>|
        when () {
            !=(R|<local>/descriptor|.R|kotlin/Any.toString|(), String(SomeClass(i: kotlin.Int))) ->  {
                ^box <strcat>(String(Incorrect SerialDescriptor.toString(): ), R|<local>/descriptor|)
            }
        }

        lval instance: R|SomeClass| = R|/SomeClass.SomeClass|(Int(42))
        lval string: R|kotlin/String| = Q|kotlinx/serialization/json/Json|.R|kotlinx/serialization/json/Json.encodeToString|<R|SomeClass|>(R|<local>/serializer|, R|<local>/instance|)
        when () {
            !=(R|<local>/string|, R|<local>/targetString|) ->  {
                ^box <strcat>(String(Incorrect serialization result: expected ), R|<local>/targetString|, String(, got ), R|<local>/string|)
            }
        }

        lval instance2: R|SomeClass| = Q|kotlinx/serialization/json/Json|.R|kotlinx/serialization/json/Json.decodeFromString|<R|SomeClass|>(R|<local>/serializer|, R|<local>/string|)
        when () {
            !=(R|<local>/instance2|.R|/SomeClass.i|, R|<local>/instance|.R|/SomeClass.i|) ->  {
                ^box <strcat>(String(Incorrect deserialization result: expected ), R|<local>/instance|.R|/SomeClass.i|, String(, got ), R|<local>/instance2|.R|/SomeClass.i|)
            }
        }

        ^box String(OK)
    }
