Enable explicit API for all savedstate projects

- Remove no-op kotlin { explicitApi = ExplicitApiMode.Strict }
- Remove legacyDisableKotlinStrictApiMode = true
- Fix any missing declarations

Test: ./gradlew -p savedstate build
Change-Id: I162de786a5a3e4f241dcd88e27bab6a934c7bc53
diff --git a/savedstate/savedstate-compose/build.gradle b/savedstate/savedstate-compose/build.gradle
index fcb5297..729ff50 100644
--- a/savedstate/savedstate-compose/build.gradle
+++ b/savedstate/savedstate-compose/build.gradle
@@ -22,10 +22,6 @@
     jvmStubs()
     linuxX64Stubs()
 
-    kotlin {
-        explicitApi = ExplicitApiMode.Strict
-    }
-
     defaultPlatform(PlatformIdentifier.ANDROID)
 
     sourceSets {
@@ -99,7 +95,6 @@
     samples(project(":savedstate:savedstate-compose"))
     inceptionYear = "2018"
     description = "Compose integration with Saved State"
-    legacyDisableKotlinStrictApiMode = true
     metalavaK2UastEnabled = false
     kotlinTarget = KotlinTarget.KOTLIN_1_9
 }
diff --git a/savedstate/savedstate-compose/src/androidMain/kotlin/androidx/savedstate/compose/LocalSavedStateRegistryOwner.android.kt b/savedstate/savedstate-compose/src/androidMain/kotlin/androidx/savedstate/compose/LocalSavedStateRegistryOwner.android.kt
index 547f05e..fc94ea0 100644
--- a/savedstate/savedstate-compose/src/androidMain/kotlin/androidx/savedstate/compose/LocalSavedStateRegistryOwner.android.kt
+++ b/savedstate/savedstate-compose/src/androidMain/kotlin/androidx/savedstate/compose/LocalSavedStateRegistryOwner.android.kt
@@ -36,30 +36,32 @@
  * Please note that backward compatibility reflection may be removed once Compose >= 1.8 is stable.
  * A Gradle dependency constraint will be put in place to ensure smooth migration for clients.
  */
-actual val LocalSavedStateRegistryOwner: ProvidableCompositionLocal<SavedStateRegistryOwner> = run {
-    val compositionLocalFromComposeUi = runCatching {
-        // Use the CompositionLocal class to find the `classLoader` from the `Application`.
-        val classLoader = SavedStateRegistryOwner::class.java.classLoader!!
-        // Top-level class name from Compose UI 1.6.* that holds the old CompositionLocal.
-        val className = "androidx.compose.ui.platform.AndroidCompositionLocals_androidKt"
-        // The Java getter used when accessing the CompositionLocal property in Kotlin.
-        val methodName = "getLocalSavedStateRegistryOwner"
+public actual val LocalSavedStateRegistryOwner:
+    ProvidableCompositionLocal<SavedStateRegistryOwner> =
+    run {
+        val compositionLocalFromComposeUi = runCatching {
+            // Use the CompositionLocal class to find the `classLoader` from the `Application`.
+            val classLoader = SavedStateRegistryOwner::class.java.classLoader!!
+            // Top-level class name from Compose UI 1.6.* that holds the old CompositionLocal.
+            val className = "androidx.compose.ui.platform.AndroidCompositionLocals_androidKt"
+            // The Java getter used when accessing the CompositionLocal property in Kotlin.
+            val methodName = "getLocalSavedStateRegistryOwner"
 
-        val methodRef = classLoader.loadClass(className).getMethod(methodName)
-        if (methodRef.annotations.none { it is Deprecated }) {
-            // If the method IS NOT deprecated, we are running with Compose 1.6.*.
-            // We use reflection to access the older CompositionLocal from `compose-ui`.
-            @Suppress("UNCHECKED_CAST", "BanUncheckedReflection")
-            methodRef.invoke(null) as? ProvidableCompositionLocal<SavedStateRegistryOwner>
-        } else {
-            // If the method IS deprecated, we are running with Compose 1.7.*.
-            // The new CompositionLocal is available, no reflection needed.
-            null
+            val methodRef = classLoader.loadClass(className).getMethod(methodName)
+            if (methodRef.annotations.none { it is Deprecated }) {
+                // If the method IS NOT deprecated, we are running with Compose 1.6.*.
+                // We use reflection to access the older CompositionLocal from `compose-ui`.
+                @Suppress("UNCHECKED_CAST", "BanUncheckedReflection")
+                methodRef.invoke(null) as? ProvidableCompositionLocal<SavedStateRegistryOwner>
+            } else {
+                // If the method IS deprecated, we are running with Compose 1.7.*.
+                // The new CompositionLocal is available, no reflection needed.
+                null
+            }
         }
+
+        return@run compositionLocalFromComposeUi.getOrNull()
+            ?: staticCompositionLocalOf<SavedStateRegistryOwner> {
+                error("CompositionLocal LocalSavedStateRegistryOwner not present")
+            }
     }
-
-    return@run compositionLocalFromComposeUi.getOrNull()
-        ?: staticCompositionLocalOf<SavedStateRegistryOwner> {
-            error("CompositionLocal LocalSavedStateRegistryOwner not present")
-        }
-}
diff --git a/savedstate/savedstate/build.gradle b/savedstate/savedstate/build.gradle
index 91ce8e0..e74d23c 100644
--- a/savedstate/savedstate/build.gradle
+++ b/savedstate/savedstate/build.gradle
@@ -25,10 +25,6 @@
     linux()
     mac()
 
-    kotlin {
-        explicitApi = ExplicitApiMode.Strict
-    }
-
     defaultPlatform(PlatformIdentifier.ANDROID)
 
     sourceSets {
@@ -174,7 +170,6 @@
     samples(project(":savedstate:savedstate-samples"))
     inceptionYear = "2018"
     description = "Android Lifecycle Saved State"
-    legacyDisableKotlinStrictApiMode = true
     metalavaK2UastEnabled = false
     kotlinTarget = KotlinTarget.KOTLIN_1_9
 }
diff --git a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateReader.android.kt b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateReader.android.kt
index f12b21c..7e7452f 100644
--- a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateReader.android.kt
+++ b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateReader.android.kt
@@ -34,7 +34,7 @@
 
 @Suppress("ValueClassDefinition")
 @JvmInline
-actual value class SavedStateReader
+public actual value class SavedStateReader
 @PublishedApi
 internal actual constructor(
     @PublishedApi internal actual val source: SavedState,
@@ -47,7 +47,7 @@
      * @return The value associated with the [key].
      * @throws IllegalStateException If the key is not found.
      */
-    inline fun getBinder(key: String): IBinder {
+    public inline fun getBinder(key: String): IBinder {
         if (key !in this) keyNotFoundError(key)
         return source.getBinder(key) ?: valueNotFoundError(key)
     }
@@ -62,32 +62,32 @@
      * @return The value associated with the [key], or the result of [defaultValue] if the key is
      *   not found or the associated value has the wrong type.
      */
-    inline fun getBinderOrElse(key: String, defaultValue: () -> IBinder): IBinder {
+    public inline fun getBinderOrElse(key: String, defaultValue: () -> IBinder): IBinder {
         if (key !in this) defaultValue()
         return source.getBinder(key) ?: defaultValue()
     }
 
-    actual inline fun getBoolean(key: String): Boolean {
+    public actual inline fun getBoolean(key: String): Boolean {
         if (key !in this) keyNotFoundError(key)
         return source.getBoolean(key, DEFAULT_BOOLEAN)
     }
 
-    actual inline fun getBooleanOrElse(key: String, defaultValue: () -> Boolean): Boolean {
+    public actual inline fun getBooleanOrElse(key: String, defaultValue: () -> Boolean): Boolean {
         if (key !in this) defaultValue()
         return source.getBoolean(key, defaultValue())
     }
 
-    actual inline fun getChar(key: String): Char {
+    public actual inline fun getChar(key: String): Char {
         if (key !in this) keyNotFoundError(key)
         return source.getChar(key, DEFAULT_CHAR)
     }
 
-    actual inline fun getCharSequence(key: String): CharSequence {
+    public actual inline fun getCharSequence(key: String): CharSequence {
         if (key !in this) keyNotFoundError(key)
         return source.getCharSequence(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getCharSequenceOrElse(
+    public actual inline fun getCharSequenceOrElse(
         key: String,
         defaultValue: () -> CharSequence
     ): CharSequence {
@@ -95,47 +95,47 @@
         return source.getCharSequence(key) ?: defaultValue()
     }
 
-    actual inline fun getCharOrElse(key: String, defaultValue: () -> Char): Char {
+    public actual inline fun getCharOrElse(key: String, defaultValue: () -> Char): Char {
         if (key !in this) defaultValue()
         return source.getChar(key, defaultValue())
     }
 
-    actual inline fun getDouble(key: String): Double {
+    public actual inline fun getDouble(key: String): Double {
         if (key !in this) keyNotFoundError(key)
         return source.getDouble(key, DEFAULT_DOUBLE)
     }
 
-    actual inline fun getDoubleOrElse(key: String, defaultValue: () -> Double): Double {
+    public actual inline fun getDoubleOrElse(key: String, defaultValue: () -> Double): Double {
         if (key !in this) defaultValue()
         return source.getDouble(key, defaultValue())
     }
 
-    actual inline fun getFloat(key: String): Float {
+    public actual inline fun getFloat(key: String): Float {
         if (key !in this) keyNotFoundError(key)
         return source.getFloat(key, DEFAULT_FLOAT)
     }
 
-    actual inline fun getFloatOrElse(key: String, defaultValue: () -> Float): Float {
+    public actual inline fun getFloatOrElse(key: String, defaultValue: () -> Float): Float {
         if (key !in this) defaultValue()
         return source.getFloat(key, defaultValue())
     }
 
-    actual inline fun getInt(key: String): Int {
+    public actual inline fun getInt(key: String): Int {
         if (key !in this) keyNotFoundError(key)
         return source.getInt(key, DEFAULT_INT)
     }
 
-    actual inline fun getIntOrElse(key: String, defaultValue: () -> Int): Int {
+    public actual inline fun getIntOrElse(key: String, defaultValue: () -> Int): Int {
         if (key !in this) defaultValue()
         return source.getInt(key, defaultValue())
     }
 
-    actual inline fun getLong(key: String): Long {
+    public actual inline fun getLong(key: String): Long {
         if (key !in this) keyNotFoundError(key)
         return source.getLong(key, DEFAULT_LONG)
     }
 
-    actual inline fun getLongOrElse(key: String, defaultValue: () -> Long): Long {
+    public actual inline fun getLongOrElse(key: String, defaultValue: () -> Long): Long {
         if (key !in this) defaultValue()
         return source.getLong(key, defaultValue())
     }
@@ -147,7 +147,7 @@
      * @return The value associated with the [key].
      * @throws IllegalStateException If the key is not found.
      */
-    inline fun <reified T : Parcelable> getParcelable(key: String): T {
+    public inline fun <reified T : Parcelable> getParcelable(key: String): T {
         if (key !in this) keyNotFoundError(key)
         return getParcelable(source, key, T::class.java) ?: valueNotFoundError(key)
     }
@@ -162,7 +162,10 @@
      * @return The value associated with the [key], or the result of [defaultValue] if the key is
      *   not found or the associated value has the wrong type.
      */
-    inline fun <reified T : Parcelable> getParcelableOrElse(key: String, defaultValue: () -> T): T {
+    public inline fun <reified T : Parcelable> getParcelableOrElse(
+        key: String,
+        defaultValue: () -> T
+    ): T {
         if (key !in this) defaultValue()
         return getParcelable(source, key, T::class.java) ?: defaultValue()
     }
@@ -174,7 +177,7 @@
      * @return The value associated with the [key].
      * @throws IllegalStateException If the key is not found.
      */
-    inline fun <reified T : Serializable> getJavaSerializable(key: String): T {
+    public inline fun <reified T : Serializable> getJavaSerializable(key: String): T {
         if (key !in this) keyNotFoundError(key)
         return getSerializable(source, key, T::class.java) ?: valueNotFoundError(key)
     }
@@ -189,7 +192,7 @@
      * @return The value associated with the [key], or the result of [defaultValue] if the key is
      *   not found or the associated value has the wrong type.
      */
-    inline fun <reified T : Serializable> getJavaSerializableOrElse(
+    public inline fun <reified T : Serializable> getJavaSerializableOrElse(
         key: String,
         defaultValue: () -> T
     ): T {
@@ -204,7 +207,7 @@
      * @return The value associated with the [key].
      * @throws IllegalStateException If the key is not found.
      */
-    inline fun getSize(key: String): Size {
+    public inline fun getSize(key: String): Size {
         if (key !in this) keyNotFoundError(key)
         return source.getSize(key) ?: valueNotFoundError(key)
     }
@@ -219,7 +222,7 @@
      * @return The value associated with the [key], or the result of [defaultValue] if the key is
      *   not found or the associated value has the wrong type.
      */
-    inline fun getSizeOrElse(key: String, defaultValue: () -> Size): Size {
+    public inline fun getSizeOrElse(key: String, defaultValue: () -> Size): Size {
         if (key !in this) defaultValue()
         return source.getSize(key) ?: defaultValue()
     }
@@ -231,7 +234,7 @@
      * @return The value associated with the [key].
      * @throws IllegalStateException If the key is not found.
      */
-    inline fun getSizeF(key: String): SizeF {
+    public inline fun getSizeF(key: String): SizeF {
         if (key !in this) keyNotFoundError(key)
         return source.getSizeF(key) ?: valueNotFoundError(key)
     }
@@ -246,37 +249,40 @@
      * @return The value associated with the [key], or the result of [defaultValue] if the key is
      *   not found or the associated value has the wrong type.
      */
-    inline fun getSizeFOrElse(key: String, defaultValue: () -> SizeF): SizeF {
+    public inline fun getSizeFOrElse(key: String, defaultValue: () -> SizeF): SizeF {
         if (key !in this) defaultValue()
         return source.getSizeF(key) ?: defaultValue()
     }
 
-    actual inline fun getString(key: String): String {
+    public actual inline fun getString(key: String): String {
         if (key !in this) keyNotFoundError(key)
         return source.getString(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getStringOrElse(key: String, defaultValue: () -> String): String {
+    public actual inline fun getStringOrElse(key: String, defaultValue: () -> String): String {
         if (key !in this) defaultValue()
         return source.getString(key, defaultValue())
     }
 
-    actual inline fun getIntList(key: String): List<Int> {
+    public actual inline fun getIntList(key: String): List<Int> {
         if (key !in this) keyNotFoundError(key)
         return source.getIntegerArrayList(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getIntListOrElse(key: String, defaultValue: () -> List<Int>): List<Int> {
+    public actual inline fun getIntListOrElse(
+        key: String,
+        defaultValue: () -> List<Int>
+    ): List<Int> {
         if (key !in this) defaultValue()
         return source.getIntegerArrayList(key) ?: defaultValue()
     }
 
-    actual inline fun getCharSequenceList(key: String): List<CharSequence> {
+    public actual inline fun getCharSequenceList(key: String): List<CharSequence> {
         if (key !in this) keyNotFoundError(key)
         return source.getCharSequenceArrayList(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getCharSequenceListOrElse(
+    public actual inline fun getCharSequenceListOrElse(
         key: String,
         defaultValue: () -> List<CharSequence>
     ): List<CharSequence> {
@@ -284,12 +290,12 @@
         return source.getCharSequenceArrayList(key) ?: defaultValue()
     }
 
-    actual inline fun getStringList(key: String): List<String> {
+    public actual inline fun getStringList(key: String): List<String> {
         if (key !in this) keyNotFoundError(key)
         return source.getStringArrayList(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getStringListOrElse(
+    public actual inline fun getStringListOrElse(
         key: String,
         defaultValue: () -> List<String>
     ): List<String> {
@@ -305,7 +311,7 @@
      * @throws IllegalArgumentException If the [key] is not found.
      * @throws IllegalStateException if associated value has wrong type.
      */
-    inline fun <reified T : Parcelable> getParcelableList(key: String): List<T> {
+    public inline fun <reified T : Parcelable> getParcelableList(key: String): List<T> {
         if (key !in this) keyNotFoundError(key)
         return getParcelableArrayList(source, key, T::class.java) ?: valueNotFoundError(key)
     }
@@ -320,7 +326,7 @@
      * @return The value associated with the [key], or the result of [defaultValue] if the key is
      *   not found or the associated value has the wrong type.
      */
-    inline fun <reified T : Parcelable> getParcelableListOrElse(
+    public inline fun <reified T : Parcelable> getParcelableListOrElse(
         key: String,
         defaultValue: () -> List<T>
     ): List<T> {
@@ -328,12 +334,12 @@
         return getParcelableArrayList(source, key, T::class.java) ?: defaultValue()
     }
 
-    actual inline fun getBooleanArray(key: String): BooleanArray {
+    public actual inline fun getBooleanArray(key: String): BooleanArray {
         if (key !in this) keyNotFoundError(key)
         return source.getBooleanArray(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getBooleanArrayOrElse(
+    public actual inline fun getBooleanArrayOrElse(
         key: String,
         defaultValue: () -> BooleanArray
     ): BooleanArray {
@@ -341,24 +347,27 @@
         return source.getBooleanArray(key) ?: defaultValue()
     }
 
-    actual inline fun getCharArray(key: String): CharArray {
+    public actual inline fun getCharArray(key: String): CharArray {
         if (key !in this) keyNotFoundError(key)
         return source.getCharArray(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getCharArrayOrElse(key: String, defaultValue: () -> CharArray): CharArray {
+    public actual inline fun getCharArrayOrElse(
+        key: String,
+        defaultValue: () -> CharArray
+    ): CharArray {
         if (key !in this) defaultValue()
         return source.getCharArray(key) ?: defaultValue()
     }
 
     @Suppress("ArrayReturn")
-    actual inline fun getCharSequenceArray(key: String): Array<CharSequence> {
+    public actual inline fun getCharSequenceArray(key: String): Array<CharSequence> {
         if (key !in this) keyNotFoundError(key)
         return source.getCharSequenceArray(key) ?: valueNotFoundError(key)
     }
 
     @Suppress("ArrayReturn")
-    actual inline fun getCharSequenceArrayOrElse(
+    public actual inline fun getCharSequenceArrayOrElse(
         key: String,
         defaultValue: () -> Array<CharSequence>
     ): Array<CharSequence> {
@@ -366,12 +375,12 @@
         return source.getCharSequenceArray(key) ?: defaultValue()
     }
 
-    actual inline fun getDoubleArray(key: String): DoubleArray {
+    public actual inline fun getDoubleArray(key: String): DoubleArray {
         if (key !in this) keyNotFoundError(key)
         return source.getDoubleArray(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getDoubleArrayOrElse(
+    public actual inline fun getDoubleArrayOrElse(
         key: String,
         defaultValue: () -> DoubleArray
     ): DoubleArray {
@@ -379,42 +388,51 @@
         return source.getDoubleArray(key) ?: defaultValue()
     }
 
-    actual inline fun getFloatArray(key: String): FloatArray {
+    public actual inline fun getFloatArray(key: String): FloatArray {
         if (key !in this) keyNotFoundError(key)
         return source.getFloatArray(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getFloatArrayOrElse(key: String, defaultValue: () -> FloatArray): FloatArray {
+    public actual inline fun getFloatArrayOrElse(
+        key: String,
+        defaultValue: () -> FloatArray
+    ): FloatArray {
         if (key !in this) defaultValue()
         return source.getFloatArray(key) ?: defaultValue()
     }
 
-    actual inline fun getIntArray(key: String): IntArray {
+    public actual inline fun getIntArray(key: String): IntArray {
         if (key !in this) keyNotFoundError(key)
         return source.getIntArray(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getIntArrayOrElse(key: String, defaultValue: () -> IntArray): IntArray {
+    public actual inline fun getIntArrayOrElse(
+        key: String,
+        defaultValue: () -> IntArray
+    ): IntArray {
         if (key !in this) defaultValue()
         return source.getIntArray(key) ?: defaultValue()
     }
 
-    actual inline fun getLongArray(key: String): LongArray {
+    public actual inline fun getLongArray(key: String): LongArray {
         if (key !in this) keyNotFoundError(key)
         return source.getLongArray(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getLongArrayOrElse(key: String, defaultValue: () -> LongArray): LongArray {
+    public actual inline fun getLongArrayOrElse(
+        key: String,
+        defaultValue: () -> LongArray
+    ): LongArray {
         if (key !in this) defaultValue()
         return source.getLongArray(key) ?: defaultValue()
     }
 
-    actual inline fun getStringArray(key: String): Array<String> {
+    public actual inline fun getStringArray(key: String): Array<String> {
         if (key !in this) keyNotFoundError(key)
         return source.getStringArray(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getStringArrayOrElse(
+    public actual inline fun getStringArrayOrElse(
         key: String,
         defaultValue: () -> Array<String>
     ): Array<String> {
@@ -431,7 +449,7 @@
      * @throws IllegalStateException if associated value has wrong type.
      */
     @Suppress("ArrayReturn")
-    inline fun <reified T : Parcelable> getParcelableArray(key: String): Array<T> {
+    public inline fun <reified T : Parcelable> getParcelableArray(key: String): Array<T> {
         if (key !in this) keyNotFoundError(key)
         @Suppress("UNCHECKED_CAST")
         return getParcelableArray(source, key, T::class.java) as? Array<T>
@@ -449,7 +467,7 @@
      *   not found or the associated value has the wrong type.
      */
     @Suppress("ArrayReturn")
-    inline fun <reified T : Parcelable> getParcelableArrayOrElse(
+    public inline fun <reified T : Parcelable> getParcelableArrayOrElse(
         key: String,
         defaultValue: () -> Array<T>
     ): Array<T> {
@@ -466,7 +484,9 @@
      * @throws IllegalArgumentException If the [key] is not found.
      * @throws IllegalStateException if associated value has wrong type.
      */
-    inline fun <reified T : Parcelable> getSparseParcelableArray(key: String): SparseArray<T> {
+    public inline fun <reified T : Parcelable> getSparseParcelableArray(
+        key: String
+    ): SparseArray<T> {
         if (key !in this) keyNotFoundError(key)
         return getSparseParcelableArray(source, key, T::class.java) as? SparseArray<T>
             ?: valueNotFoundError(key)
@@ -482,7 +502,7 @@
      * @return The value associated with the [key], or the result of [defaultValue] if the key is
      *   not found or the associated value has the wrong type.
      */
-    inline fun <reified T : Parcelable> getSparseParcelableArrayOrElse(
+    public inline fun <reified T : Parcelable> getSparseParcelableArrayOrElse(
         key: String,
         defaultValue: () -> SparseArray<T>
     ): SparseArray<T> {
@@ -491,34 +511,38 @@
             ?: defaultValue()
     }
 
-    actual inline fun getSavedState(key: String): SavedState {
+    public actual inline fun getSavedState(key: String): SavedState {
         if (key !in this) keyNotFoundError(key)
         return source.getBundle(key) ?: valueNotFoundError(key)
     }
 
-    actual inline fun getSavedStateOrElse(key: String, defaultValue: () -> SavedState): SavedState {
+    public actual inline fun getSavedStateOrElse(
+        key: String,
+        defaultValue: () -> SavedState
+    ): SavedState {
         if (key !in this) defaultValue()
         return source.getBundle(key) ?: defaultValue()
     }
 
-    actual inline fun size(): Int = source.size()
+    public actual inline fun size(): Int = source.size()
 
-    actual inline fun isEmpty(): Boolean = source.isEmpty
+    public actual inline fun isEmpty(): Boolean = source.isEmpty
 
-    actual inline fun isNull(key: String): Boolean {
+    public actual inline fun isNull(key: String): Boolean {
         // Using `getString` to check for `null` is unreliable as it returns null for type
         // mismatches. To reliably determine if the value is actually `null`, we use the
         // deprecated `Bundle.get`.
         @Suppress("DEPRECATION") return contains(key) && source[key] == null
     }
 
-    actual inline operator fun contains(key: String): Boolean = source.containsKey(key)
+    public actual inline operator fun contains(key: String): Boolean = source.containsKey(key)
 
-    actual fun contentDeepEquals(other: SavedState): Boolean = source.contentDeepEquals(other)
+    public actual fun contentDeepEquals(other: SavedState): Boolean =
+        source.contentDeepEquals(other)
 
-    actual fun contentDeepHashCode(): Int = source.contentDeepHashCode()
+    public actual fun contentDeepHashCode(): Int = source.contentDeepHashCode()
 
-    actual fun toMap(): Map<String, Any?> {
+    public actual fun toMap(): Map<String, Any?> {
         return buildMap(capacity = source.size()) {
             for (key in source.keySet()) {
                 @Suppress("DEPRECATION") put(key, source[key])
diff --git a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistry.android.kt b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistry.android.kt
index 5d0676e..09a65b0 100644
--- a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistry.android.kt
+++ b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistry.android.kt
@@ -19,34 +19,34 @@
 import androidx.lifecycle.Lifecycle
 import androidx.savedstate.internal.SavedStateRegistryImpl
 
-actual class SavedStateRegistry
+public actual class SavedStateRegistry
 internal actual constructor(
     private val impl: SavedStateRegistryImpl,
 ) {
 
     @get:MainThread
-    actual val isRestored: Boolean
+    public actual val isRestored: Boolean
         get() = impl.isRestored
 
     @MainThread
-    actual fun consumeRestoredStateForKey(key: String): SavedState? =
+    public actual fun consumeRestoredStateForKey(key: String): SavedState? =
         impl.consumeRestoredStateForKey(key)
 
     @MainThread
-    actual fun registerSavedStateProvider(key: String, provider: SavedStateProvider) {
+    public actual fun registerSavedStateProvider(key: String, provider: SavedStateProvider) {
         impl.registerSavedStateProvider(key, provider)
     }
 
-    actual fun getSavedStateProvider(key: String): SavedStateProvider? =
+    public actual fun getSavedStateProvider(key: String): SavedStateProvider? =
         impl.getSavedStateProvider(key)
 
     @MainThread
-    actual fun unregisterSavedStateProvider(key: String) {
+    public actual fun unregisterSavedStateProvider(key: String) {
         impl.unregisterSavedStateProvider(key)
     }
 
-    actual fun interface SavedStateProvider {
-        actual fun saveState(): SavedState
+    public actual fun interface SavedStateProvider {
+        public actual fun saveState(): SavedState
     }
 
     /**
@@ -55,14 +55,14 @@
      *
      * Subclasses must have a default constructor
      */
-    interface AutoRecreated {
+    public interface AutoRecreated {
         /**
          * This method will be called during dispatching of
          * [androidx.lifecycle.Lifecycle.Event.ON_CREATE] of owning component which was restarted
          *
          * @param owner a component that was restarted
          */
-        fun onRecreated(owner: SavedStateRegistryOwner)
+        public fun onRecreated(owner: SavedStateRegistryOwner)
     }
 
     private var recreatorProvider: Recreator.SavedStateProvider? = null
@@ -79,7 +79,7 @@
      *   dispatched
      */
     @MainThread
-    fun runOnNextRecreation(clazz: Class<out AutoRecreated>) {
+    public fun runOnNextRecreation(clazz: Class<out AutoRecreated>) {
         check(impl.isAllowingSavingState) {
             "Can not perform this action after onSaveInstanceState"
         }
diff --git a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistryController.android.kt b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistryController.android.kt
index 15b6fc9..6059739 100644
--- a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistryController.android.kt
+++ b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateRegistryController.android.kt
@@ -23,27 +23,27 @@
     private val impl: SavedStateRegistryImpl,
 ) {
 
-    actual val savedStateRegistry: SavedStateRegistry = SavedStateRegistry(impl)
+    public actual val savedStateRegistry: SavedStateRegistry = SavedStateRegistry(impl)
 
     @MainThread
-    actual fun performAttach() {
+    public actual fun performAttach() {
         impl.performAttach()
     }
 
     @MainThread
-    actual fun performRestore(savedState: SavedState?) {
+    public actual fun performRestore(savedState: SavedState?) {
         impl.performRestore(savedState)
     }
 
     @MainThread
-    actual fun performSave(outBundle: SavedState) {
+    public actual fun performSave(outBundle: SavedState) {
         impl.performSave(outBundle)
     }
 
-    actual companion object {
+    public actual companion object {
 
         @JvmStatic
-        actual fun create(owner: SavedStateRegistryOwner): SavedStateRegistryController {
+        public actual fun create(owner: SavedStateRegistryOwner): SavedStateRegistryController {
             val impl =
                 SavedStateRegistryImpl(
                     owner = owner,
diff --git a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateWriter.android.kt b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateWriter.android.kt
index 762fa1a..42c8295 100644
--- a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateWriter.android.kt
+++ b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/SavedStateWriter.android.kt
@@ -29,7 +29,7 @@
 
 @Suppress("ValueClassDefinition")
 @JvmInline
-actual value class SavedStateWriter
+public actual value class SavedStateWriter
 @PublishedApi
 internal actual constructor(
     @PublishedApi internal actual val source: SavedState,
@@ -41,39 +41,39 @@
      * @param key The key to associate the value with.
      * @param value The [IBinder] value to store.
      */
-    inline fun putBinder(key: String, value: IBinder) {
+    public inline fun putBinder(key: String, value: IBinder) {
         source.putBinder(key, value)
     }
 
-    actual inline fun putBoolean(key: String, value: Boolean) {
+    public actual inline fun putBoolean(key: String, value: Boolean) {
         source.putBoolean(key, value)
     }
 
-    actual inline fun putChar(key: String, value: Char) {
+    public actual inline fun putChar(key: String, value: Char) {
         source.putChar(key, value)
     }
 
-    actual inline fun putCharSequence(key: String, value: CharSequence) {
+    public actual inline fun putCharSequence(key: String, value: CharSequence) {
         source.putCharSequence(key, value)
     }
 
-    actual inline fun putDouble(key: String, value: Double) {
+    public actual inline fun putDouble(key: String, value: Double) {
         source.putDouble(key, value)
     }
 
-    actual inline fun putFloat(key: String, value: Float) {
+    public actual inline fun putFloat(key: String, value: Float) {
         source.putFloat(key, value)
     }
 
-    actual inline fun putInt(key: String, value: Int) {
+    public actual inline fun putInt(key: String, value: Int) {
         source.putInt(key, value)
     }
 
-    actual inline fun putLong(key: String, value: Long) {
+    public actual inline fun putLong(key: String, value: Long) {
         source.putLong(key, value)
     }
 
-    actual inline fun putNull(key: String) {
+    public actual inline fun putNull(key: String) {
         source.putString(key, null)
     }
 
@@ -83,7 +83,7 @@
      * @param key The key to associate the value with.
      * @param value The [Parcelable] value to store.
      */
-    inline fun <reified T : Parcelable> putParcelable(key: String, value: T) {
+    public inline fun <reified T : Parcelable> putParcelable(key: String, value: T) {
         source.putParcelable(key, value)
     }
 
@@ -93,7 +93,7 @@
      * @param key The key to associate the value with.
      * @param value The [Serializable] value to store.
      */
-    inline fun <reified T : Serializable> putJavaSerializable(key: String, value: T) {
+    public inline fun <reified T : Serializable> putJavaSerializable(key: String, value: T) {
         source.putSerializable(key, value)
     }
 
@@ -103,7 +103,7 @@
      * @param key The key to associate the value with.
      * @param value The [Size] value to store.
      */
-    inline fun putSize(key: String, value: Size) {
+    public inline fun putSize(key: String, value: Size) {
         source.putSize(key, value)
     }
 
@@ -113,23 +113,23 @@
      * @param key The key to associate the value with.
      * @param value The [SizeF] value to store.
      */
-    inline fun putSizeF(key: String, value: SizeF) {
+    public inline fun putSizeF(key: String, value: SizeF) {
         source.putSizeF(key, value)
     }
 
-    actual inline fun putString(key: String, value: String) {
+    public actual inline fun putString(key: String, value: String) {
         source.putString(key, value)
     }
 
-    actual inline fun putIntList(key: String, value: List<Int>) {
+    public actual inline fun putIntList(key: String, value: List<Int>) {
         source.putIntegerArrayList(key, value.toArrayListUnsafe())
     }
 
-    actual inline fun putCharSequenceList(key: String, value: List<CharSequence>) {
+    public actual inline fun putCharSequenceList(key: String, value: List<CharSequence>) {
         source.putCharSequenceArrayList(key, value.toArrayListUnsafe())
     }
 
-    actual inline fun putStringList(key: String, value: List<String>) {
+    public actual inline fun putStringList(key: String, value: List<String>) {
         source.putStringArrayList(key, value.toArrayListUnsafe())
     }
 
@@ -140,42 +140,42 @@
      * @param key The key to associate the value with.
      * @param value The [List] of elements to store.
      */
-    inline fun <reified T : Parcelable> putParcelableList(key: String, value: List<T>) {
+    public inline fun <reified T : Parcelable> putParcelableList(key: String, value: List<T>) {
         source.putParcelableArrayList(key, value.toArrayListUnsafe())
     }
 
-    actual inline fun putBooleanArray(key: String, value: BooleanArray) {
+    public actual inline fun putBooleanArray(key: String, value: BooleanArray) {
         source.putBooleanArray(key, value)
     }
 
-    actual inline fun putCharArray(key: String, value: CharArray) {
+    public actual inline fun putCharArray(key: String, value: CharArray) {
         source.putCharArray(key, value)
     }
 
-    actual inline fun putCharSequenceArray(
+    public actual inline fun putCharSequenceArray(
         key: String,
         @Suppress("ArrayReturn") value: Array<CharSequence>
     ) {
         source.putCharSequenceArray(key, value)
     }
 
-    actual inline fun putDoubleArray(key: String, value: DoubleArray) {
+    public actual inline fun putDoubleArray(key: String, value: DoubleArray) {
         source.putDoubleArray(key, value)
     }
 
-    actual inline fun putFloatArray(key: String, value: FloatArray) {
+    public actual inline fun putFloatArray(key: String, value: FloatArray) {
         source.putFloatArray(key, value)
     }
 
-    actual inline fun putIntArray(key: String, value: IntArray) {
+    public actual inline fun putIntArray(key: String, value: IntArray) {
         source.putIntArray(key, value)
     }
 
-    actual inline fun putLongArray(key: String, value: LongArray) {
+    public actual inline fun putLongArray(key: String, value: LongArray) {
         source.putLongArray(key, value)
     }
 
-    actual inline fun putStringArray(key: String, value: Array<String>) {
+    public actual inline fun putStringArray(key: String, value: Array<String>) {
         source.putStringArray(key, value)
     }
 
@@ -186,7 +186,7 @@
      * @param key The key to associate the value with.
      * @param value The [Array] of elements to store.
      */
-    inline fun <reified T : Parcelable> putParcelableArray(
+    public inline fun <reified T : Parcelable> putParcelableArray(
         key: String,
         @Suppress("ArrayReturn") value: Array<T>
     ) {
@@ -200,26 +200,26 @@
      * @param key The key to associate the value with.
      * @param value The [SparseArray] of elements to store.
      */
-    inline fun <reified T : Parcelable> putSparseParcelableArray(
+    public inline fun <reified T : Parcelable> putSparseParcelableArray(
         key: String,
         value: SparseArray<T>
     ) {
         source.putSparseParcelableArray(key, value)
     }
 
-    actual inline fun putSavedState(key: String, value: SavedState) {
+    public actual inline fun putSavedState(key: String, value: SavedState) {
         source.putBundle(key, value)
     }
 
-    actual inline fun putAll(from: SavedState) {
+    public actual inline fun putAll(from: SavedState) {
         source.putAll(from)
     }
 
-    actual inline fun remove(key: String) {
+    public actual inline fun remove(key: String) {
         source.remove(key)
     }
 
-    actual inline fun clear() {
+    public actual inline fun clear() {
         source.clear()
     }
 }
diff --git a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/ViewTreeSavedStateRegistryOwner.android.kt b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/ViewTreeSavedStateRegistryOwner.android.kt
index 670caee..e6b7502 100644
--- a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/ViewTreeSavedStateRegistryOwner.android.kt
+++ b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/ViewTreeSavedStateRegistryOwner.android.kt
@@ -35,7 +35,7 @@
  *   view
  */
 @JvmName("set")
-fun View.setViewTreeSavedStateRegistryOwner(owner: SavedStateRegistryOwner?) {
+public fun View.setViewTreeSavedStateRegistryOwner(owner: SavedStateRegistryOwner?) {
     setTag(R.id.view_tree_saved_state_registry_owner, owner)
 }
 
@@ -50,7 +50,7 @@
  *   and/or some subset of its ancestors
  */
 @JvmName("get")
-fun View.findViewTreeSavedStateRegistryOwner(): SavedStateRegistryOwner? {
+public fun View.findViewTreeSavedStateRegistryOwner(): SavedStateRegistryOwner? {
     var currentView: View? = this
     while (currentView != null) {
         val registryOwner =
diff --git a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.android.kt b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.android.kt
index 4be08b3..f0dacc5 100644
--- a/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.android.kt
+++ b/savedstate/savedstate/src/androidMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.android.kt
@@ -47,7 +47,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class SizeSerializer : KSerializer<Size> {
+public class SizeSerializer : KSerializer<Size> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("Size")
 
     override fun serialize(encoder: Encoder, value: Size) {
@@ -77,7 +77,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class SizeFSerializer : KSerializer<SizeF> {
+public class SizeFSerializer : KSerializer<SizeF> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("SizeF")
 
     override fun serialize(encoder: Encoder, value: SizeF) {
@@ -107,7 +107,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-open class CharSequenceSerializer<T : CharSequence> : KSerializer<T> {
+public open class CharSequenceSerializer<T : CharSequence> : KSerializer<T> {
     final override val descriptor: SerialDescriptor = buildClassSerialDescriptor("CharSequence")
 
     final override fun serialize(encoder: Encoder, value: T) {
@@ -138,7 +138,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-open class JavaSerializableSerializer<T : JavaSerializable> : KSerializer<T> {
+public open class JavaSerializableSerializer<T : JavaSerializable> : KSerializer<T> {
     final override val descriptor: SerialDescriptor = buildClassSerialDescriptor("JavaSerializable")
 
     final override fun serialize(encoder: Encoder, value: T) {
@@ -169,7 +169,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-open class ParcelableSerializer<T : Parcelable> : KSerializer<T> {
+public open class ParcelableSerializer<T : Parcelable> : KSerializer<T> {
     final override val descriptor: SerialDescriptor = buildClassSerialDescriptor("Parcelable")
 
     final override fun serialize(encoder: Encoder, value: T) {
@@ -200,7 +200,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class IBinderSerializer : KSerializer<IBinder> {
+public class IBinderSerializer : KSerializer<IBinder> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("IBinder")
 
     override fun serialize(encoder: Encoder, value: IBinder) {
@@ -230,7 +230,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class CharSequenceArraySerializer : KSerializer<Array<CharSequence>> {
+public class CharSequenceArraySerializer : KSerializer<Array<CharSequence>> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("CharSequenceArray")
 
     override fun serialize(encoder: Encoder, @Suppress("ArrayReturn") value: Array<CharSequence>) {
@@ -261,7 +261,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class ParcelableArraySerializer : KSerializer<Array<Parcelable>> {
+public class ParcelableArraySerializer : KSerializer<Array<Parcelable>> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("ParcelableArray")
 
     override fun serialize(encoder: Encoder, @Suppress("ArrayReturn") value: Array<Parcelable>) {
@@ -292,7 +292,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class CharSequenceListSerializer : KSerializer<List<CharSequence>> {
+public class CharSequenceListSerializer : KSerializer<List<CharSequence>> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("CharSequenceList")
 
     override fun serialize(encoder: Encoder, value: List<CharSequence>) {
@@ -322,7 +322,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class ParcelableListSerializer : KSerializer<List<Parcelable>> {
+public class ParcelableListSerializer : KSerializer<List<Parcelable>> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("ParcelableList")
 
     override fun serialize(encoder: Encoder, value: List<Parcelable>) {
@@ -352,7 +352,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class SparseParcelableArraySerializer : KSerializer<SparseArray<Parcelable>> {
+public class SparseParcelableArraySerializer : KSerializer<SparseArray<Parcelable>> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("SparseParcelableArray")
 
     override fun serialize(encoder: Encoder, value: SparseArray<Parcelable>) {
diff --git a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/SavedStateRegistry.kt b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/SavedStateRegistry.kt
index 80716ea..fdd98dd6 100644
--- a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/SavedStateRegistry.kt
+++ b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/SavedStateRegistry.kt
@@ -32,14 +32,14 @@
 ) {
 
     /** This interface marks a component that contributes to saved state. */
-    fun interface SavedStateProvider {
+    public fun interface SavedStateProvider {
         /**
          * Called to retrieve a state from a component before being killed so later the state can be
          * received from [consumeRestoredStateForKey]
          *
          * Returns `S` with your saved state.
          */
-        fun saveState(): SavedState
+        public fun saveState(): SavedState
     }
 
     /**
@@ -48,7 +48,7 @@
      *
      * [isRestored] == true if state was restored
      */
-    val isRestored: Boolean
+    public val isRestored: Boolean
 
     /**
      * Consumes saved state previously supplied by [SavedStateProvider] registered via
@@ -67,7 +67,7 @@
      * @param key a key with which [SavedStateProvider] was previously registered.
      * @return `S` with the previously saved state or {@code null}
      */
-    @MainThread fun consumeRestoredStateForKey(key: String): SavedState?
+    @MainThread public fun consumeRestoredStateForKey(key: String): SavedState?
 
     /**
      * Registers a [SavedStateProvider] by the given `key`. This `savedStateProvider` will be called
@@ -83,7 +83,7 @@
      * @param key a key with which returned saved state will be associated
      * @param provider savedStateProvider to get saved state.
      */
-    @MainThread fun registerSavedStateProvider(key: String, provider: SavedStateProvider)
+    @MainThread public fun registerSavedStateProvider(key: String, provider: SavedStateProvider)
 
     /**
      * Get a previously registered [SavedStateProvider].
@@ -94,12 +94,12 @@
      * Returns the [SavedStateProvider] previously registered with [registerSavedStateProvider] or
      * null if no provider has been registered with the given key.
      */
-    fun getSavedStateProvider(key: String): SavedStateProvider?
+    public fun getSavedStateProvider(key: String): SavedStateProvider?
 
     /**
      * Unregisters a component previously registered by the given `key`
      *
      * @param key a key with which a component was previously registered.
      */
-    @MainThread fun unregisterSavedStateProvider(key: String)
+    @MainThread public fun unregisterSavedStateProvider(key: String)
 }
diff --git a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateDecoder.kt b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateDecoder.kt
index 755e034..65ccd1f 100644
--- a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateDecoder.kt
+++ b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateDecoder.kt
@@ -39,7 +39,7 @@
  * @throws SerializationException for any deserialization error.
  * @throws IllegalArgumentException if [savedState] is not valid.
  */
-fun <T : Any> decodeFromSavedState(
+public fun <T : Any> decodeFromSavedState(
     deserializer: DeserializationStrategy<T>,
     savedState: SavedState
 ): T {
@@ -55,7 +55,7 @@
  * @throws SerializationException for any deserialization error.
  * @throws IllegalArgumentException if [savedState] is not valid.
  */
-inline fun <reified T : Any> decodeFromSavedState(savedState: SavedState): T =
+public inline fun <reified T : Any> decodeFromSavedState(savedState: SavedState): T =
     decodeFromSavedState(serializer<T>(), savedState)
 
 /**
diff --git a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateEncoder.kt b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateEncoder.kt
index 9625885..7d89c34 100644
--- a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateEncoder.kt
+++ b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/SavedStateEncoder.kt
@@ -39,7 +39,10 @@
  * @return The encoded [SavedState].
  * @throws SerializationException if [value] cannot be serialized.
  */
-fun <T : Any> encodeToSavedState(serializer: SerializationStrategy<T>, value: T): SavedState =
+public fun <T : Any> encodeToSavedState(
+    serializer: SerializationStrategy<T>,
+    value: T
+): SavedState =
     savedState().apply { SavedStateEncoder(this).encodeSerializableValue(serializer, value) }
 
 /**
@@ -50,7 +53,7 @@
  * @return The encoded [SavedState].
  * @throws SerializationException if [value] cannot be serialized.
  */
-inline fun <reified T : Any> encodeToSavedState(value: T): SavedState {
+public inline fun <reified T : Any> encodeToSavedState(value: T): SavedState {
     return encodeToSavedState(serializer<T>(), value)
 }
 
diff --git a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.kt b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.kt
index 51411f3..14d6036 100644
--- a/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.kt
+++ b/savedstate/savedstate/src/commonMain/kotlin/androidx/savedstate/serialization/serializers/BuiltInSerializer.kt
@@ -42,7 +42,7 @@
  * @see androidx.savedstate.serialization.decodeFromSavedState
  */
 @OptIn(ExperimentalSerializationApi::class)
-class SavedStateSerializer : KSerializer<SavedState> {
+public class SavedStateSerializer : KSerializer<SavedState> {
     override val descriptor: SerialDescriptor = buildClassSerialDescriptor("SavedState")
 
     override fun serialize(encoder: Encoder, value: SavedState) {
diff --git a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedState.nonAndroid.kt b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedState.nonAndroid.kt
index 03b06aa..1b98e67 100644
--- a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedState.nonAndroid.kt
+++ b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedState.nonAndroid.kt
@@ -27,7 +27,7 @@
 @PublishedApi
 internal constructor(@PublishedApi internal val map: MutableMap<String, Any?> = mutableMapOf())
 
-actual inline fun savedState(
+public actual inline fun savedState(
     initialState: Map<String, Any?>,
     builderAction: SavedStateWriter.() -> Unit,
 ): SavedState = SavedState(initialState.toMutableMap()).apply { write(builderAction) }
diff --git a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateReader.nonAndroid.kt b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateReader.nonAndroid.kt
index b18561a..8f0d715e 100644
--- a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateReader.nonAndroid.kt
+++ b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateReader.nonAndroid.kt
@@ -31,32 +31,32 @@
     @PublishedApi internal actual val source: SavedState,
 ) {
 
-    actual inline fun getBoolean(key: String): Boolean {
+    public actual inline fun getBoolean(key: String): Boolean {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? Boolean ?: DEFAULT_BOOLEAN
     }
 
-    actual inline fun getBooleanOrElse(key: String, defaultValue: () -> Boolean): Boolean {
+    public actual inline fun getBooleanOrElse(key: String, defaultValue: () -> Boolean): Boolean {
         if (key !in this) defaultValue()
         return source.map[key] as? Boolean ?: defaultValue()
     }
 
-    actual inline fun getChar(key: String): Char {
+    public actual inline fun getChar(key: String): Char {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? Char ?: DEFAULT_CHAR
     }
 
-    actual inline fun getCharOrElse(key: String, defaultValue: () -> Char): Char {
+    public actual inline fun getCharOrElse(key: String, defaultValue: () -> Char): Char {
         if (key !in this) defaultValue()
         return source.map[key] as? Char ?: defaultValue()
     }
 
-    actual inline fun getCharSequence(key: String): CharSequence {
+    public actual inline fun getCharSequence(key: String): CharSequence {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? CharSequence ?: valueNotFoundError(key)
     }
 
-    actual inline fun getCharSequenceOrElse(
+    public actual inline fun getCharSequenceOrElse(
         key: String,
         defaultValue: () -> CharSequence
     ): CharSequence {
@@ -64,63 +64,63 @@
         return source.map[key] as? CharSequence ?: defaultValue()
     }
 
-    actual inline fun getDouble(key: String): Double {
+    public actual inline fun getDouble(key: String): Double {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? Double ?: DEFAULT_DOUBLE
     }
 
-    actual inline fun getDoubleOrElse(key: String, defaultValue: () -> Double): Double {
+    public actual inline fun getDoubleOrElse(key: String, defaultValue: () -> Double): Double {
         if (key !in this) defaultValue()
         return source.map[key] as? Double ?: defaultValue()
     }
 
-    actual inline fun getFloat(key: String): Float {
+    public actual inline fun getFloat(key: String): Float {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? Float ?: DEFAULT_FLOAT
     }
 
-    actual inline fun getFloatOrElse(key: String, defaultValue: () -> Float): Float {
+    public actual inline fun getFloatOrElse(key: String, defaultValue: () -> Float): Float {
         if (key !in this) defaultValue()
         return source.map[key] as? Float ?: defaultValue()
     }
 
-    actual inline fun getInt(key: String): Int {
+    public actual inline fun getInt(key: String): Int {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? Int ?: DEFAULT_INT
     }
 
-    actual inline fun getIntOrElse(key: String, defaultValue: () -> Int): Int {
+    public actual inline fun getIntOrElse(key: String, defaultValue: () -> Int): Int {
         if (key !in this) defaultValue()
         return source.map[key] as? Int ?: defaultValue()
     }
 
-    actual inline fun getLong(key: String): Long {
+    public actual inline fun getLong(key: String): Long {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? Long ?: DEFAULT_LONG
     }
 
-    actual inline fun getLongOrElse(key: String, defaultValue: () -> Long): Long {
+    public actual inline fun getLongOrElse(key: String, defaultValue: () -> Long): Long {
         if (key !in this) defaultValue()
         return source.map[key] as? Long ?: defaultValue()
     }
 
-    actual inline fun getString(key: String): String {
+    public actual inline fun getString(key: String): String {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? String ?: valueNotFoundError(key)
     }
 
-    actual inline fun getStringOrElse(key: String, defaultValue: () -> String): String {
+    public actual inline fun getStringOrElse(key: String, defaultValue: () -> String): String {
         if (key !in this) defaultValue()
         return source.map[key] as? String ?: defaultValue()
     }
 
-    actual inline fun getCharSequenceList(key: String): List<CharSequence> {
+    public actual inline fun getCharSequenceList(key: String): List<CharSequence> {
         if (key !in this) keyNotFoundError(key)
         @Suppress("UNCHECKED_CAST")
         return source.map[key] as? List<CharSequence> ?: valueNotFoundError(key)
     }
 
-    actual inline fun getCharSequenceListOrElse(
+    public actual inline fun getCharSequenceListOrElse(
         key: String,
         defaultValue: () -> List<CharSequence>
     ): List<CharSequence> {
@@ -128,23 +128,26 @@
         @Suppress("UNCHECKED_CAST") return source.map[key] as? List<CharSequence> ?: defaultValue()
     }
 
-    actual inline fun getIntList(key: String): List<Int> {
+    public actual inline fun getIntList(key: String): List<Int> {
         if (key !in this) keyNotFoundError(key)
         @Suppress("UNCHECKED_CAST") return source.map[key] as? List<Int> ?: valueNotFoundError(key)
     }
 
-    actual inline fun getIntListOrElse(key: String, defaultValue: () -> List<Int>): List<Int> {
+    public actual inline fun getIntListOrElse(
+        key: String,
+        defaultValue: () -> List<Int>
+    ): List<Int> {
         if (key !in this) defaultValue()
         @Suppress("UNCHECKED_CAST") return source.map[key] as? List<Int> ?: defaultValue()
     }
 
-    actual inline fun getStringList(key: String): List<String> {
+    public actual inline fun getStringList(key: String): List<String> {
         if (key !in this) keyNotFoundError(key)
         @Suppress("UNCHECKED_CAST")
         return source.map[key] as? List<String> ?: valueNotFoundError(key)
     }
 
-    actual inline fun getStringListOrElse(
+    public actual inline fun getStringListOrElse(
         key: String,
         defaultValue: () -> List<String>
     ): List<String> {
@@ -152,23 +155,26 @@
         @Suppress("UNCHECKED_CAST") return source.map[key] as? List<String> ?: defaultValue()
     }
 
-    actual inline fun getCharArray(key: String): CharArray {
+    public actual inline fun getCharArray(key: String): CharArray {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? CharArray ?: valueNotFoundError(key)
     }
 
-    actual inline fun getCharArrayOrElse(key: String, defaultValue: () -> CharArray): CharArray {
+    public actual inline fun getCharArrayOrElse(
+        key: String,
+        defaultValue: () -> CharArray
+    ): CharArray {
         if (key !in this) defaultValue()
         return source.map[key] as? CharArray ?: defaultValue()
     }
 
-    actual inline fun getCharSequenceArray(key: String): Array<CharSequence> {
+    public actual inline fun getCharSequenceArray(key: String): Array<CharSequence> {
         if (key !in this) keyNotFoundError(key)
         @Suppress("UNCHECKED_CAST")
         return source.map[key] as? Array<CharSequence> ?: valueNotFoundError(key)
     }
 
-    actual inline fun getCharSequenceArrayOrElse(
+    public actual inline fun getCharSequenceArrayOrElse(
         key: String,
         defaultValue: () -> Array<CharSequence>
     ): Array<CharSequence> {
@@ -176,12 +182,12 @@
         @Suppress("UNCHECKED_CAST") return source.map[key] as? Array<CharSequence> ?: defaultValue()
     }
 
-    actual inline fun getBooleanArray(key: String): BooleanArray {
+    public actual inline fun getBooleanArray(key: String): BooleanArray {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? BooleanArray ?: valueNotFoundError(key)
     }
 
-    actual inline fun getBooleanArrayOrElse(
+    public actual inline fun getBooleanArrayOrElse(
         key: String,
         defaultValue: () -> BooleanArray
     ): BooleanArray {
@@ -189,12 +195,12 @@
         return source.map[key] as? BooleanArray ?: defaultValue()
     }
 
-    actual inline fun getDoubleArray(key: String): DoubleArray {
+    public actual inline fun getDoubleArray(key: String): DoubleArray {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? DoubleArray ?: valueNotFoundError(key)
     }
 
-    actual inline fun getDoubleArrayOrElse(
+    public actual inline fun getDoubleArrayOrElse(
         key: String,
         defaultValue: () -> DoubleArray,
     ): DoubleArray {
@@ -202,44 +208,53 @@
         return source.map[key] as? DoubleArray ?: defaultValue()
     }
 
-    actual inline fun getFloatArray(key: String): FloatArray {
+    public actual inline fun getFloatArray(key: String): FloatArray {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? FloatArray ?: valueNotFoundError(key)
     }
 
-    actual inline fun getFloatArrayOrElse(key: String, defaultValue: () -> FloatArray): FloatArray {
+    public actual inline fun getFloatArrayOrElse(
+        key: String,
+        defaultValue: () -> FloatArray
+    ): FloatArray {
         if (key !in this) defaultValue()
         return source.map[key] as? FloatArray ?: defaultValue()
     }
 
-    actual inline fun getIntArray(key: String): IntArray {
+    public actual inline fun getIntArray(key: String): IntArray {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? IntArray ?: valueNotFoundError(key)
     }
 
-    actual inline fun getIntArrayOrElse(key: String, defaultValue: () -> IntArray): IntArray {
+    public actual inline fun getIntArrayOrElse(
+        key: String,
+        defaultValue: () -> IntArray
+    ): IntArray {
         if (key !in this) defaultValue()
         return source.map[key] as? IntArray ?: defaultValue()
     }
 
-    actual inline fun getLongArray(key: String): LongArray {
+    public actual inline fun getLongArray(key: String): LongArray {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? LongArray ?: valueNotFoundError(key)
     }
 
-    actual inline fun getLongArrayOrElse(key: String, defaultValue: () -> LongArray): LongArray {
+    public actual inline fun getLongArrayOrElse(
+        key: String,
+        defaultValue: () -> LongArray
+    ): LongArray {
         if (key !in this) defaultValue()
         return source.map[key] as? LongArray ?: defaultValue()
     }
 
     @Suppress("UNCHECKED_CAST")
-    actual inline fun getStringArray(key: String): Array<String> {
+    public actual inline fun getStringArray(key: String): Array<String> {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? Array<String> ?: valueNotFoundError(key)
     }
 
     @Suppress("UNCHECKED_CAST")
-    actual inline fun getStringArrayOrElse(
+    public actual inline fun getStringArrayOrElse(
         key: String,
         defaultValue: () -> Array<String>
     ): Array<String> {
@@ -247,29 +262,33 @@
         return source.map[key] as? Array<String> ?: defaultValue()
     }
 
-    actual inline fun getSavedState(key: String): SavedState {
+    public actual inline fun getSavedState(key: String): SavedState {
         if (key !in this) keyNotFoundError(key)
         return source.map[key] as? SavedState ?: valueNotFoundError(key)
     }
 
-    actual inline fun getSavedStateOrElse(key: String, defaultValue: () -> SavedState): SavedState {
+    public actual inline fun getSavedStateOrElse(
+        key: String,
+        defaultValue: () -> SavedState
+    ): SavedState {
         if (key !in this) defaultValue()
         return source.map[key] as? SavedState ?: defaultValue()
     }
 
-    actual inline fun size(): Int = source.map.size
+    public actual inline fun size(): Int = source.map.size
 
-    actual inline fun isEmpty(): Boolean = source.map.isEmpty()
+    public actual inline fun isEmpty(): Boolean = source.map.isEmpty()
 
-    actual inline fun isNull(key: String): Boolean = contains(key) && source.map[key] == null
+    public actual inline fun isNull(key: String): Boolean = contains(key) && source.map[key] == null
 
-    actual inline operator fun contains(key: String): Boolean = source.map.containsKey(key)
+    public actual inline operator fun contains(key: String): Boolean = source.map.containsKey(key)
 
-    actual fun contentDeepEquals(other: SavedState): Boolean = source.contentDeepEquals(other)
+    public actual fun contentDeepEquals(other: SavedState): Boolean =
+        source.contentDeepEquals(other)
 
-    actual fun contentDeepHashCode(): Int = source.contentDeepHashCode()
+    public actual fun contentDeepHashCode(): Int = source.contentDeepHashCode()
 
-    actual fun toMap(): Map<String, Any?> {
+    public actual fun toMap(): Map<String, Any?> {
         return buildMap(capacity = source.map.size) {
             for (key in source.map.keys) {
                 put(key, source.map[key])
diff --git a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistry.nonAndroid.kt b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistry.nonAndroid.kt
index 19f8801..1f5bfb8 100644
--- a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistry.nonAndroid.kt
+++ b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistry.nonAndroid.kt
@@ -18,33 +18,33 @@
 import androidx.annotation.MainThread
 import androidx.savedstate.internal.SavedStateRegistryImpl
 
-actual class SavedStateRegistry
+public actual class SavedStateRegistry
 internal actual constructor(
     private val impl: SavedStateRegistryImpl,
 ) {
 
     @get:MainThread
-    actual val isRestored: Boolean
+    public actual val isRestored: Boolean
         get() = impl.isRestored
 
     @MainThread
-    actual fun consumeRestoredStateForKey(key: String): SavedState? =
+    public actual fun consumeRestoredStateForKey(key: String): SavedState? =
         impl.consumeRestoredStateForKey(key)
 
     @MainThread
-    actual fun registerSavedStateProvider(key: String, provider: SavedStateProvider) {
+    public actual fun registerSavedStateProvider(key: String, provider: SavedStateProvider) {
         impl.registerSavedStateProvider(key, provider)
     }
 
-    actual fun getSavedStateProvider(key: String): SavedStateProvider? =
+    public actual fun getSavedStateProvider(key: String): SavedStateProvider? =
         impl.getSavedStateProvider(key)
 
     @MainThread
-    actual fun unregisterSavedStateProvider(key: String) {
+    public actual fun unregisterSavedStateProvider(key: String) {
         impl.unregisterSavedStateProvider(key)
     }
 
-    actual fun interface SavedStateProvider {
-        actual fun saveState(): SavedState
+    public actual fun interface SavedStateProvider {
+        public actual fun saveState(): SavedState
     }
 }
diff --git a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistryController.nonAndroid.kt b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistryController.nonAndroid.kt
index acfe7f4..a720c44 100644
--- a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistryController.nonAndroid.kt
+++ b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateRegistryController.nonAndroid.kt
@@ -24,27 +24,27 @@
     private val impl: SavedStateRegistryImpl,
 ) {
 
-    actual val savedStateRegistry: SavedStateRegistry = SavedStateRegistry(impl)
+    public actual val savedStateRegistry: SavedStateRegistry = SavedStateRegistry(impl)
 
     @MainThread
-    actual fun performAttach() {
+    public actual fun performAttach() {
         impl.performAttach()
     }
 
     @MainThread
-    actual fun performRestore(savedState: SavedState?) {
+    public actual fun performRestore(savedState: SavedState?) {
         impl.performRestore(savedState)
     }
 
     @MainThread
-    actual fun performSave(outBundle: SavedState) {
+    public actual fun performSave(outBundle: SavedState) {
         impl.performSave(outBundle)
     }
 
-    actual companion object {
+    public actual companion object {
 
         @JvmStatic
-        actual fun create(owner: SavedStateRegistryOwner): SavedStateRegistryController {
+        public actual fun create(owner: SavedStateRegistryOwner): SavedStateRegistryController {
             return SavedStateRegistryController(SavedStateRegistryImpl(owner))
         }
     }
diff --git a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateWriter.nonAndroid.kt b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateWriter.nonAndroid.kt
index bfa30cd..a0980f2 100644
--- a/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateWriter.nonAndroid.kt
+++ b/savedstate/savedstate/src/nonAndroidMain/kotlin/androidx/savedstate/SavedStateWriter.nonAndroid.kt
@@ -25,105 +25,105 @@
 import kotlin.jvm.JvmName
 
 @JvmInline
-actual value class SavedStateWriter
+public actual value class SavedStateWriter
 @PublishedApi
 internal actual constructor(
     @PublishedApi internal actual val source: SavedState,
 ) {
 
-    actual inline fun putBoolean(key: String, value: Boolean) {
+    public actual inline fun putBoolean(key: String, value: Boolean) {
         source.map[key] = value
     }
 
-    actual inline fun putChar(key: String, value: Char) {
+    public actual inline fun putChar(key: String, value: Char) {
         source.map[key] = value
     }
 
-    actual inline fun putCharSequence(key: String, value: CharSequence) {
+    public actual inline fun putCharSequence(key: String, value: CharSequence) {
         source.map[key] = value
     }
 
-    actual inline fun putDouble(key: String, value: Double) {
+    public actual inline fun putDouble(key: String, value: Double) {
         source.map[key] = value
     }
 
-    actual inline fun putFloat(key: String, value: Float) {
+    public actual inline fun putFloat(key: String, value: Float) {
         source.map[key] = value
     }
 
-    actual inline fun putInt(key: String, value: Int) {
+    public actual inline fun putInt(key: String, value: Int) {
         source.map[key] = value
     }
 
-    actual inline fun putLong(key: String, value: Long) {
+    public actual inline fun putLong(key: String, value: Long) {
         source.map[key] = value
     }
 
-    actual inline fun putNull(key: String) {
+    public actual inline fun putNull(key: String) {
         source.map[key] = null
     }
 
-    actual inline fun putString(key: String, value: String) {
+    public actual inline fun putString(key: String, value: String) {
         source.map[key] = value
     }
 
-    actual inline fun putCharSequenceList(key: String, value: List<CharSequence>) {
+    public actual inline fun putCharSequenceList(key: String, value: List<CharSequence>) {
         source.map[key] = value
     }
 
-    actual inline fun putIntList(key: String, value: List<Int>) {
+    public actual inline fun putIntList(key: String, value: List<Int>) {
         source.map[key] = value
     }
 
-    actual inline fun putStringList(key: String, value: List<String>) {
+    public actual inline fun putStringList(key: String, value: List<String>) {
         source.map[key] = value
     }
 
-    actual inline fun putBooleanArray(key: String, value: BooleanArray) {
+    public actual inline fun putBooleanArray(key: String, value: BooleanArray) {
         source.map[key] = value
     }
 
-    actual inline fun putCharArray(key: String, value: CharArray) {
+    public actual inline fun putCharArray(key: String, value: CharArray) {
         source.map[key] = value
     }
 
-    actual inline fun putCharSequenceArray(key: String, value: Array<CharSequence>) {
+    public actual inline fun putCharSequenceArray(key: String, value: Array<CharSequence>) {
         source.map[key] = value
     }
 
-    actual inline fun putDoubleArray(key: String, value: DoubleArray) {
+    public actual inline fun putDoubleArray(key: String, value: DoubleArray) {
         source.map[key] = value
     }
 
-    actual inline fun putFloatArray(key: String, value: FloatArray) {
+    public actual inline fun putFloatArray(key: String, value: FloatArray) {
         source.map[key] = value
     }
 
-    actual inline fun putIntArray(key: String, value: IntArray) {
+    public actual inline fun putIntArray(key: String, value: IntArray) {
         source.map[key] = value
     }
 
-    actual inline fun putLongArray(key: String, value: LongArray) {
+    public actual inline fun putLongArray(key: String, value: LongArray) {
         source.map[key] = value
     }
 
-    actual inline fun putStringArray(key: String, value: Array<String>) {
+    public actual inline fun putStringArray(key: String, value: Array<String>) {
         source.map[key] = value
     }
 
-    actual inline fun putSavedState(key: String, value: SavedState) {
+    public actual inline fun putSavedState(key: String, value: SavedState) {
         source.map[key] = value
     }
 
-    actual inline fun putAll(from: SavedState) {
+    public actual inline fun putAll(from: SavedState) {
         source.map.putAll(from.map)
     }
 
-    actual inline fun remove(key: String) {
+    public actual inline fun remove(key: String) {
         source.map.remove(key)
     }
 
-    actual inline fun clear() {
+    public actual inline fun clear() {
         source.map.clear()
     }
 }