Deprecation and binary compatibility (#861)

* Deprecation cycle
* Remove declarations that were deprecated and don't have any real use or migration
* Level.WARNING -> Level.ERROR level where possible
* Introduce binary compatibility validator to keep track of the API
diff --git a/build.gradle b/build.gradle
index 6c7dce5..ed4b197 100644
--- a/build.gradle
+++ b/build.gradle
@@ -71,6 +71,7 @@
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
         classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
         classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
+        classpath "org.jetbrains.kotlinx:binary-compatibility-validator:$validator_version"
 
         classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8'
 
@@ -83,7 +84,11 @@
 
 // To make it visible for compilerVersion.gradle
 ext.compilerVersion = org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION
+apply plugin: 'binary-compatibility-validator'
 
+apiValidation {
+    ignoredProjects += ["benchmark", "kotlinx-serialization"]
+}
 
 allprojects {
     group 'org.jetbrains.kotlinx'
diff --git a/formats/cbor/api/kotlinx-serialization-cbor.api b/formats/cbor/api/kotlinx-serialization-cbor.api
new file mode 100644
index 0000000..c086ba5
--- /dev/null
+++ b/formats/cbor/api/kotlinx-serialization-cbor.api
@@ -0,0 +1,21 @@
+public final class kotlinx/serialization/cbor/Cbor : kotlinx/serialization/BinaryFormat {
+	public static final field Default Lkotlinx/serialization/cbor/Cbor$Default;
+	public fun <init> ()V
+	public fun <init> (ZLkotlinx/serialization/modules/SerialModule;)V
+	public synthetic fun <init> (ZLkotlinx/serialization/modules/SerialModule;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public fun dump (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)[B
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun getEncodeDefaults ()Z
+	public fun load (Lkotlinx/serialization/DeserializationStrategy;[B)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/cbor/Cbor$Default : kotlinx/serialization/BinaryFormat {
+	public fun dump (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)[B
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public fun load (Lkotlinx/serialization/DeserializationStrategy;[B)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/cbor/CborDecodingException : kotlinx/serialization/SerializationException {
+	public fun <init> (Ljava/lang/String;I)V
+}
+
diff --git a/formats/config/api/kotlinx-serialization-runtime-configparser.api b/formats/config/api/kotlinx-serialization-runtime-configparser.api
new file mode 100644
index 0000000..16a1f9c
--- /dev/null
+++ b/formats/config/api/kotlinx-serialization-runtime-configparser.api
@@ -0,0 +1,26 @@
+public final class kotlinx/serialization/config/ConfigParser : kotlinx/serialization/SerialFormat {
+	public static final field Companion Lkotlinx/serialization/config/ConfigParser$Companion;
+	public fun <init> ()V
+	public fun <init> (Lkotlinx/serialization/config/ConfigParserConfiguration;Lkotlinx/serialization/modules/SerialModule;)V
+	public synthetic fun <init> (Lkotlinx/serialization/config/ConfigParserConfiguration;Lkotlinx/serialization/modules/SerialModule;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun parse (Lcom/typesafe/config/Config;Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/config/ConfigParser$Companion {
+	public final fun parse (Lcom/typesafe/config/Config;Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/config/ConfigParserConfiguration {
+	public fun <init> ()V
+	public fun <init> (Z)V
+	public synthetic fun <init> (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public final fun component1 ()Z
+	public final fun copy (Z)Lkotlinx/serialization/config/ConfigParserConfiguration;
+	public static synthetic fun copy$default (Lkotlinx/serialization/config/ConfigParserConfiguration;ZILjava/lang/Object;)Lkotlinx/serialization/config/ConfigParserConfiguration;
+	public fun equals (Ljava/lang/Object;)Z
+	public final fun getUseConfigNamingConvention ()Z
+	public fun hashCode ()I
+	public fun toString ()Ljava/lang/String;
+}
+
diff --git a/formats/config/src/main/kotlin/org/jetbrains/kotlinx/serialization/config/Migrations.kt b/formats/config/src/main/kotlin/org/jetbrains/kotlinx/serialization/config/Migrations.kt
index 6c003a2..01ebf4e 100644
--- a/formats/config/src/main/kotlin/org/jetbrains/kotlinx/serialization/config/Migrations.kt
+++ b/formats/config/src/main/kotlin/org/jetbrains/kotlinx/serialization/config/Migrations.kt
@@ -8,8 +8,8 @@
 private const val pkg = "kotlinx.serialization.config"
 private const val message = "Moved to $pkg package"
 
-@Deprecated(message, ReplaceWith("ConfigParserConfiguration", pkg), level = DeprecationLevel.WARNING)
+@Deprecated(message, ReplaceWith("ConfigParserConfiguration", pkg), level = DeprecationLevel.ERROR)
 typealias ConfigParserConfiguration = kotlinx.serialization.config.ConfigParserConfiguration
 
-@Deprecated(message, ReplaceWith("ConfigParser", pkg), level = DeprecationLevel.WARNING)
+@Deprecated(message, ReplaceWith("ConfigParser", pkg), level = DeprecationLevel.ERROR)
 typealias ConfigParser = kotlinx.serialization.config.ConfigParser
diff --git a/formats/properties/api/kotlinx-serialization-properties.api b/formats/properties/api/kotlinx-serialization-properties.api
new file mode 100644
index 0000000..f96ca87
--- /dev/null
+++ b/formats/properties/api/kotlinx-serialization-properties.api
@@ -0,0 +1,20 @@
+public final class kotlinx/serialization/Properties : kotlinx/serialization/SerialFormat {
+	public static final field Default Lkotlinx/serialization/Properties$Default;
+	public fun <init> ()V
+	public fun <init> (Lkotlinx/serialization/modules/SerialModule;)V
+	public synthetic fun <init> (Lkotlinx/serialization/modules/SerialModule;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun load (Lkotlinx/serialization/DeserializationStrategy;Ljava/util/Map;)Ljava/lang/Object;
+	public final fun loadNullable (Lkotlinx/serialization/DeserializationStrategy;Ljava/util/Map;)Ljava/lang/Object;
+	public final fun store (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/util/Map;
+	public final fun storeNullable (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/util/Map;
+}
+
+public final class kotlinx/serialization/Properties$Default : kotlinx/serialization/SerialFormat {
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun load (Lkotlinx/serialization/DeserializationStrategy;Ljava/util/Map;)Ljava/lang/Object;
+	public final fun loadNullable (Lkotlinx/serialization/DeserializationStrategy;Ljava/util/Map;)Ljava/lang/Object;
+	public final fun store (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/util/Map;
+	public final fun storeNullable (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/util/Map;
+}
+
diff --git a/formats/protobuf/api/kotlinx-serialization-protobuf.api b/formats/protobuf/api/kotlinx-serialization-protobuf.api
new file mode 100644
index 0000000..9b72dc9
--- /dev/null
+++ b/formats/protobuf/api/kotlinx-serialization-protobuf.api
@@ -0,0 +1,47 @@
+public final class kotlinx/serialization/protobuf/ProtoBuf : kotlinx/serialization/BinaryFormat {
+	public static final field Default Lkotlinx/serialization/protobuf/ProtoBuf$Default;
+	public fun <init> ()V
+	public fun <init> (ZLkotlinx/serialization/modules/SerialModule;)V
+	public synthetic fun <init> (ZLkotlinx/serialization/modules/SerialModule;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public fun dump (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)[B
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun getEncodeDefaults ()Z
+	public fun load (Lkotlinx/serialization/DeserializationStrategy;[B)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/protobuf/ProtoBuf$Default : kotlinx/serialization/BinaryFormat {
+	public fun dump (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)[B
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public fun load (Lkotlinx/serialization/DeserializationStrategy;[B)Ljava/lang/Object;
+}
+
+public abstract interface annotation class kotlinx/serialization/protobuf/ProtoId : java/lang/annotation/Annotation {
+	public abstract fun id ()I
+}
+
+public final class kotlinx/serialization/protobuf/ProtoId$Impl : kotlinx/serialization/protobuf/ProtoId {
+	public fun <init> (I)V
+	public final fun id ()I
+}
+
+public final class kotlinx/serialization/protobuf/ProtoNumberType : java/lang/Enum {
+	public static final field DEFAULT Lkotlinx/serialization/protobuf/ProtoNumberType;
+	public static final field FIXED Lkotlinx/serialization/protobuf/ProtoNumberType;
+	public static final field SIGNED Lkotlinx/serialization/protobuf/ProtoNumberType;
+	public static fun valueOf (Ljava/lang/String;)Lkotlinx/serialization/protobuf/ProtoNumberType;
+	public static fun values ()[Lkotlinx/serialization/protobuf/ProtoNumberType;
+}
+
+public abstract interface annotation class kotlinx/serialization/protobuf/ProtoType : java/lang/annotation/Annotation {
+	public abstract fun type ()Lkotlinx/serialization/protobuf/ProtoNumberType;
+}
+
+public final class kotlinx/serialization/protobuf/ProtoType$Impl : kotlinx/serialization/protobuf/ProtoType {
+	public fun <init> (Lkotlinx/serialization/protobuf/ProtoNumberType;)V
+	public final fun type ()Lkotlinx/serialization/protobuf/ProtoNumberType;
+}
+
+public final class kotlinx/serialization/protobuf/ProtobufDecodingException : kotlinx/serialization/SerializationException {
+	public fun <init> (Ljava/lang/String;)V
+}
+
diff --git a/gradle.properties b/gradle.properties
index 8622d8b..cd844e8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -16,6 +16,7 @@
 jackson_version=2.10.0.pr1
 dokka_version=0.10.1
 native.deploy=false
+validator_version=0.2.3
 
 kotlin.mpp.enableGranularSourceSetsMetadata=true
 kotlin.mpp.enableCompatibilityMetadataVariant=true
diff --git a/integration-test/src/commonTest/kotlin/sample/JsonTest.kt b/integration-test/src/commonTest/kotlin/sample/JsonTest.kt
index f71a31e..10d67de 100644
--- a/integration-test/src/commonTest/kotlin/sample/JsonTest.kt
+++ b/integration-test/src/commonTest/kotlin/sample/JsonTest.kt
@@ -15,7 +15,15 @@
 
     private val originalData = Data("Hello")
     private val originalString = """{"s":"Hello","box":{"boxed":42},"boxes":{"desc":"boxes","boxes":[{"boxed":"foo"},{"boxed":"bar"}]},"m":{}}"""
-
+    private val nonstrict: Json = Json(
+        JsonConfiguration(
+            isLenient = true,
+            ignoreUnknownKeys = true,
+            serializeSpecialFloatingPointValues = true,
+            useArrayPolymorphism = true
+        )
+    )
+    
     @Test
     fun testStringForm() {
         val str = Json.stringify(Data.serializer(), originalData)
@@ -211,20 +219,20 @@
 
     @Test
     fun geoTest() {
-        val deser = Json.nonstrict.parse(GeoCoordinate.serializer(), """{"latitude":1.0,"longitude":1.0}""")
+        val deser = nonstrict.parse(GeoCoordinate.serializer(), """{"latitude":1.0,"longitude":1.0}""")
         assertEquals(GeoCoordinate(1.0, 1.0), deser)
     }
 
     @Test
     fun geoTest2() {
-        val deser = Json.nonstrict.parse(GeoCoordinate.serializer(), """{}""")
+        val deser = nonstrict.parse(GeoCoordinate.serializer(), """{}""")
         assertEquals(GeoCoordinate(0.0, 0.0), deser)
     }
 
     @Test
     fun geoTestValidation() {
         assertFailsWith<IllegalArgumentException> {
-            Json.nonstrict.parse(GeoCoordinate.serializer(), """{"latitude":-1.0,"longitude":1.0}""")
+            nonstrict.parse(GeoCoordinate.serializer(), """{"latitude":-1.0,"longitude":1.0}""")
         }
     }
 }
@@ -233,7 +241,7 @@
     expected: String,
     original: T,
     serializer: KSerializer<T>,
-    format: StringFormat = Json.plain,
+    format: StringFormat = Json,
     printResult: Boolean = false
 ) {
     val string = format.stringify(serializer, original)
diff --git a/runtime/api/kotlinx-serialization-runtime.api b/runtime/api/kotlinx-serialization-runtime.api
new file mode 100644
index 0000000..8a5fc00
--- /dev/null
+++ b/runtime/api/kotlinx-serialization-runtime.api
@@ -0,0 +1,1888 @@
+public final class kotlinx/io/ByteArrayInput : kotlinx/io/Input {
+	public fun <init> ([B)V
+	public fun getAvailableBytes ()I
+	public fun read ()I
+	public fun read ([BII)I
+	public fun readString (I)Ljava/lang/String;
+	public fun readVarint32 ()I
+	public fun readVarint64 (Z)J
+}
+
+public final class kotlinx/io/ByteArrayOutput : kotlinx/io/Output {
+	public fun <init> ()V
+	public fun encodeVarint32 (I)V
+	public fun encodeVarint64 (J)V
+	public final fun size ()I
+	public final fun toByteArray ()[B
+	public fun write (I)V
+	public fun write ([BII)V
+	public fun writeInt (I)V
+	public fun writeLong (J)V
+}
+
+public abstract class kotlinx/io/Input {
+	public fun <init> ()V
+	public abstract fun getAvailableBytes ()I
+	public abstract fun read ()I
+	public abstract fun read ([BII)I
+	public abstract fun readString (I)Ljava/lang/String;
+	public abstract fun readVarint32 ()I
+	public abstract fun readVarint64 (Z)J
+}
+
+public abstract class kotlinx/io/Output {
+	public fun <init> ()V
+	public abstract fun encodeVarint32 (I)V
+	public abstract fun encodeVarint64 (J)V
+	public abstract fun write (I)V
+	public final fun write ([B)V
+	public abstract fun write ([BII)V
+	public abstract fun writeInt (I)V
+	public abstract fun writeLong (J)V
+}
+
+public abstract class kotlinx/serialization/AbstractSerialFormat : kotlinx/serialization/SerialFormat {
+	public fun <init> (Lkotlinx/serialization/modules/SerialModule;)V
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+}
+
+public abstract interface class kotlinx/serialization/BinaryFormat : kotlinx/serialization/SerialFormat {
+	public abstract fun dump (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)[B
+	public abstract fun load (Lkotlinx/serialization/DeserializationStrategy;[B)Ljava/lang/Object;
+}
+
+public abstract interface class kotlinx/serialization/CompositeDecoder {
+	public static final field Companion Lkotlinx/serialization/CompositeDecoder$Companion;
+	public static final field READ_ALL I
+	public static final field READ_DONE I
+	public static final field UNKNOWN_NAME I
+	public abstract fun decodeBooleanElement (Lkotlinx/serialization/SerialDescriptor;I)Z
+	public abstract fun decodeByteElement (Lkotlinx/serialization/SerialDescriptor;I)B
+	public abstract fun decodeCharElement (Lkotlinx/serialization/SerialDescriptor;I)C
+	public abstract fun decodeCollectionSize (Lkotlinx/serialization/SerialDescriptor;)I
+	public abstract fun decodeDoubleElement (Lkotlinx/serialization/SerialDescriptor;I)D
+	public abstract fun decodeElementIndex (Lkotlinx/serialization/SerialDescriptor;)I
+	public abstract fun decodeFloatElement (Lkotlinx/serialization/SerialDescriptor;I)F
+	public abstract fun decodeIntElement (Lkotlinx/serialization/SerialDescriptor;I)I
+	public abstract fun decodeLongElement (Lkotlinx/serialization/SerialDescriptor;I)J
+	public abstract fun decodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public abstract fun decodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public abstract fun decodeSequentially ()Z
+	public abstract fun decodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public abstract fun decodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public abstract fun decodeShortElement (Lkotlinx/serialization/SerialDescriptor;I)S
+	public abstract fun decodeStringElement (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;
+	public abstract fun decodeUnitElement (Lkotlinx/serialization/SerialDescriptor;I)V
+	public abstract fun endStructure (Lkotlinx/serialization/SerialDescriptor;)V
+	public abstract fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public abstract fun getUpdateMode ()Lkotlinx/serialization/UpdateMode;
+	public abstract fun updateNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public abstract fun updateSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/CompositeDecoder$Companion {
+	public static final field READ_ALL I
+	public static final field READ_DONE I
+	public static final field UNKNOWN_NAME I
+}
+
+public final class kotlinx/serialization/CompositeDecoder$DefaultImpls {
+	public static fun decodeCollectionSize (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;)I
+	public static fun decodeNullableSerializableElement (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static fun decodeNullableSerializableElement (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static synthetic fun decodeNullableSerializableElement$default (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
+	public static fun decodeSequentially (Lkotlinx/serialization/CompositeDecoder;)Z
+	public static fun decodeSerializableElement (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static fun decodeSerializableElement (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static synthetic fun decodeSerializableElement$default (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
+	public static fun getUpdateMode (Lkotlinx/serialization/CompositeDecoder;)Lkotlinx/serialization/UpdateMode;
+	public static fun updateNullableSerializableElement (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun updateSerializableElement (Lkotlinx/serialization/CompositeDecoder;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public abstract interface class kotlinx/serialization/CompositeEncoder {
+	public abstract fun encodeBooleanElement (Lkotlinx/serialization/SerialDescriptor;IZ)V
+	public abstract fun encodeByteElement (Lkotlinx/serialization/SerialDescriptor;IB)V
+	public abstract fun encodeCharElement (Lkotlinx/serialization/SerialDescriptor;IC)V
+	public abstract fun encodeDoubleElement (Lkotlinx/serialization/SerialDescriptor;ID)V
+	public abstract fun encodeFloatElement (Lkotlinx/serialization/SerialDescriptor;IF)V
+	public abstract fun encodeIntElement (Lkotlinx/serialization/SerialDescriptor;II)V
+	public abstract fun encodeLongElement (Lkotlinx/serialization/SerialDescriptor;IJ)V
+	public abstract fun encodeNonSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/Object;)V
+	public abstract fun encodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public abstract fun encodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public abstract fun encodeShortElement (Lkotlinx/serialization/SerialDescriptor;IS)V
+	public abstract fun encodeStringElement (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/String;)V
+	public abstract fun encodeUnitElement (Lkotlinx/serialization/SerialDescriptor;I)V
+	public abstract fun endStructure (Lkotlinx/serialization/SerialDescriptor;)V
+	public abstract fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public abstract fun shouldEncodeElementDefault (Lkotlinx/serialization/SerialDescriptor;I)Z
+}
+
+public final class kotlinx/serialization/CompositeEncoder$DefaultImpls {
+	public static fun encodeNonSerializableElement (Lkotlinx/serialization/CompositeEncoder;Lkotlinx/serialization/SerialDescriptor;ILjava/lang/Object;)V
+	public static fun shouldEncodeElementDefault (Lkotlinx/serialization/CompositeEncoder;Lkotlinx/serialization/SerialDescriptor;I)Z
+}
+
+public final class kotlinx/serialization/ContextAwareKt {
+	public static final fun getCapturedKClass (Lkotlinx/serialization/SerialDescriptor;)Lkotlin/reflect/KClass;
+}
+
+public final class kotlinx/serialization/ContextSerializer : kotlinx/serialization/KSerializer {
+	public fun <init> (Lkotlin/reflect/KClass;)V
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public abstract interface annotation class kotlinx/serialization/ContextualSerialization : java/lang/annotation/Annotation {
+	public abstract fun forClasses ()[Ljava/lang/Class;
+}
+
+public abstract interface class kotlinx/serialization/Decoder {
+	public abstract fun beginStructure (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;
+	public abstract fun beginStructure (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;
+	public abstract fun decodeBoolean ()Z
+	public abstract fun decodeByte ()B
+	public abstract fun decodeChar ()C
+	public abstract fun decodeDouble ()D
+	public abstract fun decodeEnum (Lkotlinx/serialization/SerialDescriptor;)I
+	public abstract fun decodeFloat ()F
+	public abstract fun decodeInt ()I
+	public abstract fun decodeLong ()J
+	public abstract fun decodeNotNullMark ()Z
+	public abstract fun decodeNull ()Ljava/lang/Void;
+	public abstract fun decodeNullableSerializableValue (Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public abstract fun decodeSerializableValue (Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public abstract fun decodeShort ()S
+	public abstract fun decodeString ()Ljava/lang/String;
+	public abstract fun decodeUnit ()V
+	public abstract fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public abstract fun getUpdateMode ()Lkotlinx/serialization/UpdateMode;
+	public abstract fun updateNullableSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public abstract fun updateSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/Decoder$DefaultImpls {
+	public static fun beginStructure (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;
+	public static fun beginStructure (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;
+	public static fun decodeNullableSerializableValue (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static fun decodeSerializableValue (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static fun getUpdateMode (Lkotlinx/serialization/Decoder;)Lkotlinx/serialization/UpdateMode;
+	public static fun updateNullableSerializableValue (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun updateSerializableValue (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/DecodingKt {
+	public static final fun decode (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static final fun decodeStructure (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/SerialDescriptor;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+}
+
+public abstract interface class kotlinx/serialization/DeserializationStrategy {
+	public abstract fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public abstract fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public abstract fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public abstract interface class kotlinx/serialization/Encoder {
+	public abstract fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I)Lkotlinx/serialization/CompositeEncoder;
+	public abstract fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public abstract fun beginStructure (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;
+	public abstract fun beginStructure (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public abstract fun encodeBoolean (Z)V
+	public abstract fun encodeByte (B)V
+	public abstract fun encodeChar (C)V
+	public abstract fun encodeDouble (D)V
+	public abstract fun encodeEnum (Lkotlinx/serialization/SerialDescriptor;I)V
+	public abstract fun encodeFloat (F)V
+	public abstract fun encodeInt (I)V
+	public abstract fun encodeLong (J)V
+	public abstract fun encodeNotNullMark ()V
+	public abstract fun encodeNull ()V
+	public abstract fun encodeNullableSerializableValue (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public abstract fun encodeSerializableValue (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public abstract fun encodeShort (S)V
+	public abstract fun encodeString (Ljava/lang/String;)V
+	public abstract fun encodeUnit ()V
+	public abstract fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+}
+
+public final class kotlinx/serialization/Encoder$DefaultImpls {
+	public static fun beginCollection (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerialDescriptor;I)Lkotlinx/serialization/CompositeEncoder;
+	public static fun beginCollection (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerialDescriptor;I[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public static fun beginStructure (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;
+	public static fun beginStructure (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public static fun encodeNotNullMark (Lkotlinx/serialization/Encoder;)V
+	public static fun encodeNullableSerializableValue (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public static fun encodeSerializableValue (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/EncodingKt {
+	public static final fun encode (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public static final fun encodeStructure (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/SerialDescriptor;Lkotlin/jvm/functions/Function1;)V
+}
+
+public abstract interface annotation class kotlinx/serialization/ImplicitReflectionSerializer : java/lang/annotation/Annotation {
+}
+
+public abstract interface annotation class kotlinx/serialization/InternalSerializationApi : java/lang/annotation/Annotation {
+}
+
+public final class kotlinx/serialization/JvmResolvingKt {
+	public static final fun serializerByTypeToken (Ljava/lang/reflect/Type;)Lkotlinx/serialization/KSerializer;
+}
+
+public abstract interface class kotlinx/serialization/KSerializer : kotlinx/serialization/DeserializationStrategy, kotlinx/serialization/SerializationStrategy {
+	public abstract fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public abstract fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/KSerializer$DefaultImpls {
+	public static fun patch (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/Mapper {
+	public fun <init> ()V
+}
+
+public final class kotlinx/serialization/MigrationsKt {
+	public static final fun compiledSerializer (Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;
+	public static final fun getContextualOrDefault (Lkotlinx/serialization/modules/SerialModule;Ljava/lang/Object;)Lkotlinx/serialization/KSerializer;
+	public static final fun getContextualOrDefault (Lkotlinx/serialization/modules/SerialModule;Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;
+	public static final fun getList (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun getMap (Lkotlin/Pair;)Lkotlinx/serialization/KSerializer;
+	public static final fun getNullable (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun getPolymorphicClassDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public static final fun getSet (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun withName (Lkotlinx/serialization/SerialDescriptor;Ljava/lang/String;)Lkotlinx/serialization/SerialDescriptor;
+}
+
+public final class kotlinx/serialization/MissingFieldException : kotlinx/serialization/SerializationException {
+	public fun <init> (Ljava/lang/String;)V
+}
+
+public final class kotlinx/serialization/PlatformUtilsKt {
+	public static final fun serializer (Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializerOrNull (Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;
+}
+
+public abstract interface annotation class kotlinx/serialization/Polymorphic : java/lang/annotation/Annotation {
+}
+
+public abstract class kotlinx/serialization/PolymorphicKind : kotlinx/serialization/SerialKind {
+}
+
+public final class kotlinx/serialization/PolymorphicKind$OPEN : kotlinx/serialization/PolymorphicKind {
+	public static final field INSTANCE Lkotlinx/serialization/PolymorphicKind$OPEN;
+}
+
+public final class kotlinx/serialization/PolymorphicKind$SEALED : kotlinx/serialization/PolymorphicKind {
+	public static final field INSTANCE Lkotlinx/serialization/PolymorphicKind$SEALED;
+}
+
+public final class kotlinx/serialization/PolymorphicSerializer : kotlinx/serialization/internal/AbstractPolymorphicSerializer {
+	public fun <init> (Lkotlin/reflect/KClass;)V
+	public fun getBaseClass ()Lkotlin/reflect/KClass;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+}
+
+public final class kotlinx/serialization/PrimitiveDescriptorWithName : kotlinx/serialization/SerialDescriptor {
+	public fun <init> (Ljava/lang/String;Lkotlinx/serialization/SerialDescriptor;)V
+	public fun getAnnotations ()Ljava/util/List;
+	public fun getElementAnnotations (I)Ljava/util/List;
+	public fun getElementDescriptor (I)Lkotlinx/serialization/SerialDescriptor;
+	public fun getElementIndex (Ljava/lang/String;)I
+	public fun getElementName (I)Ljava/lang/String;
+	public fun getElementsCount ()I
+	public fun getKind ()Lkotlinx/serialization/SerialKind;
+	public fun getSerialName ()Ljava/lang/String;
+	public fun isElementOptional (I)Z
+	public fun isNullable ()Z
+}
+
+public abstract class kotlinx/serialization/PrimitiveKind : kotlinx/serialization/SerialKind {
+}
+
+public final class kotlinx/serialization/PrimitiveKind$BOOLEAN : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$BOOLEAN;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$BYTE : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$BYTE;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$CHAR : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$CHAR;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$DOUBLE : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$DOUBLE;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$FLOAT : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$FLOAT;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$INT : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$INT;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$LONG : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$LONG;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$SHORT : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$SHORT;
+}
+
+public final class kotlinx/serialization/PrimitiveKind$STRING : kotlinx/serialization/PrimitiveKind {
+	public static final field INSTANCE Lkotlinx/serialization/PrimitiveKind$STRING;
+}
+
+public abstract interface annotation class kotlinx/serialization/Required : java/lang/annotation/Annotation {
+}
+
+public final class kotlinx/serialization/SealedClassSerializer : kotlinx/serialization/internal/AbstractPolymorphicSerializer {
+	public fun <init> (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V
+	public fun findPolymorphicSerializer (Lkotlinx/serialization/CompositeDecoder;Ljava/lang/String;)Lkotlinx/serialization/DeserializationStrategy;
+	public fun findPolymorphicSerializer (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)Lkotlinx/serialization/SerializationStrategy;
+	public fun getBaseClass ()Lkotlin/reflect/KClass;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+}
+
+public abstract interface class kotlinx/serialization/SerialDescriptor {
+	public abstract fun getAnnotations ()Ljava/util/List;
+	public abstract fun getElementAnnotations (I)Ljava/util/List;
+	public abstract fun getElementDescriptor (I)Lkotlinx/serialization/SerialDescriptor;
+	public abstract fun getElementIndex (Ljava/lang/String;)I
+	public abstract fun getElementName (I)Ljava/lang/String;
+	public abstract fun getElementsCount ()I
+	public abstract fun getKind ()Lkotlinx/serialization/SerialKind;
+	public abstract fun getSerialName ()Ljava/lang/String;
+	public abstract fun isElementOptional (I)Z
+	public abstract fun isNullable ()Z
+}
+
+public final class kotlinx/serialization/SerialDescriptor$DefaultImpls {
+	public static fun getAnnotations (Lkotlinx/serialization/SerialDescriptor;)Ljava/util/List;
+	public static fun isNullable (Lkotlinx/serialization/SerialDescriptor;)Z
+}
+
+public final class kotlinx/serialization/SerialDescriptorBuilder {
+	public final fun element (Ljava/lang/String;Lkotlinx/serialization/SerialDescriptor;Ljava/util/List;Z)V
+	public static synthetic fun element$default (Lkotlinx/serialization/SerialDescriptorBuilder;Ljava/lang/String;Lkotlinx/serialization/SerialDescriptor;Ljava/util/List;ZILjava/lang/Object;)V
+	public final fun getAnnotations ()Ljava/util/List;
+	public final fun getSerialName ()Ljava/lang/String;
+	public final fun isNullable ()Z
+	public final fun listDescriptor (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/SerialDescriptor;
+	public final fun mapDescriptor (Lkotlinx/serialization/SerialDescriptor;Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/SerialDescriptor;
+	public final fun setAnnotations (Ljava/util/List;)V
+	public final fun setDescriptor (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/SerialDescriptor;
+	public final fun setNullable (Z)V
+}
+
+public final class kotlinx/serialization/SerialDescriptorBuilderKt {
+	public static final fun PrimitiveDescriptor (Ljava/lang/String;Lkotlinx/serialization/PrimitiveKind;)Lkotlinx/serialization/SerialDescriptor;
+	public static final fun SerialDescriptor (Ljava/lang/String;Lkotlinx/serialization/SerialKind;[Lkotlinx/serialization/SerialDescriptor;Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/SerialDescriptor;
+	public static synthetic fun SerialDescriptor$default (Ljava/lang/String;Lkotlinx/serialization/SerialKind;[Lkotlinx/serialization/SerialDescriptor;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/serialization/SerialDescriptor;
+	public static final fun getNullable (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/SerialDescriptor;
+}
+
+public final class kotlinx/serialization/SerialDescriptorKt {
+	public static final fun elementDescriptors (Lkotlinx/serialization/SerialDescriptor;)Ljava/util/List;
+	public static final fun elementNames (Lkotlinx/serialization/SerialDescriptor;)Ljava/util/List;
+	public static final fun getElementIndexOrThrow (Lkotlinx/serialization/SerialDescriptor;Ljava/lang/String;)I
+}
+
+public abstract interface class kotlinx/serialization/SerialFormat {
+	public abstract fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+}
+
+public final class kotlinx/serialization/SerialFormatKt {
+	public static final fun dumps (Lkotlinx/serialization/BinaryFormat;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/lang/String;
+	public static final fun loads (Lkotlinx/serialization/BinaryFormat;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/String;)Ljava/lang/Object;
+}
+
+public abstract interface annotation class kotlinx/serialization/SerialId : java/lang/annotation/Annotation {
+	public abstract fun id ()I
+}
+
+public final class kotlinx/serialization/SerialId$Impl : kotlinx/serialization/SerialId {
+	public fun <init> (I)V
+	public final fun id ()I
+}
+
+public abstract interface annotation class kotlinx/serialization/SerialInfo : java/lang/annotation/Annotation {
+}
+
+public abstract class kotlinx/serialization/SerialKind {
+	public fun toString ()Ljava/lang/String;
+}
+
+public abstract interface annotation class kotlinx/serialization/SerialName : java/lang/annotation/Annotation {
+	public abstract fun value ()Ljava/lang/String;
+}
+
+public abstract interface annotation class kotlinx/serialization/Serializable : java/lang/annotation/Annotation {
+	public abstract fun with ()Ljava/lang/Class;
+}
+
+public final class kotlinx/serialization/SerializationConstructorMarker {
+}
+
+public class kotlinx/serialization/SerializationException : java/lang/RuntimeException {
+	public fun <init> (Ljava/lang/String;Ljava/lang/Throwable;)V
+	public synthetic fun <init> (Ljava/lang/String;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+}
+
+public abstract interface class kotlinx/serialization/SerializationStrategy {
+	public abstract fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public abstract fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public abstract interface annotation class kotlinx/serialization/Serializer : java/lang/annotation/Annotation {
+	public abstract fun forClass ()Ljava/lang/Class;
+}
+
+public final class kotlinx/serialization/SerializerResolvingKt {
+	public static final fun serializer (Lkotlin/reflect/KType;)Lkotlinx/serialization/KSerializer;
+}
+
+public abstract interface class kotlinx/serialization/StringFormat : kotlinx/serialization/SerialFormat {
+	public abstract fun parse (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/String;)Ljava/lang/Object;
+	public abstract fun stringify (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/lang/String;
+}
+
+public abstract class kotlinx/serialization/StructureKind : kotlinx/serialization/SerialKind {
+}
+
+public final class kotlinx/serialization/StructureKind$CLASS : kotlinx/serialization/StructureKind {
+	public static final field INSTANCE Lkotlinx/serialization/StructureKind$CLASS;
+}
+
+public final class kotlinx/serialization/StructureKind$LIST : kotlinx/serialization/StructureKind {
+	public static final field INSTANCE Lkotlinx/serialization/StructureKind$LIST;
+}
+
+public final class kotlinx/serialization/StructureKind$MAP : kotlinx/serialization/StructureKind {
+	public static final field INSTANCE Lkotlinx/serialization/StructureKind$MAP;
+}
+
+public final class kotlinx/serialization/StructureKind$OBJECT : kotlinx/serialization/StructureKind {
+	public static final field INSTANCE Lkotlinx/serialization/StructureKind$OBJECT;
+}
+
+public abstract interface annotation class kotlinx/serialization/Transient : java/lang/annotation/Annotation {
+}
+
+public class kotlinx/serialization/TypeBase {
+	public fun <init> ()V
+}
+
+public abstract class kotlinx/serialization/UnionKind : kotlinx/serialization/SerialKind {
+}
+
+public final class kotlinx/serialization/UnionKind$CONTEXTUAL : kotlinx/serialization/UnionKind {
+	public static final field INSTANCE Lkotlinx/serialization/UnionKind$CONTEXTUAL;
+}
+
+public final class kotlinx/serialization/UnionKind$ENUM_KIND : kotlinx/serialization/UnionKind {
+	public static final field INSTANCE Lkotlinx/serialization/UnionKind$ENUM_KIND;
+}
+
+public final class kotlinx/serialization/UnknownFieldException : kotlinx/serialization/SerializationException {
+	public fun <init> (I)V
+}
+
+public abstract interface annotation class kotlinx/serialization/UnsafeSerializationApi : java/lang/annotation/Annotation {
+}
+
+public abstract interface annotation class kotlinx/serialization/UnstableDefault : java/lang/annotation/Annotation {
+}
+
+public final class kotlinx/serialization/UpdateMode : java/lang/Enum {
+	public static final field BANNED Lkotlinx/serialization/UpdateMode;
+	public static final field OVERWRITE Lkotlinx/serialization/UpdateMode;
+	public static final field UPDATE Lkotlinx/serialization/UpdateMode;
+	public static fun valueOf (Ljava/lang/String;)Lkotlinx/serialization/UpdateMode;
+	public static fun values ()[Lkotlinx/serialization/UpdateMode;
+}
+
+public final class kotlinx/serialization/UpdateNotSupportedException : kotlinx/serialization/SerializationException {
+	public fun <init> (Ljava/lang/String;)V
+}
+
+public abstract interface annotation class kotlinx/serialization/UseSerializers : java/lang/annotation/Annotation {
+	public abstract fun serializerClasses ()[Ljava/lang/Class;
+}
+
+public abstract class kotlinx/serialization/builtins/AbstractDecoder : kotlinx/serialization/CompositeDecoder, kotlinx/serialization/Decoder {
+	public fun <init> ()V
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;
+	public fun decodeBoolean ()Z
+	public final fun decodeBooleanElement (Lkotlinx/serialization/SerialDescriptor;I)Z
+	public fun decodeByte ()B
+	public final fun decodeByteElement (Lkotlinx/serialization/SerialDescriptor;I)B
+	public fun decodeChar ()C
+	public final fun decodeCharElement (Lkotlinx/serialization/SerialDescriptor;I)C
+	public fun decodeCollectionSize (Lkotlinx/serialization/SerialDescriptor;)I
+	public fun decodeDouble ()D
+	public final fun decodeDoubleElement (Lkotlinx/serialization/SerialDescriptor;I)D
+	public fun decodeEnum (Lkotlinx/serialization/SerialDescriptor;)I
+	public fun decodeFloat ()F
+	public final fun decodeFloatElement (Lkotlinx/serialization/SerialDescriptor;I)F
+	public fun decodeInt ()I
+	public final fun decodeIntElement (Lkotlinx/serialization/SerialDescriptor;I)I
+	public fun decodeLong ()J
+	public final fun decodeLongElement (Lkotlinx/serialization/SerialDescriptor;I)J
+	public fun decodeNotNullMark ()Z
+	public fun decodeNull ()Ljava/lang/Void;
+	public fun decodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public final fun decodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun decodeNullableSerializableValue (Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public fun decodeSequentially ()Z
+	public fun decodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public final fun decodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun decodeSerializableValue (Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public fun decodeSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static synthetic fun decodeSerializableValue$default (Lkotlinx/serialization/builtins/AbstractDecoder;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
+	public fun decodeShort ()S
+	public final fun decodeShortElement (Lkotlinx/serialization/SerialDescriptor;I)S
+	public fun decodeString ()Ljava/lang/String;
+	public final fun decodeStringElement (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;
+	public fun decodeUnit ()V
+	public final fun decodeUnitElement (Lkotlinx/serialization/SerialDescriptor;I)V
+	public fun decodeValue ()Ljava/lang/Object;
+	public fun endStructure (Lkotlinx/serialization/SerialDescriptor;)V
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public fun getUpdateMode ()Lkotlinx/serialization/UpdateMode;
+	public fun updateNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun updateNullableSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun updateSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun updateSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public abstract class kotlinx/serialization/builtins/AbstractEncoder : kotlinx/serialization/CompositeEncoder, kotlinx/serialization/Encoder {
+	public fun <init> ()V
+	public fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I)Lkotlinx/serialization/CompositeEncoder;
+	public fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public fun encodeBoolean (Z)V
+	public final fun encodeBooleanElement (Lkotlinx/serialization/SerialDescriptor;IZ)V
+	public fun encodeByte (B)V
+	public final fun encodeByteElement (Lkotlinx/serialization/SerialDescriptor;IB)V
+	public fun encodeChar (C)V
+	public final fun encodeCharElement (Lkotlinx/serialization/SerialDescriptor;IC)V
+	public fun encodeDouble (D)V
+	public final fun encodeDoubleElement (Lkotlinx/serialization/SerialDescriptor;ID)V
+	public fun encodeElement (Lkotlinx/serialization/SerialDescriptor;I)Z
+	public fun encodeEnum (Lkotlinx/serialization/SerialDescriptor;I)V
+	public fun encodeFloat (F)V
+	public final fun encodeFloatElement (Lkotlinx/serialization/SerialDescriptor;IF)V
+	public fun encodeInt (I)V
+	public final fun encodeIntElement (Lkotlinx/serialization/SerialDescriptor;II)V
+	public fun encodeLong (J)V
+	public final fun encodeLongElement (Lkotlinx/serialization/SerialDescriptor;IJ)V
+	public fun encodeNonSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/Object;)V
+	public fun encodeNotNullMark ()V
+	public fun encodeNull ()V
+	public final fun encodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public fun encodeNullableSerializableValue (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public final fun encodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public fun encodeSerializableValue (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public fun encodeShort (S)V
+	public final fun encodeShortElement (Lkotlinx/serialization/SerialDescriptor;IS)V
+	public fun encodeString (Ljava/lang/String;)V
+	public final fun encodeStringElement (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/String;)V
+	public fun encodeUnit ()V
+	public final fun encodeUnitElement (Lkotlinx/serialization/SerialDescriptor;I)V
+	public fun encodeValue (Ljava/lang/Object;)V
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public fun shouldEncodeElementDefault (Lkotlinx/serialization/SerialDescriptor;I)Z
+}
+
+public final class kotlinx/serialization/builtins/BuiltinSerializersKt {
+	public static final fun MapEntrySerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun PairSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun TripleSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun getNullable (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/builtins/CollectionSerializersKt {
+	public static final fun ListSerializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun MapSerializer (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun SetSerializer (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun getList (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun getSet (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/builtins/LongAsStringSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/builtins/LongAsStringSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Long;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;J)Ljava/lang/Long;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;J)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/builtins/PrimitiveSerializersKt {
+	public static final fun ArraySerializer (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun BooleanArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun ByteArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun CharArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun DoubleArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun FloatArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun IntArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun LongArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun ShortArraySerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun UnitSerializer ()Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/BooleanCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/ByteCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/CharCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/DoubleCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/FloatCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/IntCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/LongCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/ShortCompanionObject;)Lkotlinx/serialization/KSerializer;
+	public static final fun serializer (Lkotlin/jvm/internal/StringCompanionObject;)Lkotlinx/serialization/KSerializer;
+}
+
+public abstract class kotlinx/serialization/internal/AbstractCollectionSerializer : kotlinx/serialization/KSerializer {
+	protected abstract fun builder ()Ljava/lang/Object;
+	protected abstract fun builderSize (Ljava/lang/Object;)I
+	protected abstract fun checkCapacity (Ljava/lang/Object;I)V
+	protected abstract fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	protected abstract fun collectionSize (Ljava/lang/Object;)I
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public final fun merge (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	protected abstract fun readAll (Lkotlinx/serialization/CompositeDecoder;Ljava/lang/Object;II)V
+	protected abstract fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public static synthetic fun readElement$default (Lkotlinx/serialization/internal/AbstractCollectionSerializer;Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;ZILjava/lang/Object;)V
+	public abstract fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	protected abstract fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	protected abstract fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public abstract class kotlinx/serialization/internal/AbstractPolymorphicSerializer : kotlinx/serialization/KSerializer {
+	public final fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun findPolymorphicSerializer (Lkotlinx/serialization/CompositeDecoder;Ljava/lang/String;)Lkotlinx/serialization/DeserializationStrategy;
+	public fun findPolymorphicSerializer (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)Lkotlinx/serialization/SerializationStrategy;
+	public abstract fun getBaseClass ()Lkotlin/reflect/KClass;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public final fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/ArrayListSerializer : kotlinx/serialization/internal/ListLikeSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;)V
+	public synthetic fun builder ()Ljava/lang/Object;
+	public synthetic fun builderSize (Ljava/lang/Object;)I
+	public synthetic fun checkCapacity (Ljava/lang/Object;I)V
+	public synthetic fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun insert (Ljava/lang/Object;ILjava/lang/Object;)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/BooleanArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/BooleanArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/BooleanArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[Z)[Z
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/BooleanDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/BooleanDescriptor;
+}
+
+public final class kotlinx/serialization/internal/BooleanSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/BooleanSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Boolean;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Z)Ljava/lang/Boolean;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Z)V
+}
+
+public final class kotlinx/serialization/internal/ByteArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/ByteArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/ByteArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[B)[B
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/ByteDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/ByteDescriptor;
+}
+
+public final class kotlinx/serialization/internal/ByteSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/ByteSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Byte;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;B)Ljava/lang/Byte;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;B)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/CharArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/CharArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/CharArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[C)[C
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/CharDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/CharDescriptor;
+}
+
+public final class kotlinx/serialization/internal/CharSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/CharSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Character;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;C)Ljava/lang/Character;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;C)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/DoubleArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/DoubleArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/DoubleArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[D)[D
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/DoubleDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/DoubleDescriptor;
+}
+
+public final class kotlinx/serialization/internal/DoubleSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/DoubleSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Double;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;D)Ljava/lang/Double;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;D)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/EnumDescriptor : kotlinx/serialization/internal/SerialClassDescImpl {
+	public fun <init> (Ljava/lang/String;I)V
+	public fun equals (Ljava/lang/Object;)Z
+	public fun getElementDescriptor (I)Lkotlinx/serialization/SerialDescriptor;
+	public fun getKind ()Lkotlinx/serialization/SerialKind;
+	public fun hashCode ()I
+	public fun toString ()Ljava/lang/String;
+}
+
+public final class kotlinx/serialization/internal/EnumSerializer : kotlinx/serialization/KSerializer {
+	public fun <init> (Ljava/lang/String;[Ljava/lang/Enum;)V
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Enum;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Enum;)Ljava/lang/Enum;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Enum;)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/FloatArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/FloatArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/FloatArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[F)[F
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/FloatDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/FloatDescriptor;
+}
+
+public final class kotlinx/serialization/internal/FloatSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/FloatSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Float;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;F)Ljava/lang/Float;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;F)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public abstract interface class kotlinx/serialization/internal/GeneratedSerializer : kotlinx/serialization/KSerializer {
+	public abstract fun childSerializers ()[Lkotlinx/serialization/KSerializer;
+	public abstract fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/internal/GeneratedSerializer$DefaultImpls {
+	public static fun patch (Lkotlinx/serialization/internal/GeneratedSerializer;Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun typeParametersSerializers (Lkotlinx/serialization/internal/GeneratedSerializer;)[Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/internal/HashMapSerializer : kotlinx/serialization/internal/MapLikeSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V
+	public synthetic fun builder ()Ljava/lang/Object;
+	public synthetic fun builderSize (Ljava/lang/Object;)I
+	public synthetic fun checkCapacity (Ljava/lang/Object;I)V
+	public synthetic fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun insertKeyValuePair (Ljava/util/Map;ILjava/lang/Object;Ljava/lang/Object;)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/HashSetSerializer : kotlinx/serialization/internal/ListLikeSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;)V
+	public synthetic fun builder ()Ljava/lang/Object;
+	public synthetic fun builderSize (Ljava/lang/Object;)I
+	public synthetic fun checkCapacity (Ljava/lang/Object;I)V
+	public synthetic fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun insert (Ljava/lang/Object;ILjava/lang/Object;)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/HexConverter {
+	public static final field INSTANCE Lkotlinx/serialization/internal/HexConverter;
+	public final fun parseHexBinary (Ljava/lang/String;)[B
+	public final fun printHexBinary ([BZ)Ljava/lang/String;
+	public static synthetic fun printHexBinary$default (Lkotlinx/serialization/internal/HexConverter;[BZILjava/lang/Object;)Ljava/lang/String;
+	public final fun toHexString (I)Ljava/lang/String;
+}
+
+public final class kotlinx/serialization/internal/IntArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/IntArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/IntArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[I)[I
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/IntDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/IntDescriptor;
+}
+
+public final class kotlinx/serialization/internal/IntSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/IntSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Integer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;I)Ljava/lang/Integer;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;I)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public abstract class kotlinx/serialization/internal/KeyValueSerializer : kotlinx/serialization/KSerializer {
+	public synthetic fun <init> (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	protected abstract fun getKey (Ljava/lang/Object;)Ljava/lang/Object;
+	protected final fun getKeySerializer ()Lkotlinx/serialization/KSerializer;
+	protected abstract fun getValue (Ljava/lang/Object;)Ljava/lang/Object;
+	protected final fun getValueSerializer ()Lkotlinx/serialization/KSerializer;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	protected abstract fun toResult (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/LinkedHashMapSerializer : kotlinx/serialization/internal/MapLikeSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V
+	public synthetic fun builder ()Ljava/lang/Object;
+	public synthetic fun builderSize (Ljava/lang/Object;)I
+	public synthetic fun checkCapacity (Ljava/lang/Object;I)V
+	public synthetic fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun insertKeyValuePair (Ljava/util/Map;ILjava/lang/Object;Ljava/lang/Object;)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/LinkedHashSetSerializer : kotlinx/serialization/internal/ListLikeSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;)V
+	public synthetic fun builder ()Ljava/lang/Object;
+	public synthetic fun builderSize (Ljava/lang/Object;)I
+	public synthetic fun checkCapacity (Ljava/lang/Object;I)V
+	public synthetic fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun insert (Ljava/lang/Object;ILjava/lang/Object;)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public abstract class kotlinx/serialization/internal/ListLikeSerializer : kotlinx/serialization/internal/AbstractCollectionSerializer {
+	public synthetic fun <init> (Lkotlinx/serialization/KSerializer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public abstract fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	protected abstract fun insert (Ljava/lang/Object;ILjava/lang/Object;)V
+	protected final fun readAll (Lkotlinx/serialization/CompositeDecoder;Ljava/lang/Object;II)V
+	protected fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/LongArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/LongArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/LongArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[J)[J
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/LongDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/LongDescriptor;
+}
+
+public final class kotlinx/serialization/internal/LongSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/LongSerializer;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Long;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;J)Ljava/lang/Long;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;J)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/MapEntrySerializer : kotlinx/serialization/internal/KeyValueSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun getKey (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun getValue (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public abstract class kotlinx/serialization/internal/MapLikeSerializer : kotlinx/serialization/internal/AbstractCollectionSerializer {
+	public synthetic fun <init> (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public abstract fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public final fun getKeySerializer ()Lkotlinx/serialization/KSerializer;
+	public final fun getValueSerializer ()Lkotlinx/serialization/KSerializer;
+	protected abstract fun insertKeyValuePair (Ljava/util/Map;ILjava/lang/Object;Ljava/lang/Object;)V
+	public synthetic fun readAll (Lkotlinx/serialization/CompositeDecoder;Ljava/lang/Object;II)V
+	protected final fun readAll (Lkotlinx/serialization/CompositeDecoder;Ljava/util/Map;II)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	protected final fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/util/Map;Z)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public class kotlinx/serialization/internal/Migration : kotlinx/serialization/SerialDescriptor {
+	public fun <init> ()V
+	public fun getAnnotations ()Ljava/util/List;
+	public fun getElementAnnotations (I)Ljava/util/List;
+	public fun getElementDescriptor (I)Lkotlinx/serialization/SerialDescriptor;
+	public fun getElementIndex (Ljava/lang/String;)I
+	public fun getElementName (I)Ljava/lang/String;
+	public fun getElementsCount ()I
+	public fun getKind ()Lkotlinx/serialization/SerialKind;
+	public fun getSerialName ()Ljava/lang/String;
+	public fun isElementOptional (I)Z
+	public fun isNullable ()Z
+}
+
+public abstract class kotlinx/serialization/internal/NamedValueDecoder : kotlinx/serialization/internal/TaggedDecoder {
+	public fun <init> ()V
+	public fun <init> (Ljava/lang/String;)V
+	public synthetic fun <init> (Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	protected fun composeName (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+	protected fun elementName (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;
+	protected final fun getRootName ()Ljava/lang/String;
+	public synthetic fun getTag (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/Object;
+	protected final fun getTag (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;
+	protected final fun nested (Ljava/lang/String;)Ljava/lang/String;
+}
+
+public abstract class kotlinx/serialization/internal/NamedValueEncoder : kotlinx/serialization/internal/TaggedEncoder {
+	public fun <init> ()V
+	public fun <init> (Ljava/lang/String;)V
+	public synthetic fun <init> (Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	protected fun composeName (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+	protected fun elementName (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;
+	protected final fun getRootName ()Ljava/lang/String;
+	public synthetic fun getTag (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/Object;
+	protected final fun getTag (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;
+	protected final fun nested (Ljava/lang/String;)Ljava/lang/String;
+}
+
+public final class kotlinx/serialization/internal/NullableSerializer : kotlinx/serialization/KSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;)V
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun equals (Ljava/lang/Object;)Z
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun hashCode ()I
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/NullableSerializerKt {
+	public static final fun makeNullable (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/internal/ObjectSerializer : kotlinx/serialization/KSerializer {
+	public fun <init> (Ljava/lang/String;Ljava/lang/Object;)V
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/internal/PairSerializer : kotlinx/serialization/internal/KeyValueSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun getKey (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun getValue (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public class kotlinx/serialization/internal/PluginGeneratedSerialDescriptor : kotlinx/serialization/SerialDescriptor {
+	public fun <init> (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V
+	public synthetic fun <init> (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public final fun addElement (Ljava/lang/String;Z)V
+	public static synthetic fun addElement$default (Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;Ljava/lang/String;ZILjava/lang/Object;)V
+	public fun equals (Ljava/lang/Object;)Z
+	public fun getAnnotations ()Ljava/util/List;
+	public fun getElementAnnotations (I)Ljava/util/List;
+	public fun getElementDescriptor (I)Lkotlinx/serialization/SerialDescriptor;
+	public fun getElementIndex (Ljava/lang/String;)I
+	public fun getElementName (I)Ljava/lang/String;
+	public final fun getElementsCount ()I
+	public fun getKind ()Lkotlinx/serialization/SerialKind;
+	public fun getSerialName ()Ljava/lang/String;
+	public fun hashCode ()I
+	public fun isElementOptional (I)Z
+	public fun isNullable ()Z
+	public final fun pushAnnotation (Ljava/lang/annotation/Annotation;)V
+	public final fun pushClassAnnotation (Ljava/lang/annotation/Annotation;)V
+	public fun toString ()Ljava/lang/String;
+}
+
+public abstract class kotlinx/serialization/internal/PrimitiveArrayBuilder {
+}
+
+public abstract class kotlinx/serialization/internal/PrimitiveArraySerializer : kotlinx/serialization/internal/ListLikeSerializer {
+	public synthetic fun builder ()Ljava/lang/Object;
+	protected final fun builder ()Lkotlinx/serialization/internal/PrimitiveArrayBuilder;
+	public synthetic fun builderSize (Ljava/lang/Object;)I
+	protected final fun builderSize (Lkotlinx/serialization/internal/PrimitiveArrayBuilder;)I
+	public synthetic fun checkCapacity (Ljava/lang/Object;I)V
+	protected final fun checkCapacity (Lkotlinx/serialization/internal/PrimitiveArrayBuilder;I)V
+	protected final fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	public final fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	protected abstract fun empty ()Ljava/lang/Object;
+	public final fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun insert (Ljava/lang/Object;ILjava/lang/Object;)V
+	protected final fun insert (Lkotlinx/serialization/internal/PrimitiveArrayBuilder;ILjava/lang/Object;)V
+	protected abstract fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public final fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public synthetic fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+	protected final fun toResult (Lkotlinx/serialization/internal/PrimitiveArrayBuilder;)Ljava/lang/Object;
+	protected abstract fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/ReferenceArraySerializer : kotlinx/serialization/internal/ListLikeSerializer {
+	public fun <init> (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V
+	public synthetic fun builder ()Ljava/lang/Object;
+	public synthetic fun builderSize (Ljava/lang/Object;)I
+	public synthetic fun checkCapacity (Ljava/lang/Object;I)V
+	public synthetic fun collectionIterator (Ljava/lang/Object;)Ljava/util/Iterator;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun insert (Ljava/lang/Object;ILjava/lang/Object;)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun toResult (Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public class kotlinx/serialization/internal/SerialClassDescImpl : kotlinx/serialization/internal/PluginGeneratedSerialDescriptor {
+	public fun <init> (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V
+	public synthetic fun <init> (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+}
+
+public final class kotlinx/serialization/internal/SerializationConstructorMarker {
+}
+
+public abstract interface class kotlinx/serialization/internal/SerializerFactory {
+	public abstract fun serializer ([Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/internal/ShortArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder {
+	public synthetic fun build$kotlinx_serialization_runtime ()Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/internal/ShortArraySerializer : kotlinx/serialization/internal/PrimitiveArraySerializer, kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/ShortArraySerializer;
+	public synthetic fun collectionSize (Ljava/lang/Object;)I
+	public synthetic fun empty ()Ljava/lang/Object;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;[S)[S
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILjava/lang/Object;Z)V
+	public synthetic fun readElement (Lkotlinx/serialization/CompositeDecoder;ILkotlinx/serialization/internal/PrimitiveArrayBuilder;Z)V
+	public synthetic fun toBuilder (Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun writeContent (Lkotlinx/serialization/CompositeEncoder;Ljava/lang/Object;I)V
+}
+
+public final class kotlinx/serialization/internal/ShortDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/ShortDescriptor;
+}
+
+public final class kotlinx/serialization/internal/ShortSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/ShortSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Short;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;S)Ljava/lang/Short;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;S)V
+}
+
+public final class kotlinx/serialization/internal/StringDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/StringDescriptor;
+}
+
+public final class kotlinx/serialization/internal/StringSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/StringSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/String;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/String;)Ljava/lang/String;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/String;)V
+}
+
+public abstract class kotlinx/serialization/internal/TaggedDecoder : kotlinx/serialization/CompositeDecoder, kotlinx/serialization/Decoder {
+	public fun <init> ()V
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;
+	protected final fun copyTagsTo (Lkotlinx/serialization/internal/TaggedDecoder;)V
+	public final fun decodeBoolean ()Z
+	public final fun decodeBooleanElement (Lkotlinx/serialization/SerialDescriptor;I)Z
+	public final fun decodeByte ()B
+	public final fun decodeByteElement (Lkotlinx/serialization/SerialDescriptor;I)B
+	public final fun decodeChar ()C
+	public final fun decodeCharElement (Lkotlinx/serialization/SerialDescriptor;I)C
+	public fun decodeCollectionSize (Lkotlinx/serialization/SerialDescriptor;)I
+	public final fun decodeDouble ()D
+	public final fun decodeDoubleElement (Lkotlinx/serialization/SerialDescriptor;I)D
+	public final fun decodeEnum (Lkotlinx/serialization/SerialDescriptor;)I
+	public final fun decodeFloat ()F
+	public final fun decodeFloatElement (Lkotlinx/serialization/SerialDescriptor;I)F
+	public final fun decodeInt ()I
+	public final fun decodeIntElement (Lkotlinx/serialization/SerialDescriptor;I)I
+	public final fun decodeLong ()J
+	public final fun decodeLongElement (Lkotlinx/serialization/SerialDescriptor;I)J
+	public final fun decodeNotNullMark ()Z
+	public final fun decodeNull ()Ljava/lang/Void;
+	public fun decodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public final fun decodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun decodeNullableSerializableValue (Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public fun decodeSequentially ()Z
+	public fun decodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public final fun decodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun decodeSerializableValue (Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	protected fun decodeSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public final fun decodeShort ()S
+	public final fun decodeShortElement (Lkotlinx/serialization/SerialDescriptor;I)S
+	public final fun decodeString ()Ljava/lang/String;
+	public final fun decodeStringElement (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;
+	protected fun decodeTaggedBoolean (Ljava/lang/Object;)Z
+	protected fun decodeTaggedByte (Ljava/lang/Object;)B
+	protected fun decodeTaggedChar (Ljava/lang/Object;)C
+	protected fun decodeTaggedDouble (Ljava/lang/Object;)D
+	protected fun decodeTaggedEnum (Ljava/lang/Object;Lkotlinx/serialization/SerialDescriptor;)I
+	protected fun decodeTaggedFloat (Ljava/lang/Object;)F
+	protected fun decodeTaggedInt (Ljava/lang/Object;)I
+	protected fun decodeTaggedLong (Ljava/lang/Object;)J
+	protected fun decodeTaggedNotNullMark (Ljava/lang/Object;)Z
+	protected fun decodeTaggedNull (Ljava/lang/Object;)Ljava/lang/Void;
+	protected fun decodeTaggedShort (Ljava/lang/Object;)S
+	protected fun decodeTaggedString (Ljava/lang/Object;)Ljava/lang/String;
+	protected fun decodeTaggedUnit (Ljava/lang/Object;)V
+	protected fun decodeTaggedValue (Ljava/lang/Object;)Ljava/lang/Object;
+	public final fun decodeUnit ()V
+	public final fun decodeUnitElement (Lkotlinx/serialization/SerialDescriptor;I)V
+	public fun endStructure (Lkotlinx/serialization/SerialDescriptor;)V
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	protected final fun getCurrentTag ()Ljava/lang/Object;
+	protected final fun getCurrentTagOrNull ()Ljava/lang/Object;
+	protected abstract fun getTag (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/Object;
+	public fun getUpdateMode ()Lkotlinx/serialization/UpdateMode;
+	protected final fun popTag ()Ljava/lang/Object;
+	protected final fun pushTag (Ljava/lang/Object;)V
+	public fun updateNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun updateNullableSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun updateSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun updateSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public abstract class kotlinx/serialization/internal/TaggedEncoder : kotlinx/serialization/CompositeEncoder, kotlinx/serialization/Encoder {
+	public fun <init> ()V
+	public fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I)Lkotlinx/serialization/CompositeEncoder;
+	public fun beginCollection (Lkotlinx/serialization/SerialDescriptor;I[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;
+	public fun beginStructure (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public final fun encodeBoolean (Z)V
+	public final fun encodeBooleanElement (Lkotlinx/serialization/SerialDescriptor;IZ)V
+	public final fun encodeByte (B)V
+	public final fun encodeByteElement (Lkotlinx/serialization/SerialDescriptor;IB)V
+	public final fun encodeChar (C)V
+	public final fun encodeCharElement (Lkotlinx/serialization/SerialDescriptor;IC)V
+	public final fun encodeDouble (D)V
+	public final fun encodeDoubleElement (Lkotlinx/serialization/SerialDescriptor;ID)V
+	public final fun encodeEnum (Lkotlinx/serialization/SerialDescriptor;I)V
+	public final fun encodeFloat (F)V
+	public final fun encodeFloatElement (Lkotlinx/serialization/SerialDescriptor;IF)V
+	public final fun encodeInt (I)V
+	public final fun encodeIntElement (Lkotlinx/serialization/SerialDescriptor;II)V
+	public final fun encodeLong (J)V
+	public final fun encodeLongElement (Lkotlinx/serialization/SerialDescriptor;IJ)V
+	public fun encodeNonSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/Object;)V
+	public final fun encodeNotNullMark ()V
+	public final fun encodeNull ()V
+	public final fun encodeNullableSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public fun encodeNullableSerializableValue (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public final fun encodeSerializableElement (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public fun encodeSerializableValue (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public final fun encodeShort (S)V
+	public final fun encodeShortElement (Lkotlinx/serialization/SerialDescriptor;IS)V
+	public final fun encodeString (Ljava/lang/String;)V
+	public final fun encodeStringElement (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/String;)V
+	protected fun encodeTaggedBoolean (Ljava/lang/Object;Z)V
+	protected fun encodeTaggedByte (Ljava/lang/Object;B)V
+	protected fun encodeTaggedChar (Ljava/lang/Object;C)V
+	protected fun encodeTaggedDouble (Ljava/lang/Object;D)V
+	protected fun encodeTaggedEnum (Ljava/lang/Object;Lkotlinx/serialization/SerialDescriptor;I)V
+	protected fun encodeTaggedFloat (Ljava/lang/Object;F)V
+	protected fun encodeTaggedInt (Ljava/lang/Object;I)V
+	protected fun encodeTaggedLong (Ljava/lang/Object;J)V
+	protected fun encodeTaggedNotNullMark (Ljava/lang/Object;)V
+	protected fun encodeTaggedNull (Ljava/lang/Object;)V
+	protected fun encodeTaggedShort (Ljava/lang/Object;S)V
+	protected fun encodeTaggedString (Ljava/lang/Object;Ljava/lang/String;)V
+	protected fun encodeTaggedUnit (Ljava/lang/Object;)V
+	protected fun encodeTaggedValue (Ljava/lang/Object;Ljava/lang/Object;)V
+	public final fun encodeUnit ()V
+	public final fun encodeUnitElement (Lkotlinx/serialization/SerialDescriptor;I)V
+	protected fun endEncode (Lkotlinx/serialization/SerialDescriptor;)V
+	public final fun endStructure (Lkotlinx/serialization/SerialDescriptor;)V
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	protected final fun getCurrentTag ()Ljava/lang/Object;
+	protected final fun getCurrentTagOrNull ()Ljava/lang/Object;
+	protected abstract fun getTag (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/Object;
+	protected final fun popTag ()Ljava/lang/Object;
+	protected final fun pushTag (Ljava/lang/Object;)V
+	public fun shouldEncodeElementDefault (Lkotlinx/serialization/SerialDescriptor;I)Z
+}
+
+public final class kotlinx/serialization/internal/TripleSerializer : kotlinx/serialization/KSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;Lkotlinx/serialization/KSerializer;)V
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Lkotlin/Triple;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlin/Triple;)Lkotlin/Triple;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlin/Triple;)V
+}
+
+public final class kotlinx/serialization/internal/UnitDescriptor : kotlinx/serialization/internal/Migration {
+	public static final field INSTANCE Lkotlinx/serialization/internal/UnitDescriptor;
+}
+
+public final class kotlinx/serialization/internal/UnitSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/internal/UnitSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)V
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlin/Unit;)V
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlin/Unit;)V
+}
+
+public final class kotlinx/serialization/internal/UtilKt {
+	public static final fun cast (Lkotlinx/serialization/DeserializationStrategy;)Lkotlinx/serialization/DeserializationStrategy;
+	public static final fun cast (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;
+	public static final fun cast (Lkotlinx/serialization/SerializationStrategy;)Lkotlinx/serialization/SerializationStrategy;
+	public static final fun readExactNBytes (Lkotlinx/io/Input;I)[B
+}
+
+public final class kotlinx/serialization/json/Json : kotlinx/serialization/StringFormat {
+	public static final field Default Lkotlinx/serialization/json/Json$Default;
+	public fun <init> ()V
+	public fun <init> (Lkotlin/jvm/functions/Function1;)V
+	public fun <init> (Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerialModule;)V
+	public synthetic fun <init> (Lkotlinx/serialization/json/JsonConfiguration;Lkotlinx/serialization/modules/SerialModule;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public final fun fromJson (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Object;
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public fun parse (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/String;)Ljava/lang/Object;
+	public final fun parseJson (Ljava/lang/String;)Lkotlinx/serialization/json/JsonElement;
+	public fun stringify (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/lang/String;
+	public final fun toJson (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Lkotlinx/serialization/json/JsonElement;
+}
+
+public final class kotlinx/serialization/json/Json$Default : kotlinx/serialization/StringFormat {
+	public final fun fromJson (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Object;
+	public fun getContext ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun getIndented ()Lkotlinx/serialization/json/Json;
+	public final fun getNonstrict ()Lkotlinx/serialization/json/Json;
+	public final fun getPlain ()Lkotlinx/serialization/json/Json;
+	public final fun getUnquoted ()Lkotlinx/serialization/json/Json;
+	public fun parse (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/String;)Ljava/lang/Object;
+	public final fun parseJson (Ljava/lang/String;)Lkotlinx/serialization/json/JsonElement;
+	public fun stringify (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Ljava/lang/String;
+	public final fun toJson (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)Lkotlinx/serialization/json/JsonElement;
+}
+
+public final class kotlinx/serialization/json/JsonArray : kotlinx/serialization/json/JsonElement, java/util/List, kotlin/jvm/internal/markers/KMappedMarker {
+	public static final field Companion Lkotlinx/serialization/json/JsonArray$Companion;
+	public fun <init> (Ljava/util/List;)V
+	public synthetic fun add (ILjava/lang/Object;)V
+	public fun add (ILkotlinx/serialization/json/JsonElement;)V
+	public synthetic fun add (Ljava/lang/Object;)Z
+	public fun add (Lkotlinx/serialization/json/JsonElement;)Z
+	public fun addAll (ILjava/util/Collection;)Z
+	public fun addAll (Ljava/util/Collection;)Z
+	public fun clear ()V
+	public final fun component1 ()Ljava/util/List;
+	public final fun contains (Ljava/lang/Object;)Z
+	public fun contains (Lkotlinx/serialization/json/JsonElement;)Z
+	public fun containsAll (Ljava/util/Collection;)Z
+	public final fun copy (Ljava/util/List;)Lkotlinx/serialization/json/JsonArray;
+	public static synthetic fun copy$default (Lkotlinx/serialization/json/JsonArray;Ljava/util/List;ILjava/lang/Object;)Lkotlinx/serialization/json/JsonArray;
+	public fun equals (Ljava/lang/Object;)Z
+	public synthetic fun get (I)Ljava/lang/Object;
+	public fun get (I)Lkotlinx/serialization/json/JsonElement;
+	public final fun getArray (I)Lkotlinx/serialization/json/JsonArray;
+	public final fun getArrayOrNull (I)Lkotlinx/serialization/json/JsonArray;
+	public final fun getContent ()Ljava/util/List;
+	public fun getJsonArray ()Lkotlinx/serialization/json/JsonArray;
+	public final fun getObject (I)Lkotlinx/serialization/json/JsonObject;
+	public final fun getObjectOrNull (I)Lkotlinx/serialization/json/JsonObject;
+	public final fun getPrimitive (I)Lkotlinx/serialization/json/JsonPrimitive;
+	public final fun getPrimitiveOrNull (I)Lkotlinx/serialization/json/JsonPrimitive;
+	public fun getSize ()I
+	public fun hashCode ()I
+	public final fun indexOf (Ljava/lang/Object;)I
+	public fun indexOf (Lkotlinx/serialization/json/JsonElement;)I
+	public fun isEmpty ()Z
+	public fun iterator ()Ljava/util/Iterator;
+	public final fun lastIndexOf (Ljava/lang/Object;)I
+	public fun lastIndexOf (Lkotlinx/serialization/json/JsonElement;)I
+	public fun listIterator ()Ljava/util/ListIterator;
+	public fun listIterator (I)Ljava/util/ListIterator;
+	public synthetic fun remove (I)Ljava/lang/Object;
+	public fun remove (I)Lkotlinx/serialization/json/JsonElement;
+	public fun remove (Ljava/lang/Object;)Z
+	public fun removeAll (Ljava/util/Collection;)Z
+	public fun replaceAll (Ljava/util/function/UnaryOperator;)V
+	public fun retainAll (Ljava/util/Collection;)Z
+	public synthetic fun set (ILjava/lang/Object;)Ljava/lang/Object;
+	public fun set (ILkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement;
+	public final fun size ()I
+	public fun sort (Ljava/util/Comparator;)V
+	public fun subList (II)Ljava/util/List;
+	public fun toArray ()[Ljava/lang/Object;
+	public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
+	public fun toString ()Ljava/lang/String;
+}
+
+public final class kotlinx/serialization/json/JsonArray$Companion {
+	public final fun serializer ()Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/json/JsonArrayBuilder {
+	public final fun add (Ljava/lang/Boolean;)V
+	public final fun add (Ljava/lang/Number;)V
+	public final fun add (Ljava/lang/String;)V
+	public final fun add (Lkotlinx/serialization/json/JsonElement;)V
+	public final fun addArray (Lkotlin/jvm/functions/Function1;)V
+	public final fun addJson (Lkotlin/jvm/functions/Function1;)V
+	public final fun unaryPlus (Ljava/lang/Boolean;)V
+	public final fun unaryPlus (Ljava/lang/Number;)V
+	public final fun unaryPlus (Ljava/lang/String;)V
+	public final fun unaryPlus (Lkotlinx/serialization/json/JsonElement;)V
+}
+
+public final class kotlinx/serialization/json/JsonArraySerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/json/JsonArraySerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Lkotlinx/serialization/json/JsonArray;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/json/JsonArray;)Lkotlinx/serialization/json/JsonArray;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/json/JsonArray;)V
+}
+
+public final class kotlinx/serialization/json/JsonBuilder {
+	public fun <init> ()V
+	public final fun buildConfiguration ()Lkotlinx/serialization/json/JsonConfiguration;
+	public final fun buildModule ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun getAllowStructuredMapKeys ()Z
+	public final fun getClassDiscriminator ()Ljava/lang/String;
+	public final fun getEncodeDefaults ()Z
+	public final fun getIgnoreUnknownKeys ()Z
+	public final fun getIndent ()Ljava/lang/String;
+	public final fun getPrettyPrint ()Z
+	public final fun getSerialModule ()Lkotlinx/serialization/modules/SerialModule;
+	public final fun getSerializeSpecialFloatingPointValues ()Z
+	public final fun getStrictMode ()Z
+	public final fun getUnquoted ()Z
+	public final fun getUnquotedPrint ()Z
+	public final fun getUseArrayPolymorphism ()Z
+	public final fun isLenient ()Z
+	public final fun setAllowStructuredMapKeys (Z)V
+	public final fun setClassDiscriminator (Ljava/lang/String;)V
+	public final fun setEncodeDefaults (Z)V
+	public final fun setIgnoreUnknownKeys (Z)V
+	public final fun setIndent (Ljava/lang/String;)V
+	public final fun setLenient (Z)V
+	public final fun setPrettyPrint (Z)V
+	public final fun setSerialModule (Lkotlinx/serialization/modules/SerialModule;)V
+	public final fun setSerializeSpecialFloatingPointValues (Z)V
+	public final fun setStrictMode (Z)V
+	public final fun setUnquoted (Z)V
+	public final fun setUnquotedPrint (Z)V
+	public final fun setUseArrayPolymorphism (Z)V
+}
+
+public final class kotlinx/serialization/json/JsonConfiguration {
+	public static final field Companion Lkotlinx/serialization/json/JsonConfiguration$Companion;
+	public fun <init> ()V
+	public fun <init> (ZZZZZZZLjava/lang/String;ZLjava/lang/String;)V
+	public synthetic fun <init> (ZZZZZZZLjava/lang/String;ZLjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+	public final fun copy (ZZZZZZZLjava/lang/String;ZLjava/lang/String;)Lkotlinx/serialization/json/JsonConfiguration;
+	public static synthetic fun copy$default (Lkotlinx/serialization/json/JsonConfiguration;ZZZZZZZLjava/lang/String;ZLjava/lang/String;ILjava/lang/Object;)Lkotlinx/serialization/json/JsonConfiguration;
+	public fun equals (Ljava/lang/Object;)Z
+	public static final fun getDefault ()Lkotlinx/serialization/json/JsonConfiguration;
+	public static final fun getStable ()Lkotlinx/serialization/json/JsonConfiguration;
+	public fun hashCode ()I
+	public fun toString ()Ljava/lang/String;
+}
+
+public final class kotlinx/serialization/json/JsonConfiguration$Companion {
+	public final fun getDefault ()Lkotlinx/serialization/json/JsonConfiguration;
+	public final fun getStable ()Lkotlinx/serialization/json/JsonConfiguration;
+}
+
+public final class kotlinx/serialization/json/JsonConfigurationKt {
+	public static final fun JsonConfiguration (ZZ)V
+	public static synthetic fun JsonConfiguration$default (ZZILjava/lang/Object;)V
+}
+
+public final class kotlinx/serialization/json/JsonDecodingException : kotlinx/serialization/json/JsonException {
+	public fun <init> (ILjava/lang/String;)V
+}
+
+public abstract class kotlinx/serialization/json/JsonElement {
+	public static final field Companion Lkotlinx/serialization/json/JsonElement$Companion;
+	public final fun contains (Ljava/lang/String;)Z
+	public fun getJsonArray ()Lkotlinx/serialization/json/JsonArray;
+	public fun getJsonNull ()Lkotlinx/serialization/json/JsonNull;
+	public fun getJsonObject ()Lkotlinx/serialization/json/JsonObject;
+	public fun getPrimitive ()Lkotlinx/serialization/json/JsonPrimitive;
+	public final fun isNull ()Z
+}
+
+public final class kotlinx/serialization/json/JsonElement$Companion {
+	public final fun serializer ()Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/json/JsonElementBuildersKt {
+	public static final fun buildJson (Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/json/JsonObject;
+	public static final fun buildJsonArray (Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/json/JsonArray;
+	public static final fun json (Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/json/JsonObject;
+	public static final fun jsonArray (Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/json/JsonArray;
+}
+
+public final class kotlinx/serialization/json/JsonElementKt {
+	public static final fun unexpectedJson (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Void;
+}
+
+public final class kotlinx/serialization/json/JsonElementSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/json/JsonElementSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Lkotlinx/serialization/json/JsonElement;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/json/JsonElement;)V
+}
+
+public final class kotlinx/serialization/json/JsonElementsKt {
+	public static final fun JsonPrimitive (Ljava/lang/Boolean;)Lkotlinx/serialization/json/JsonPrimitive;
+	public static final fun JsonPrimitive (Ljava/lang/Number;)Lkotlinx/serialization/json/JsonPrimitive;
+	public static final fun JsonPrimitive (Ljava/lang/String;)Lkotlinx/serialization/json/JsonPrimitive;
+	public static final fun getBoolean (Lkotlinx/serialization/json/JsonElement;)Z
+	public static final fun getBooleanOrNull (Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Boolean;
+	public static final fun getContent (Lkotlinx/serialization/json/JsonElement;)Ljava/lang/String;
+	public static final fun getContentOrNull (Lkotlinx/serialization/json/JsonElement;)Ljava/lang/String;
+	public static final fun getDouble (Lkotlinx/serialization/json/JsonElement;)D
+	public static final fun getDoubleOrNull (Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Double;
+	public static final fun getFloat (Lkotlinx/serialization/json/JsonElement;)F
+	public static final fun getFloatOrNull (Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Float;
+	public static final fun getInt (Lkotlinx/serialization/json/JsonElement;)I
+	public static final fun getIntOrNull (Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Integer;
+	public static final fun getLong (Lkotlinx/serialization/json/JsonElement;)J
+	public static final fun getLongOrNull (Lkotlinx/serialization/json/JsonElement;)Ljava/lang/Long;
+}
+
+public final class kotlinx/serialization/json/JsonEncodingException : kotlinx/serialization/json/JsonException {
+	public fun <init> (Ljava/lang/String;)V
+}
+
+public class kotlinx/serialization/json/JsonException : kotlinx/serialization/SerializationException {
+	public fun <init> (Ljava/lang/String;)V
+}
+
+public abstract interface class kotlinx/serialization/json/JsonInput : kotlinx/serialization/CompositeDecoder, kotlinx/serialization/Decoder {
+	public abstract fun decodeJson ()Lkotlinx/serialization/json/JsonElement;
+	public abstract fun getJson ()Lkotlinx/serialization/json/Json;
+	public abstract synthetic fun getUpdateMode ()Lkotlinx/serialization/UpdateMode;
+}
+
+public final class kotlinx/serialization/json/JsonInput$DefaultImpls {
+	public static fun beginStructure (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;
+	public static fun beginStructure (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;
+	public static fun decodeCollectionSize (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;)I
+	public static fun decodeNullableSerializableElement (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static fun decodeNullableSerializableElement (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun decodeNullableSerializableValue (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static fun decodeSequentially (Lkotlinx/serialization/json/JsonInput;)Z
+	public static fun decodeSerializableElement (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static fun decodeSerializableElement (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun decodeSerializableValue (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;
+	public static synthetic fun getUpdateMode (Lkotlinx/serialization/json/JsonInput;)Lkotlinx/serialization/UpdateMode;
+	public static fun updateNullableSerializableElement (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun updateNullableSerializableValue (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun updateSerializableElement (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+	public static fun updateSerializableValue (Lkotlinx/serialization/json/JsonInput;Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
+}
+
+public final class kotlinx/serialization/json/JsonLiteral : kotlinx/serialization/json/JsonPrimitive {
+	public static final field Companion Lkotlinx/serialization/json/JsonLiteral$Companion;
+	public fun <init> (Ljava/lang/Number;)V
+	public fun <init> (Ljava/lang/String;)V
+	public fun <init> (Z)V
+	public fun equals (Ljava/lang/Object;)Z
+	public fun getContent ()Ljava/lang/String;
+	public fun getContentOrNull ()Ljava/lang/String;
+	public fun hashCode ()I
+	public final fun isString ()Z
+	public fun toString ()Ljava/lang/String;
+}
+
+public final class kotlinx/serialization/json/JsonLiteral$Companion {
+	public final fun serializer ()Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/json/JsonLiteralSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/json/JsonLiteralSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Lkotlinx/serialization/json/JsonLiteral;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/json/JsonLiteral;)Lkotlinx/serialization/json/JsonLiteral;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/json/JsonLiteral;)V
+}
+
+public final class kotlinx/serialization/json/JsonNull : kotlinx/serialization/json/JsonPrimitive {
+	public static final field INSTANCE Lkotlinx/serialization/json/JsonNull;
+	public fun getContent ()Ljava/lang/String;
+	public fun getContentOrNull ()Ljava/lang/String;
+	public fun getJsonNull ()Lkotlinx/serialization/json/JsonNull;
+}
+
+public final class kotlinx/serialization/json/JsonNullSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/json/JsonNullSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Lkotlinx/serialization/json/JsonNull;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/json/JsonNull;)Lkotlinx/serialization/json/JsonNull;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/json/JsonNull;)V
+}
+
+public final class kotlinx/serialization/json/JsonObject : kotlinx/serialization/json/JsonElement, java/util/Map, kotlin/jvm/internal/markers/KMappedMarker {
+	public static final field Companion Lkotlinx/serialization/json/JsonObject$Companion;
+	public fun <init> (Ljava/util/Map;)V
+	public fun clear ()V
+	public final fun component1 ()Ljava/util/Map;
+	public synthetic fun compute (Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+	public fun compute (Ljava/lang/String;Ljava/util/function/BiFunction;)Lkotlinx/serialization/json/JsonElement;
+	public synthetic fun computeIfAbsent (Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
+	public fun computeIfAbsent (Ljava/lang/String;Ljava/util/function/Function;)Lkotlinx/serialization/json/JsonElement;
+	public synthetic fun computeIfPresent (Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+	public fun computeIfPresent (Ljava/lang/String;Ljava/util/function/BiFunction;)Lkotlinx/serialization/json/JsonElement;
+	public final fun containsKey (Ljava/lang/Object;)Z
+	public fun containsKey (Ljava/lang/String;)Z
+	public final fun containsValue (Ljava/lang/Object;)Z
+	public fun containsValue (Lkotlinx/serialization/json/JsonElement;)Z
+	public final fun copy (Ljava/util/Map;)Lkotlinx/serialization/json/JsonObject;
+	public static synthetic fun copy$default (Lkotlinx/serialization/json/JsonObject;Ljava/util/Map;ILjava/lang/Object;)Lkotlinx/serialization/json/JsonObject;
+	public final fun entrySet ()Ljava/util/Set;
+	public fun equals (Ljava/lang/Object;)Z
+	public final fun get (Ljava/lang/Object;)Ljava/lang/Object;
+	public fun get (Ljava/lang/String;)Lkotlinx/serialization/json/JsonElement;
+	public final fun getArray (Ljava/lang/String;)Lkotlinx/serialization/json/JsonArray;
+	public final fun getArrayOrNull (Ljava/lang/String;)Lkotlinx/serialization/json/JsonArray;
+	public final fun getContent ()Ljava/util/Map;
+	public fun getEntries ()Ljava/util/Set;
+	public fun getJsonObject ()Lkotlinx/serialization/json/JsonObject;
+	public fun getKeys ()Ljava/util/Set;
+	public final fun getObject (Ljava/lang/String;)Lkotlinx/serialization/json/JsonObject;
+	public final fun getObjectOrNull (Ljava/lang/String;)Lkotlinx/serialization/json/JsonObject;
+	public final fun getPrimitive (Ljava/lang/String;)Lkotlinx/serialization/json/JsonPrimitive;
+	public final fun getPrimitiveOrNull (Ljava/lang/String;)Lkotlinx/serialization/json/JsonPrimitive;
+	public fun getSize ()I
+	public fun getValues ()Ljava/util/Collection;
+	public fun hashCode ()I
+	public fun isEmpty ()Z
+	public final fun keySet ()Ljava/util/Set;
+	public synthetic fun merge (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+	public fun merge (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Ljava/util/function/BiFunction;)Lkotlinx/serialization/json/JsonElement;
+	public synthetic fun put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun put (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement;
+	public fun putAll (Ljava/util/Map;)V
+	public synthetic fun putIfAbsent (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun putIfAbsent (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement;
+	public fun remove (Ljava/lang/Object;)Ljava/lang/Object;
+	public fun remove (Ljava/lang/Object;Ljava/lang/Object;)Z
+	public synthetic fun replace (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+	public synthetic fun replace (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+	public fun replace (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement;
+	public fun replace (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;Lkotlinx/serialization/json/JsonElement;)Z
+	public fun replaceAll (Ljava/util/function/BiFunction;)V
+	public final fun size ()I
+	public fun toString ()Ljava/lang/String;
+	public final fun values ()Ljava/util/Collection;
+}
+
+public final class kotlinx/serialization/json/JsonObject$Companion {
+	public final fun serializer ()Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/json/JsonObjectBuilder {
+	public final fun add (Ljava/lang/String;Ljava/lang/Boolean;)V
+	public final fun add (Ljava/lang/String;Ljava/lang/Number;)V
+	public final fun add (Ljava/lang/String;Ljava/lang/String;)V
+	public final fun add (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)V
+	public final fun addArray (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
+	public final fun addJson (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
+	public final fun to (Ljava/lang/String;Ljava/lang/Boolean;)V
+	public final fun to (Ljava/lang/String;Ljava/lang/Number;)V
+	public final fun to (Ljava/lang/String;Ljava/lang/String;)V
+	public final fun to (Ljava/lang/String;Lkotlinx/serialization/json/JsonElement;)V
+}
+
+public final class kotlinx/serialization/json/JsonObjectSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/json/JsonObjectSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Lkotlinx/serialization/json/JsonObject;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/json/JsonObject;)Lkotlinx/serialization/json/JsonObject;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/json/JsonObject;)V
+}
+
+public abstract interface class kotlinx/serialization/json/JsonOutput : kotlinx/serialization/CompositeEncoder, kotlinx/serialization/Encoder {
+	public abstract fun encodeJson (Lkotlinx/serialization/json/JsonElement;)V
+	public abstract fun getJson ()Lkotlinx/serialization/json/Json;
+}
+
+public final class kotlinx/serialization/json/JsonOutput$DefaultImpls {
+	public static fun beginCollection (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerialDescriptor;I)Lkotlinx/serialization/CompositeEncoder;
+	public static fun beginCollection (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerialDescriptor;I[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public static fun beginStructure (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;
+	public static fun beginStructure (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;
+	public static fun encodeNonSerializableElement (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerialDescriptor;ILjava/lang/Object;)V
+	public static fun encodeNotNullMark (Lkotlinx/serialization/json/JsonOutput;)V
+	public static fun encodeNullableSerializableValue (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public static fun encodeSerializableValue (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V
+	public static fun shouldEncodeElementDefault (Lkotlinx/serialization/json/JsonOutput;Lkotlinx/serialization/SerialDescriptor;I)Z
+}
+
+public abstract class kotlinx/serialization/json/JsonParametricSerializer : kotlinx/serialization/KSerializer {
+	public fun <init> (Lkotlin/reflect/KClass;)V
+	public final fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	protected abstract fun selectSerializer (Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/KSerializer;
+	public final fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+}
+
+public abstract class kotlinx/serialization/json/JsonPrimitive : kotlinx/serialization/json/JsonElement {
+	public static final field Companion Lkotlinx/serialization/json/JsonPrimitive$Companion;
+	public final fun getBoolean ()Z
+	public final fun getBooleanOrNull ()Ljava/lang/Boolean;
+	public abstract fun getContent ()Ljava/lang/String;
+	public abstract fun getContentOrNull ()Ljava/lang/String;
+	public final fun getDouble ()D
+	public final fun getDoubleOrNull ()Ljava/lang/Double;
+	public final fun getFloat ()F
+	public final fun getFloatOrNull ()Ljava/lang/Float;
+	public final fun getInt ()I
+	public final fun getIntOrNull ()Ljava/lang/Integer;
+	public final fun getLong ()J
+	public final fun getLongOrNull ()Ljava/lang/Long;
+	public final fun getPrimitive ()Lkotlinx/serialization/json/JsonPrimitive;
+	public fun toString ()Ljava/lang/String;
+}
+
+public final class kotlinx/serialization/json/JsonPrimitive$Companion {
+	public final fun serializer ()Lkotlinx/serialization/KSerializer;
+}
+
+public final class kotlinx/serialization/json/JsonPrimitiveSerializer : kotlinx/serialization/KSerializer {
+	public static final field INSTANCE Lkotlinx/serialization/json/JsonPrimitiveSerializer;
+	public synthetic fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun deserialize (Lkotlinx/serialization/Decoder;)Lkotlinx/serialization/json/JsonPrimitive;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public synthetic fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	public fun patch (Lkotlinx/serialization/Decoder;Lkotlinx/serialization/json/JsonPrimitive;)Lkotlinx/serialization/json/JsonPrimitive;
+	public synthetic fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	public fun serialize (Lkotlinx/serialization/Encoder;Lkotlinx/serialization/json/JsonPrimitive;)V
+}
+
+public abstract class kotlinx/serialization/json/JsonTransformingSerializer : kotlinx/serialization/KSerializer {
+	public fun <init> (Lkotlinx/serialization/KSerializer;Ljava/lang/String;)V
+	public final fun deserialize (Lkotlinx/serialization/Decoder;)Ljava/lang/Object;
+	public fun getDescriptor ()Lkotlinx/serialization/SerialDescriptor;
+	public fun patch (Lkotlinx/serialization/Decoder;Ljava/lang/Object;)Ljava/lang/Object;
+	protected fun readTransform (Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement;
+	public final fun serialize (Lkotlinx/serialization/Encoder;Ljava/lang/Object;)V
+	protected fun writeTransform (Lkotlinx/serialization/json/JsonElement;)Lkotlinx/serialization/json/JsonElement;
+}
+
+public final class kotlinx/serialization/modules/EmptyModule : kotlinx/serialization/modules/SerialModule {
+	public static final field INSTANCE Lkotlinx/serialization/modules/EmptyModule;
+	public fun dumpTo (Lkotlinx/serialization/modules/SerialModuleCollector;)V
+	public fun getContextual (Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;
+	public fun getPolymorphic (Lkotlin/reflect/KClass;Ljava/lang/Object;)Lkotlinx/serialization/SerializationStrategy;
+	public fun getPolymorphic (Lkotlin/reflect/KClass;Ljava/lang/String;)Lkotlinx/serialization/DeserializationStrategy;
+}
+
+public final class kotlinx/serialization/modules/PolymorphicModuleBuilder {
+	public final fun addSubclass (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V
+	public final fun default (Lkotlin/jvm/functions/Function1;)V
+	public final fun with (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V
+}
+
+public abstract class kotlinx/serialization/modules/SerialModule {
+	public abstract fun dumpTo (Lkotlinx/serialization/modules/SerialModuleCollector;)V
+	public abstract fun getContextual (Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;
+	public abstract fun getPolymorphic (Lkotlin/reflect/KClass;Ljava/lang/Object;)Lkotlinx/serialization/SerializationStrategy;
+	public abstract fun getPolymorphic (Lkotlin/reflect/KClass;Ljava/lang/String;)Lkotlinx/serialization/DeserializationStrategy;
+}
+
+public final class kotlinx/serialization/modules/SerialModuleBuildersKt {
+	public static final fun SerializersModule (Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/modules/SerialModule;
+	public static final fun serializersModuleOf (Ljava/util/Map;)Lkotlinx/serialization/modules/SerialModule;
+	public static final fun serializersModuleOf (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/modules/SerialModule;
+}
+
+public abstract interface class kotlinx/serialization/modules/SerialModuleCollector {
+	public abstract fun contextual (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V
+	public abstract fun defaultPolymorphic (Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)V
+	public abstract fun polymorphic (Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V
+}
+
+public final class kotlinx/serialization/modules/SerialModuleExtensionsKt {
+	public static final fun getContextual (Lkotlinx/serialization/modules/SerialModule;Ljava/lang/Object;)Lkotlinx/serialization/KSerializer;
+	public static final fun getContextualDescriptor (Lkotlinx/serialization/modules/SerialModule;Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/SerialDescriptor;
+	public static final fun getContextualOrDefault (Lkotlinx/serialization/modules/SerialModule;Lkotlin/reflect/KType;)Lkotlinx/serialization/KSerializer;
+	public static final fun getPolymorphicDescriptors (Lkotlinx/serialization/modules/SerialModule;Lkotlinx/serialization/SerialDescriptor;)Ljava/util/List;
+	public static final fun overwriteWith (Lkotlinx/serialization/modules/SerialModule;Lkotlinx/serialization/modules/SerialModule;)Lkotlinx/serialization/modules/SerialModule;
+	public static final fun plus (Lkotlinx/serialization/modules/SerialModule;Lkotlinx/serialization/modules/SerialModule;)Lkotlinx/serialization/modules/SerialModule;
+}
+
+public final class kotlinx/serialization/modules/SerializersModuleBuilder : kotlinx/serialization/modules/SerialModuleCollector {
+	public fun contextual (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V
+	public fun defaultPolymorphic (Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)V
+	public final fun include (Lkotlinx/serialization/modules/SerialModule;)V
+	public fun polymorphic (Lkotlin/reflect/KClass;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;)V
+	public final fun polymorphic (Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function1;)V
+	public final fun polymorphic (Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)V
+	public static synthetic fun polymorphic$default (Lkotlinx/serialization/modules/SerializersModuleBuilder;Lkotlin/reflect/KClass;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+	public static synthetic fun polymorphic$default (Lkotlinx/serialization/modules/SerializersModuleBuilder;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+}
+
diff --git a/runtime/commonMain/src/kotlinx/io/Buffers.kt b/runtime/commonMain/src/kotlinx/io/Buffers.kt
deleted file mode 100644
index d1772e0..0000000
--- a/runtime/commonMain/src/kotlinx/io/Buffers.kt
+++ /dev/null
@@ -1,63 +0,0 @@
-
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-@file:Suppress(
-    "DEPRECATION_ERROR", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING",
-    "NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING"
-)
-package kotlinx.io
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-expect class ByteBuffer {
-
-    fun order(order: ByteOrder): ByteBuffer
-    fun clear(): ByteBuffer
-    fun flip(): ByteBuffer
-
-    fun get(): Byte
-    fun get(index: Int): Byte
-    fun get(dst: ByteArray, offset: Int, cnt: Int): Unit
-    fun getChar(): Char
-    fun getChar(index: Int): Char
-    fun getShort(): Short
-    fun getShort(index: Int): Short
-    fun getInt(): Int
-    fun getInt(index: Int): Int
-    fun getLong(): Long
-    fun getLong(index: Int): Long
-    fun getFloat(): Float
-    fun getFloat(index: Int): Float
-    fun getDouble(): Double
-    fun getDouble(index: Int): Double
-
-    fun put(value: Byte): ByteBuffer
-    fun put(value: Byte, index: Int): ByteBuffer
-    fun put(src: ByteArray): ByteBuffer
-    fun put(src: ByteArray, offset: Int, cnt: Int): ByteBuffer
-
-    fun putChar(value: Char): ByteBuffer
-    fun putChar(value: Char, index: Int): ByteBuffer
-    fun putShort(value: Short): ByteBuffer
-    fun putShort(value: Short, index: Int): ByteBuffer
-    fun putInt(value: Int): ByteBuffer
-    fun putInt(value: Int, index: Int): ByteBuffer
-    fun putLong(value: Long): ByteBuffer
-    fun putLong(value: Long, index: Int): ByteBuffer
-    fun putFloat(value: Float): ByteBuffer
-    fun putFloat(value: Float, index: Int): ByteBuffer
-    fun putDouble(value: Double): ByteBuffer
-    fun putDouble(value: Double, index: Int): ByteBuffer
-
-    fun array(): ByteArray
-
-
-    companion object {
-        fun allocate(capacity: Int): ByteBuffer
-    }
-}
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-enum class ByteOrder {
-    LITTLE_ENDIAN, BIG_ENDIAN
-}
diff --git a/runtime/commonMain/src/kotlinx/io/Streams.kt b/runtime/commonMain/src/kotlinx/io/Streams.kt
index 5b25bf2..c42691b 100644
--- a/runtime/commonMain/src/kotlinx/io/Streams.kt
+++ b/runtime/commonMain/src/kotlinx/io/Streams.kt
@@ -8,7 +8,7 @@
 
 @InternalSerializationApi
 public abstract class Input {
-    abstract val availableBytes: Int
+    public abstract val availableBytes: Int
     public abstract fun read(): Int
     public abstract fun read(b: ByteArray, offset: Int, length: Int): Int
     public abstract fun readString(length: Int): String
diff --git a/runtime/commonMain/src/kotlinx/io/Writers.kt b/runtime/commonMain/src/kotlinx/io/Writers.kt
deleted file mode 100644
index f2ba2dd..0000000
--- a/runtime/commonMain/src/kotlinx/io/Writers.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-@file:Suppress(
-    "DEPRECATION_ERROR", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING",
-    "NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING"
-)
-package kotlinx.io
-
-
-internal const val message = "These classes accidentally slipped to the public API surface. " +
-        "We neither had intent to provide a production-quality implementation nor have an intent to support them." +
-        "They are removed and to migrate, you can either use a corresponding java.io type or just a copy-paste implementation from the GitHub." +
-        "If you have a use-case for multiplatform IO, please report it to the https://github.com/Kotlin/kotlinx-io/issues"
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-class Writer
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-class PrintWriter
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-class StringWriter
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-class Reader
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-class StringReader
diff --git a/runtime/commonMain/src/kotlinx/serialization/Annotations.kt b/runtime/commonMain/src/kotlinx/serialization/Annotations.kt
index 31d822b..49a6542 100644
--- a/runtime/commonMain/src/kotlinx/serialization/Annotations.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/Annotations.kt
@@ -37,14 +37,6 @@
 public annotation class SerialName(val value: String)
 
 /**
- * Indicates that property is optional in deserialization process.
- * Optional properties must have default values.
- */
-@Target(AnnotationTarget.PROPERTY)
-@Deprecated("All properties with default values are considered optional now", level = DeprecationLevel.ERROR)
-public annotation class Optional
-
-/**
  * Indicates that property must be present during deserialization process,
  * even if it has default value.
  */
diff --git a/runtime/commonMain/src/kotlinx/serialization/Decoding.kt b/runtime/commonMain/src/kotlinx/serialization/Decoding.kt
index 2d229c5..a60582b 100644
--- a/runtime/commonMain/src/kotlinx/serialization/Decoding.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/Decoding.kt
@@ -286,7 +286,7 @@
 
         @Deprecated(
             message = "READ_ALL cannot be longer returned by 'decodeElementIndex', use 'decodeSequentially' instead",
-            level = DeprecationLevel.WARNING
+            level = DeprecationLevel.ERROR
         )
         @Suppress("UNUSED")
         public const val READ_ALL: Int = -2
diff --git a/runtime/commonMain/src/kotlinx/serialization/Migrations.kt b/runtime/commonMain/src/kotlinx/serialization/Migrations.kt
index c1925de..4535e0c 100644
--- a/runtime/commonMain/src/kotlinx/serialization/Migrations.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/Migrations.kt
@@ -20,7 +20,7 @@
     level = DeprecationLevel.ERROR,
     replaceWith = ReplaceWith("PrimitiveDescriptor(name, original.kind)")
 )
-constructor(override val name: String, private val original: SerialDescriptor) : SerialDescriptor by original
+constructor(override val serialName: String, private val original: SerialDescriptor) : SerialDescriptor by original
 
 @Deprecated(
     message = "Deprecated in the favour of PrimitiveDescriptor factory function",
@@ -144,4 +144,10 @@
     replaceWith = ReplaceWith("getContextualOrDefault<T>()")
 )
 public fun <T : Any> SerialModule.getContextualOrDefault(value: T): KSerializer<T> =
-    getContextual(value) ?: value::class.serializer().cast()
\ No newline at end of file
+    getContextual(value) ?: value::class.serializer().cast()
+
+@Suppress("UNUSED", "DeprecatedCallableAddReplaceWith")
+@Deprecated(
+    message = "Top-level polymorphic descriptor is deprecated, use descriptor from the instance of PolymorphicSerializer or" +
+            "check for descriptor kind instead", level = DeprecationLevel.ERROR)
+public val PolymorphicClassDescriptor: SerialDescriptor get() = error("This property is no longer supported")
\ No newline at end of file
diff --git a/runtime/commonMain/src/kotlinx/serialization/Polymorphic.kt b/runtime/commonMain/src/kotlinx/serialization/Polymorphic.kt
index 544e8f8..02777b6 100644
--- a/runtime/commonMain/src/kotlinx/serialization/Polymorphic.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/Polymorphic.kt
@@ -9,13 +9,6 @@
 import kotlinx.serialization.modules.*
 import kotlin.reflect.*
 
-@Suppress("UNUSED", "DeprecatedCallableAddReplaceWith")
-@Deprecated(
-    message = "Top-level polymorphic descriptor is deprecated, use descriptor from the instance of PolymorphicSerializer or" +
-            "check for descriptor kind instead", level = DeprecationLevel.ERROR
-)
-public val PolymorphicClassDescriptor: SerialDescriptor get() = error("This property is no longer supported")
-
 /**
  * This class provides support for multiplatform polymorphic serialization for interfaces and abstract classes.
  *
diff --git a/runtime/commonMain/src/kotlinx/serialization/SerialDescriptor.kt b/runtime/commonMain/src/kotlinx/serialization/SerialDescriptor.kt
index ad6ce13..d779bd0 100644
--- a/runtime/commonMain/src/kotlinx/serialization/SerialDescriptor.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/SerialDescriptor.kt
@@ -130,14 +130,6 @@
      */
     public val serialName: String
 
-    @Deprecated(
-        message = "name property deprecated in the favour of serialName",
-        level = DeprecationLevel.ERROR,
-        replaceWith = ReplaceWith("serialName")
-    )
-    public val name: String
-        get() = serialName
-
     /**
      * The kind of the serialized form that determines **the shape** of the serialized data.
      * Formats use serial kind to add and parse serializer-agnostic metadata to the result.
@@ -176,9 +168,6 @@
      */
     public val annotations: List<Annotation> get() = emptyList()
 
-    @Deprecated(message = "Deprecated in the favour of 'annotations' property", replaceWith = ReplaceWith("annotations"))
-    public fun getEntityAnnotations(): List<Annotation> = emptyList()
-
     /**
      * Returns a _positional_ name of the child at the given [index].
      * Positional name usually represents a corresponding property name in the class, associated with
diff --git a/runtime/commonMain/src/kotlinx/serialization/SerialKinds.kt b/runtime/commonMain/src/kotlinx/serialization/SerialKinds.kt
index 77813a4..f7fa60c 100644
--- a/runtime/commonMain/src/kotlinx/serialization/SerialKinds.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/SerialKinds.kt
@@ -112,15 +112,6 @@
      */
     public object DOUBLE : PrimitiveKind()
 
-    /*
-     * Not documented, reworked in #664
-     */
-    @Deprecated(
-        message = "Primitive kind Unit is deprecated with no replacement. Use StructureKind.OBJECT instead or check for a particular serialName",
-        level = DeprecationLevel.ERROR
-    )
-    public object UNIT : PrimitiveKind()
-
     /**
      * Primitive kind that represents a string value.
      * Corresponding Kotlin primitive is [String].
diff --git a/runtime/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt b/runtime/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt
index fbc94a7..8d08882 100644
--- a/runtime/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt
@@ -9,7 +9,7 @@
     message = "Deprecated in the favor of extension",
     level = DeprecationLevel.ERROR,
     replaceWith = ReplaceWith("actualSerializer.nullable)")
-)
+) // TODO still used by the plugin
 @InternalSerializationApi
 public fun <T : Any> makeNullable(actualSerializer: KSerializer<T>): KSerializer<T?> {
     return NullableSerializer(actualSerializer)
diff --git a/runtime/commonMain/src/kotlinx/serialization/internal/SerializationConstructorMarkerComaptibility.kt b/runtime/commonMain/src/kotlinx/serialization/internal/SerializationConstructorMarkerCompatibility.kt
similarity index 82%
rename from runtime/commonMain/src/kotlinx/serialization/internal/SerializationConstructorMarkerComaptibility.kt
rename to runtime/commonMain/src/kotlinx/serialization/internal/SerializationConstructorMarkerCompatibility.kt
index c03dc93..81bdebe 100644
--- a/runtime/commonMain/src/kotlinx/serialization/internal/SerializationConstructorMarkerComaptibility.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/internal/SerializationConstructorMarkerCompatibility.kt
@@ -8,5 +8,5 @@
 
 // Binary compatibility with the plugin
 @Suppress("UNUSED")
-@Deprecated("Inserted into generated code and should not be used directly", level = DeprecationLevel.HIDDEN)
+@Deprecated("Inserted into generated code and should not be used directly", level = DeprecationLevel.HIDDEN) // TODO still used by the plugin
 public class SerializationConstructorMarker private constructor()
diff --git a/runtime/commonMain/src/kotlinx/serialization/internal/Util.kt b/runtime/commonMain/src/kotlinx/serialization/internal/Util.kt
index 2b12f26..6cf4827 100644
--- a/runtime/commonMain/src/kotlinx/serialization/internal/Util.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/internal/Util.kt
@@ -21,6 +21,18 @@
     throw NotImplementedError("Deprecated")
 }
 
+@InternalSerializationApi
+@Deprecated(
+    level = DeprecationLevel.ERROR,  message = "HexConverter slipped into public API surface accidentally and will be removed in the future releases. " +
+            "You can copy-paste it to your project or (better) find a polished implementation that initially was intended for public uses."
+)
+public object HexConverter {
+    private const val hexCode = "0123456789ABCDEF"
+    public fun parseHexBinary(s: String): ByteArray = InternalHexConverter.parseHexBinary(s)
+    public fun printHexBinary(data: ByteArray, lowerCase: Boolean = false): String = InternalHexConverter.printHexBinary(data, lowerCase)
+    public fun toHexString(n: Int): String = InternalHexConverter.toHexString(n)
+}
+
 internal object InternalHexConverter {
     private const val hexCode = "0123456789ABCDEF"
 
@@ -67,19 +79,6 @@
     }
 }
 
-@InternalSerializationApi
-@Deprecated(
-    level = DeprecationLevel.ERROR,
-    message = "HexConverter slipped into public API surface accidentally and will be removed in the future releases. " +
-            "You can copy-paste it to your project or (better) find a polished implementation that initially was intended for public uses."
-)
-public object HexConverter {
-    private const val hexCode = "0123456789ABCDEF"
-    public fun parseHexBinary(s: String): ByteArray = InternalHexConverter.parseHexBinary(s)
-    public fun printHexBinary(data: ByteArray, lowerCase: Boolean = false): String = InternalHexConverter.printHexBinary(data, lowerCase)
-    public fun toHexString(n: Int): String = InternalHexConverter.toHexString(n)
-}
-
 internal fun SerialDescriptor.cachedSerialNames(): Set<String> {
     @Suppress("DEPRECATION_ERROR")
     if (this is PluginGeneratedSerialDescriptor) return namesSet
diff --git a/runtime/commonMain/src/kotlinx/serialization/json/Json.kt b/runtime/commonMain/src/kotlinx/serialization/json/Json.kt
index 31ffb78..ef6f573 100644
--- a/runtime/commonMain/src/kotlinx/serialization/json/Json.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/json/Json.kt
@@ -166,11 +166,11 @@
                     "'Json(JsonConfiguration)' constructor or by tweaking stable configuration 'Json(JsonConfiguration.Stable.copy(prettyPrint = true))'"
 
         @UnstableDefault
-        @Deprecated(message = message, level = DeprecationLevel.WARNING)
+        @Deprecated(message = message, level = DeprecationLevel.ERROR)
         public val plain: Json = Json(JsonConfiguration(useArrayPolymorphism = true))
 
         @UnstableDefault
-        @Deprecated(message = message, level = DeprecationLevel.WARNING)
+        @Deprecated(message = message, level = DeprecationLevel.ERROR)
         public val unquoted: Json = Json(
             JsonConfiguration(
                 isLenient = true,
@@ -182,11 +182,11 @@
         )
 
         @UnstableDefault
-        @Deprecated(message = message, level = DeprecationLevel.WARNING)
+        @Deprecated(message = message, level = DeprecationLevel.ERROR)
         public val indented: Json = Json(JsonConfiguration(prettyPrint = true, useArrayPolymorphism = true))
 
         @UnstableDefault
-        @Deprecated(message = message, level = DeprecationLevel.WARNING)
+        @Deprecated(message = message, level = DeprecationLevel.ERROR)
         public val nonstrict: Json = Json(
             JsonConfiguration(
                 isLenient = true,
diff --git a/runtime/commonMain/src/kotlinx/serialization/modules/PolymorphicModuleBuilder.kt b/runtime/commonMain/src/kotlinx/serialization/modules/PolymorphicModuleBuilder.kt
index 4d64402..be3fd0f 100644
--- a/runtime/commonMain/src/kotlinx/serialization/modules/PolymorphicModuleBuilder.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/modules/PolymorphicModuleBuilder.kt
@@ -35,7 +35,7 @@
      */
     @Deprecated(
         message = "Use 'subclass(serializer)' instead",
-        level = DeprecationLevel.WARNING,
+        level = DeprecationLevel.ERROR,
         replaceWith = ReplaceWith("subclass(serializer)")
     )
     public inline fun <reified T : Base> addSubclass(serializer: KSerializer<T>): Unit =
@@ -49,7 +49,7 @@
      */
     @Deprecated(
         message = "Use 'subclass' instead",
-        level = DeprecationLevel.WARNING,
+        level = DeprecationLevel.ERROR,
         replaceWith = ReplaceWith("subclass<T>()")
     )
     public inline fun <reified T : Base> addSubclass(): Unit = addSubclass(T::class, serializer())
diff --git a/runtime/commonMain/src/kotlinx/serialization/modules/SerialModuleBuilders.kt b/runtime/commonMain/src/kotlinx/serialization/modules/SerialModuleBuilders.kt
index 5cba98e..6065655 100644
--- a/runtime/commonMain/src/kotlinx/serialization/modules/SerialModuleBuilders.kt
+++ b/runtime/commonMain/src/kotlinx/serialization/modules/SerialModuleBuilders.kt
@@ -99,7 +99,7 @@
      * (which is useful if base class is serializable). To add subclasses, use
      * [PolymorphicModuleBuilder.subclass] or [PolymorphicModuleBuilder.with].
      *
-     * If serializer already registered for the given KClass in the given scope, a [SerializerAlreadyRegisteredException] is thrown.
+     * If serializer already registered for the given KClass in the given scope, a [IllegalArgumentException] is thrown.
      * To override registered serializers, combine built module with another using
      * [SerialModule.overwriteWith].
      *
@@ -143,7 +143,7 @@
      * }
      * ```
      *
-     * If serializer already registered for the given KClass in the given scope, a [SerializerAlreadyRegisteredException] is thrown.
+     * If serializer already registered for the given KClass in the given scope, a [IllegalArgumentException] is thrown.
      * To override registered serializers, combine built module with another using
      * [SerialModule.overwriteWith].
      *
@@ -244,3 +244,11 @@
     internal fun build(): SerialModule =
         SerialModuleImpl(class2Serializer, polyBase2Serializers, polyBase2NamedSerializers, polyBase2DefaultProvider)
 }
+
+private class SerializerAlreadyRegisteredException internal constructor(msg: String) : IllegalArgumentException(msg) {
+    internal constructor(
+        baseClass: KClass<*>,
+        concreteClass: KClass<*>
+    ) : this("Serializer for $concreteClass already registered in the scope of $baseClass")
+}
+
diff --git a/runtime/commonMain/src/kotlinx/serialization/modules/SerializerAlreadyRegisteredException.kt b/runtime/commonMain/src/kotlinx/serialization/modules/SerializerAlreadyRegisteredException.kt
deleted file mode 100644
index 5cd5bb1..0000000
--- a/runtime/commonMain/src/kotlinx/serialization/modules/SerializerAlreadyRegisteredException.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-
-package kotlinx.serialization.modules
-
-import kotlinx.serialization.*
-import kotlin.reflect.*
-
-/**
- * Thrown on an attempt to register serializer (for contextual or polymorphic serialization)
- * for some class twice.
- *
- * Registering in the same module twice is prohibited. In case you are combining modules
- * with [SerialModule.plus], consider using [SerialModule.overwriteWith] if you want overwriting behaviour.
- */
-@InternalSerializationApi // Will be hidden in the next release
-public class SerializerAlreadyRegisteredException internal constructor(msg: String) : IllegalArgumentException(msg) {
-    internal constructor(
-        baseClass: KClass<*>,
-        concreteClass: KClass<*>
-    ) : this("Serializer for $concreteClass already registered in the scope of $baseClass")
-
-    internal constructor(forClass: KClass<*>) : this("Serializer for $forClass already registered in this module")
-}
diff --git a/runtime/commonTest/src/kotlinx/serialization/modules/ModuleBuildersTest.kt b/runtime/commonTest/src/kotlinx/serialization/modules/ModuleBuildersTest.kt
index 220423f..8b02c74 100644
--- a/runtime/commonTest/src/kotlinx/serialization/modules/ModuleBuildersTest.kt
+++ b/runtime/commonTest/src/kotlinx/serialization/modules/ModuleBuildersTest.kt
@@ -152,7 +152,7 @@
     fun testOverwriteSerializer() {
         val moduleA = SerializersModule {
             contextual(A::class, ASerializer)
-            assertFailsWith<SerializerAlreadyRegisteredException> {
+            assertFailsWith<IllegalArgumentException> {
                 contextual(A::class, object : KSerializer<A> by A.serializer() {})
             }
         }
@@ -173,7 +173,7 @@
         val incorrect = serializersModuleOf(mapOf<KClass<*>, KSerializer<*>>(A::class to BSerializer))
         val correct = serializersModuleOf(mapOf<KClass<*>, KSerializer<*>>(A::class to ASerializer))
         correct.assertModuleHas(aSerializer = true, bSerializer = false)
-        assertFailsWith<SerializerAlreadyRegisteredException> {
+        assertFailsWith<IllegalArgumentException> {
             incorrect + correct
         }
     }
@@ -261,7 +261,7 @@
     fun testThrowOnTheSamePolymorphicSerializer() {
         val m1 = SerializersModule { polymorphic<Any> { A::class with A.serializer() } }
         val m2 = SerializersModule { polymorphic<Any> { A::class with ASerializer } }
-        assertFailsWith<SerializerAlreadyRegisteredException> { m1 + m2 }
+        assertFailsWith<IllegalArgumentException> { m1 + m2 }
     }
 
     @Test
diff --git a/runtime/jsMain/src/kotlinx/io/Buffers.kt b/runtime/jsMain/src/kotlinx/io/Buffers.kt
deleted file mode 100644
index 8fb11f9..0000000
--- a/runtime/jsMain/src/kotlinx/io/Buffers.kt
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-@file:Suppress(
-    "DEPRECATION_ERROR", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING",
-    "NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING"
-)
-package kotlinx.io
-
-import org.khronos.webgl.*
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-actual class ByteBuffer private constructor(val capacity: Int) {
-
-    init {
-        require(capacity >= 0)
-    }
-
-    private val dw = DataView(ArrayBuffer(capacity), 0, capacity)
-
-    var limit: Int = capacity
-        set(value) {
-            require(value in 0..capacity)
-            field = value
-            if (position > value) {
-                position = value
-            }
-        }
-
-    var position: Int = 0
-        set(newPosition) {
-            require(newPosition in 0..limit)
-            field = newPosition
-        }
-
-    actual fun clear(): ByteBuffer {
-        position = 0
-        limit = capacity
-        return this
-    }
-
-    actual fun flip(): ByteBuffer {
-        limit = position
-        position = 0
-        return this
-    }
-
-    val hasRemaining: Boolean
-        get() = position < limit
-
-    val remaining: Int
-        get() = limit - position
-
-    fun rewind(): ByteBuffer {
-        position = 0
-        return this
-    }
-
-    var order: ByteOrder = ByteOrder.BIG_ENDIAN
-    actual fun order(order: ByteOrder): ByteBuffer {
-        this.order = order
-        return this
-    }
-
-    private fun idx(index: Int, size: Int): Int {
-        val i = if (index == -1) {
-            position += size
-            position - size
-        } else index
-        if (i > limit) throw IllegalArgumentException()
-        return i
-    }
-
-    actual fun get(): Byte = get(-1)
-    actual fun get(index: Int): Byte {
-        val i = idx(index, 1)
-        return dw.getInt8(i)
-    }
-
-    actual fun get(dst: ByteArray, offset: Int, cnt: Int): Unit {
-        val pos = idx(-1, cnt)
-        for (i in 0 until cnt) {
-            dst[offset + i] = dw.getInt8(pos + i)
-        }
-    }
-
-    actual fun getChar() = getChar(-1)
-    actual fun getChar(index: Int): Char {
-        val i = idx(index, 2)
-        return dw.getUint16(i, order == ByteOrder.LITTLE_ENDIAN).toChar()
-    }
-
-    actual fun getShort() = getShort(-1)
-    actual fun getShort(index: Int): Short {
-        val i = idx(index, 2)
-        return dw.getInt16(i, order == ByteOrder.LITTLE_ENDIAN)
-    }
-
-    actual fun getInt() = getInt(-1)
-    actual fun getInt(index: Int): Int {
-        val i = idx(index, 4)
-        return dw.getInt32(i, order == ByteOrder.LITTLE_ENDIAN)
-    }
-
-    actual fun getLong() = getLong(-1)
-    actual fun getLong(index: Int): Long {
-        val low:Int
-        val high:Int
-        val scndIdx = if (index == -1) -1 else index + 4
-        if (order == ByteOrder.LITTLE_ENDIAN) {
-            low = getInt(index)
-            high = getInt(scndIdx)
-        } else {
-            high = getInt(index)
-            low = getInt(scndIdx)
-        }
-        return ((high.toLong() shl 32) or (low.toLong() and 0xFFFFFFFF))
-    }
-
-    actual fun getFloat() = getFloat(-1)
-    actual fun getFloat(index: Int): Float {
-        val i = idx(index, 4)
-        return dw.getFloat32(i, order == ByteOrder.LITTLE_ENDIAN)
-    }
-
-    actual fun getDouble() = getDouble(-1)
-    actual fun getDouble(index: Int): Double {
-        val i = idx(index, 8)
-        return dw.getFloat64(i, order == ByteOrder.LITTLE_ENDIAN)
-    }
-
-    actual fun put(value: Byte): ByteBuffer = put(value, -1)
-    actual fun put(value: Byte, index: Int): ByteBuffer {
-        val i = idx(index, 1)
-        dw.setInt8(i, value)
-        return this
-    }
-
-    actual fun put(src: ByteArray) = put(src, 0, src.size)
-    actual fun put(src: ByteArray, offset: Int, cnt: Int): ByteBuffer {
-        val pos = idx(-1, cnt)
-        for (i in 0 until cnt) {
-            dw.setInt8(pos + i, src[offset + i])
-        }
-        return this
-    }
-
-    actual fun putChar(value: Char) = putChar(value, -1)
-    actual fun putChar(value: Char, index: Int): ByteBuffer {
-        val i = idx(index, 2)
-        dw.setUint16(i, value.toShort(), order == ByteOrder.LITTLE_ENDIAN)
-        return this
-    }
-
-    actual fun putShort(value: Short) = putShort(value, -1)
-    actual fun putShort(value: Short, index: Int): ByteBuffer {
-        val i = idx(index, 2)
-        dw.setInt16(i, value, order == ByteOrder.LITTLE_ENDIAN)
-        return this
-    }
-
-    actual fun putInt(value: Int) = putInt(value, -1)
-    actual fun putInt(value: Int, index: Int): ByteBuffer {
-        val i = idx(index, 4)
-        dw.setInt32(i, value, order == ByteOrder.LITTLE_ENDIAN)
-        return this
-    }
-
-    actual fun putLong(value: Long) = putLong(value, -1)
-    actual fun putLong(value: Long, index: Int): ByteBuffer {
-        val high = (value shr 32).toInt()
-        val low = (value and 0xFFFFFFFFL).toInt()
-        val scndIdx = if (index == -1) -1 else index + 4
-        if (order == ByteOrder.LITTLE_ENDIAN) {
-            putInt(low, index)
-            putInt(high, scndIdx)
-        } else {
-            putInt(high, index)
-            putInt(low, scndIdx)
-        }
-        return this
-    }
-
-    actual fun putFloat(value: Float) = putFloat(value, -1)
-    actual fun putFloat(value: Float, index: Int): ByteBuffer {
-        val i = idx(index, 4)
-        dw.setFloat32(i, value, order == ByteOrder.LITTLE_ENDIAN)
-        return this
-    }
-
-    actual fun putDouble(value: Double) = putDouble(value, -1)
-    actual fun putDouble(value: Double, index: Int): ByteBuffer {
-        val i = idx(index, 8)
-        dw.setFloat64(i, value, order == ByteOrder.LITTLE_ENDIAN)
-        return this
-    }
-
-    actual fun array(): ByteArray {
-        val out = ByteArray(limit)
-        for (i in 0 until limit) {
-            out[i] = dw.getInt8(i)
-        }
-        return out
-    }
-
-    actual companion object {
-        actual fun allocate(capacity: Int) = ByteBuffer(capacity)
-    }
-}
diff --git a/runtime/jvmMain/src/kotlinx/io/Buffers.kt b/runtime/jvmMain/src/kotlinx/io/Buffers.kt
deleted file mode 100644
index cbf531a..0000000
--- a/runtime/jvmMain/src/kotlinx/io/Buffers.kt
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-@file:Suppress(
-    "DEPRECATION_ERROR", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING",
-    "NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING"
-)
-package kotlinx.io
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-typealias JByteBuffer = java.nio.ByteBuffer
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-typealias JByteOrder = java.nio.ByteOrder
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-actual class ByteBuffer private constructor() {
-    private lateinit var dw: JByteBuffer
-    constructor(dw: JByteBuffer): this() {
-        this.dw = dw
-    }
-    actual fun order(order: ByteOrder): ByteBuffer { dw.order(if (order == ByteOrder.LITTLE_ENDIAN) JByteOrder.LITTLE_ENDIAN else JByteOrder.BIG_ENDIAN); return this;}
-    actual fun clear(): ByteBuffer { dw.clear(); return this;}
-    actual fun flip(): ByteBuffer { dw.flip(); return this;}
-
-    actual fun get(): Byte = dw.get()
-    actual fun get(index: Int): Byte = dw.get(index)
-    actual fun get(dst: ByteArray, offset: Int, cnt: Int): Unit {dw.get(dst, offset, cnt)}
-    actual fun getChar(): Char = dw.getChar()
-    actual fun getChar(index: Int): Char = dw.getChar(index)
-    actual fun getShort(): Short = dw.getShort()
-    actual fun getShort(index: Int): Short = dw.getShort(index)
-    actual fun getInt(): Int = dw.getInt()
-    actual fun getInt(index: Int): Int = dw.getInt(index)
-    actual fun getLong(): Long = dw.getLong()
-    actual fun getLong(index: Int): Long = dw.getLong(index)
-    actual fun getFloat(): Float = dw.getFloat()
-    actual fun getFloat(index: Int): Float = dw.getFloat(index)
-    actual fun getDouble(): Double = dw.getDouble()
-    actual fun getDouble(index: Int): Double = dw.getDouble(index)
-
-
-    actual fun put(value: Byte): ByteBuffer {dw.put(value); return this}
-    actual fun put(value: Byte, index: Int): ByteBuffer {dw.put(index, value); return this}
-    actual fun put(src: ByteArray): ByteBuffer {dw.put(src); return this;}
-    actual fun put(src: ByteArray, offset: Int, cnt: Int): ByteBuffer {dw.put(src, offset, cnt); return this;}
-
-    actual fun putChar(value: Char): ByteBuffer {dw.putChar(value); return this}
-    actual fun putChar(value: Char, index: Int): ByteBuffer {dw.putChar(index, value); return this}
-    actual fun putShort(value: Short): ByteBuffer {dw.putShort(value); return this}
-    actual fun putShort(value: Short, index: Int): ByteBuffer {dw.putShort(index, value); return this}
-    actual fun putInt(value: Int): ByteBuffer {dw.putInt(value); return this}
-    actual fun putInt(value: Int, index: Int): ByteBuffer {dw.putInt(index, value); return this}
-    actual fun putLong(value: Long): ByteBuffer {dw.putLong(value); return this}
-    actual fun putLong(value: Long, index: Int): ByteBuffer {dw.putLong(index, value); return this}
-    actual fun putFloat(value: Float): ByteBuffer {dw.putFloat(value); return this}
-    actual fun putFloat(value: Float, index: Int): ByteBuffer {dw.putFloat(index, value); return this}
-    actual fun putDouble(value: Double): ByteBuffer {dw.putDouble(value); return this}
-    actual fun putDouble(value: Double, index: Int): ByteBuffer {dw.putDouble(index, value); return this}
-
-    actual fun array(): ByteArray = dw.array()
-    actual companion object {
-        actual fun allocate(capacity: Int) = ByteBuffer(java.nio.ByteBuffer.allocate(capacity))
-    }
-}
diff --git a/runtime/jvmMain/src/kotlinx/serialization/JvmResolving.kt b/runtime/jvmMain/src/kotlinx/serialization/JvmResolving.kt
index 1fb6581..a36b9bd 100644
--- a/runtime/jvmMain/src/kotlinx/serialization/JvmResolving.kt
+++ b/runtime/jvmMain/src/kotlinx/serialization/JvmResolving.kt
@@ -19,7 +19,7 @@
  * Consider using Kotlin's [typeOf] and [KType] since they can
  * also provide information about nullability.
  */
-@Deprecated("Consider using Kotlin type token instead", ReplaceWith("typeOf()"), level = DeprecationLevel.WARNING)
+@Deprecated("Consider using Kotlin type token instead", ReplaceWith("typeOf()"), level = DeprecationLevel.ERROR)
 public inline fun <reified T> typeTokenOf(): Type {
     val base = object : TypeBase<T>() {}
     val superType = base::class.java.genericSuperclass!!
diff --git a/runtime/jvmTest/src/kotlinx/serialization/features/ResolvingTest.kt b/runtime/jvmTest/src/kotlinx/serialization/features/SerializerByTypeTest.kt
similarity index 94%
rename from runtime/jvmTest/src/kotlinx/serialization/features/ResolvingTest.kt
rename to runtime/jvmTest/src/kotlinx/serialization/features/SerializerByTypeTest.kt
index 0e441be..cc97b7f 100644
--- a/runtime/jvmTest/src/kotlinx/serialization/features/ResolvingTest.kt
+++ b/runtime/jvmTest/src/kotlinx/serialization/features/SerializerByTypeTest.kt
@@ -13,7 +13,7 @@
 import java.lang.reflect.*
 import kotlin.test.*
 
-class ResolvingTest {
+class SerializerByTypeTest {
 
     val unquoted = Json { unquotedPrint = true }
 
@@ -176,4 +176,10 @@
         val serial = serializerByTypeToken(token)
         assertEquals(SerializableObject.serializer().descriptor, serial.descriptor)
     }
+
+    public inline fun <reified T> typeTokenOf(): Type {
+        val base = object : TypeBase<T>() {}
+        val superType = base::class.java.genericSuperclass!!
+        return (superType as ParameterizedType).actualTypeArguments.first()!!
+    }
 }
diff --git a/runtime/nativeMain/src/kotlinx/io/Buffers.kt b/runtime/nativeMain/src/kotlinx/io/Buffers.kt
deleted file mode 100644
index 8b3575b..0000000
--- a/runtime/nativeMain/src/kotlinx/io/Buffers.kt
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
- */
-@file:Suppress(
-    "DEPRECATION_ERROR", "NO_EXPLICIT_VISIBILITY_IN_API_MODE_WARNING",
-    "NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING"
-)
-package kotlinx.io
-
-@Deprecated(message = message, level = DeprecationLevel.ERROR)
-actual class ByteBuffer private constructor(private var backingArray: ByteArray) {
-
-    private var idx = 0
-
-    actual companion object {
-        actual fun allocate(capacity: Int): ByteBuffer = ByteBuffer(ByteArray(capacity))
-    }
-
-    private var order: ByteOrder = ByteOrder.BIG_ENDIAN
-
-    actual fun order(order: ByteOrder): ByteBuffer {
-        this.order = order
-        return this
-    }
-
-    actual fun clear(): ByteBuffer {
-        backingArray = ByteArray(backingArray.size)
-        idx = 0
-        return this
-    }
-
-    actual fun flip(): ByteBuffer {
-        idx = 0
-        return this
-    }
-
-    actual fun get(): Byte {
-        return backingArray[idx++]
-    }
-
-    actual fun getChar() = transformToInt(backingArray[idx++], backingArray[idx++], bytesToRead = 2).toChar()
-    actual fun getShort() = transformToInt(backingArray[idx++], backingArray[idx++], bytesToRead = 2).toShort()
-    actual fun getInt() = transformToInt(
-            backingArray[idx++],
-            backingArray[idx++],
-            backingArray[idx++],
-            backingArray[idx++],
-            bytesToRead = 4
-    )
-
-    actual fun getFloat() = Float.fromBits(
-            transformToInt(
-                    backingArray[idx++],
-                    backingArray[idx++],
-                    backingArray[idx++],
-                    backingArray[idx++],
-                    bytesToRead = 4
-            )
-    )
-
-    private fun transformToInt(vararg bytes: Byte, bytesToRead: Int): Int {
-        if (order != ByteOrder.LITTLE_ENDIAN) {
-            var r: Int = 0
-            if (bytesToRead > 2) {
-                r = r or (((bytes.getOrNull(0) ?: 0).toInt() and 0xFF) shl 24)
-                r = r or (((bytes.getOrNull(1) ?: 0).toInt() and 0xFF) shl 16)
-            }
-            val offset = if (bytesToRead == 2) 0 else 2
-            r = r or (((bytes.getOrNull(offset) ?: 0).toInt() and 0xFF) shl 8)
-            r = r or (((bytes.getOrNull(offset + 1) ?: 0).toInt() and 0xFF) shl 0)
-            return r
-        } else {
-            var r: Int = 0
-            r = r or (((bytes.getOrNull(0) ?: 0).toInt() and 0xFF) shl 0)
-            r = r or (((bytes.getOrNull(1) ?: 0).toInt() and 0xFF) shl 8)
-            r = r or (((bytes.getOrNull(2) ?: 0).toInt() and 0xFF) shl 16)
-            r = r or (((bytes.getOrNull(3) ?: 0).toInt() and 0xFF) shl 24)
-            return r
-        }
-    }
-
-    private fun transformFromInt(i: Int, bytesToWrite: Int) {
-        val b0 = (i ushr 24).toByte()
-        val b1 = (i ushr 16).toByte()
-        val b2 = (i ushr 8).toByte()
-        val b3 = (i).toByte()
-        if (order != ByteOrder.LITTLE_ENDIAN) {
-            if (bytesToWrite > 2) {
-                backingArray[idx++] = b0
-                backingArray[idx++] = b1
-            }
-            backingArray[idx++] = b2
-            backingArray[idx++] = b3
-        } else {
-            backingArray[idx++] = b3
-            if (bytesToWrite < 2) return
-            backingArray[idx++] = b2
-            if (bytesToWrite < 4) return
-            backingArray[idx++] = b1
-            backingArray[idx++] = b0
-        }
-    }
-
-    actual fun put(value: Byte): ByteBuffer {
-        backingArray[idx++] = value
-        return this
-    }
-
-    actual fun putChar(value: Char): ByteBuffer {
-        transformFromInt(value.toInt() and 0xFFFF, 2)
-        return this
-    }
-
-    actual fun putShort(value: Short): ByteBuffer {
-        transformFromInt(value.toInt() and 0xFFFF, 2)
-        return this
-    }
-
-    actual fun putInt(value: Int): ByteBuffer {
-        transformFromInt(value, 4)
-        return this
-    }
-
-    actual fun putFloat(value: Float): ByteBuffer {
-        transformFromInt(value.toBits(), 4)
-        return this
-    }
-
-    actual fun array(): ByteArray {
-        return backingArray
-    }
-
-    actual fun put(src: ByteArray): ByteBuffer {
-        for (i in src) backingArray[idx++] = i
-        return this
-    }
-
-    actual fun getLong(): Long {
-        val baseOffset = idx
-        var bytes: Long = 0
-        if (order != ByteOrder.LITTLE_ENDIAN) {
-            for (i in 0..7) {
-                bytes = bytes shl 8
-                bytes = bytes or (backingArray[baseOffset + i].toInt() and 0xFF).toLong()
-            }
-        } else {
-            for (i in 7 downTo 0) {
-                bytes = bytes shl 8
-                bytes = bytes or (backingArray[baseOffset + i].toInt() and 0xFF).toLong()
-            }
-        }
-        idx += 8
-        return bytes
-    }
-
-    actual fun getDouble(): Double {
-        return Double.fromBits(getLong())
-    }
-
-    @Suppress("NAME_SHADOWING")
-    actual fun putLong(value: Long): ByteBuffer {
-        var value = value
-        val baseOffset = idx
-        if (order != ByteOrder.LITTLE_ENDIAN) {
-            for (i in 7 downTo 0) {
-                backingArray[baseOffset + i] = (value and 0xFF).toByte()
-                value = value shr 8
-            }
-        } else {
-            for (i in 0..7) {
-                backingArray[baseOffset + i] = (value and 0xFF).toByte()
-                value = value shr 8
-            }
-        }
-        idx += 8
-        return this
-    }
-
-    actual fun putDouble(value: Double): ByteBuffer {
-        return putLong(value.toBits())
-    }
-
-    actual fun get(index: Int): Byte {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun get(dst: ByteArray, offset: Int, cnt: Int) {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun getChar(index: Int): Char {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun getShort(index: Int): Short {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun getInt(index: Int): Int {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun getLong(index: Int): Long {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun getFloat(index: Int): Float {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun getDouble(index: Int): Double {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun put(value: Byte, index: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun put(src: ByteArray, offset: Int, cnt: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun putChar(value: Char, index: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun putShort(value: Short, index: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun putInt(value: Int, index: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun putLong(value: Long, index: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun putFloat(value: Float, index: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-
-    actual fun putDouble(value: Double, index: Int): ByteBuffer {
-        TODO("Native is not supported yet")
-    }
-}