FILE: abstractAndSealed.kt @R|kotlinx/serialization/Serializable|() public sealed interface I : R|kotlin/Any| { public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| private constructor(): R|I.Companion| { super() } } } @R|kotlinx/serialization/Serializable|() public sealed class X : R|I| { protected constructor(): R|X| { super() } private final var x: R|kotlin/String| = String(X) private get(): R|kotlin/String| private set(value: R|kotlin/String|): R|kotlin/Unit| public final fun exposeX(): R|kotlin/String| { ^exposeX this@R|/X|.R|/X.x| } public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| private constructor(): R|X.Companion| { super() } } } @R|kotlinx/serialization/Serializable|() public abstract class Y : R|X| { public constructor(): R|Y| { super() } private final var y: R|kotlin/String| = String(Y) private get(): R|kotlin/String| private set(value: R|kotlin/String|): R|kotlin/Unit| public final fun exposeY(): R|kotlin/String| { ^exposeY this@R|/Y|.R|/Y.y| } public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| private constructor(): R|Y.Companion| { super() } } } @R|kotlinx/serialization/Serializable|() public final class Bottom : R|Y| { public constructor(): R|Bottom| { super() } public final companion object Companion : R|kotlin/Any| { public final fun serializer(): R|kotlinx/serialization/KSerializer| private constructor(): R|Bottom.Companion| { super() } } @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| { public final override fun serialize(encoder: R|kotlinx/serialization/encoding/Encoder|, value: R|Bottom|): R|kotlin/Unit| public final override fun deserialize(decoder: R|kotlinx/serialization/encoding/Decoder|): R|Bottom| public final val descriptor: R|kotlinx/serialization/descriptors/SerialDescriptor| public get(): R|kotlinx/serialization/descriptors/SerialDescriptor| public final override fun childSerializers(): R|kotlin/Array>| private constructor(): R|Bottom.$serializer| { super() } } } public final fun testData(results: R|kotlin/String|): R|kotlin/String| { when () { !=(R|/results|, String(OK)) -> { ^testData R|/results| } } lval serial: R|kotlinx/serialization/KSerializer| = Q|Bottom|.R|/Bottom.Companion.serializer|() lval j: R|kotlinx/serialization/json/Json| = R|kotlinx/serialization/json/Json|( = Json@fun R|kotlinx/serialization/json/JsonBuilder|.(): R|kotlin/Unit| { this@R|special/anonymous|.R|kotlinx/serialization/json/JsonBuilder.encodeDefaults| = Boolean(true) } ) lval s: R|kotlin/String| = R|/j|.R|kotlinx/serialization/json/Json.encodeToString|(R|/serial|, R|/Bottom.Bottom|()) when () { !=(R|/s|, String({"x":"X","y":"Y"})) -> { ^testData (String(Incorrect encoding: ), R|/s|) } } lval decoded: R|Bottom| = R|/j|.R|kotlinx/serialization/json/Json.decodeFromString|(R|/serial|, String({"x":"1","y":"2"})) when () { !=(R|/decoded|.R|/X.exposeX|(), String(1)) -> { ^testData String(Incorrect X) } } when () { !=(R|/decoded|.R|/Y.exposeY|(), String(2)) -> { ^testData String(Incorrect Y) } } ^testData String(OK) } @R|kotlin/OptIn|(markerClass = vararg((Q|kotlinx/serialization/ExperimentalSerializationApi|))) public final fun testKinds(): R|kotlin/String| { when () { !=(Q|I|.R|/I.Companion.serializer|().R|SubstitutionOverride|.R|kotlinx/serialization/descriptors/SerialDescriptor.kind|, Q|kotlinx/serialization/descriptors/PolymorphicKind.SEALED|) -> { ^testKinds String(Not sealed: I) } } when () { !=(Q|X|.R|/X.Companion.serializer|().R|SubstitutionOverride|.R|kotlinx/serialization/descriptors/SerialDescriptor.kind|, Q|kotlinx/serialization/descriptors/PolymorphicKind.SEALED|) -> { ^testKinds String(Not sealed: X) } } when () { !=(Q|Y|.R|/Y.Companion.serializer|().R|SubstitutionOverride|.R|kotlinx/serialization/descriptors/SerialDescriptor.kind|, Q|kotlinx/serialization/descriptors/PolymorphicKind.OPEN|) -> { ^testKinds String(Not polymorphic: Y) } } lval serial: R|kotlinx/serialization/KSerializer| = Q|Bottom|.R|/Bottom.Companion.serializer|() when () { !=(R|/serial|.R|SubstitutionOverride|.R|kotlinx/serialization/descriptors/SerialDescriptor.kind|, Q|kotlinx/serialization/descriptors/StructureKind.CLASS|) -> { ^testKinds String(Not class: Bottom) } } ^testKinds String(OK) } public final fun box(): R|kotlin/String| { ^box R|/testData|(R|/testKinds|()) }