Merge "Add close sheet semantics to ModalBottomSheet scrim." into androidx-main
diff --git a/activity/activity/api/1.9.0-beta01.txt b/activity/activity/api/1.9.0-beta01.txt
index a7116a8..ed0d2fe 100644
--- a/activity/activity/api/1.9.0-beta01.txt
+++ b/activity/activity/api/1.9.0-beta01.txt
@@ -109,7 +109,7 @@
   }
 
   public final class FullyDrawnReporterKt {
-    method public static suspend inline Object? reportWhenComplete(androidx.activity.FullyDrawnReporter, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> reporter, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public static suspend inline Object? reportWhenComplete(androidx.activity.FullyDrawnReporter, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> reporter, kotlin.coroutines.Continuation<? super kotlin.Unit>);
   }
 
   public interface FullyDrawnReporterOwner {
@@ -250,11 +250,11 @@
 
   public abstract class ActivityResultLauncher<I> {
     ctor public ActivityResultLauncher();
-    method public abstract androidx.activity.result.contract.ActivityResultContract<I,?> getContract();
+    method public abstract androidx.activity.result.contract.ActivityResultContract<I,? extends java.lang.Object!> getContract();
     method public void launch(I input);
     method public abstract void launch(I input, androidx.core.app.ActivityOptionsCompat? options);
     method @MainThread public abstract void unregister();
-    property public abstract androidx.activity.result.contract.ActivityResultContract<I,?> contract;
+    property public abstract androidx.activity.result.contract.ActivityResultContract<I,? extends java.lang.Object!> contract;
   }
 
   public final class ActivityResultLauncherKt {
diff --git a/activity/activity/api/restricted_1.9.0-beta01.txt b/activity/activity/api/restricted_1.9.0-beta01.txt
index 3179bef..c5dda21 100644
--- a/activity/activity/api/restricted_1.9.0-beta01.txt
+++ b/activity/activity/api/restricted_1.9.0-beta01.txt
@@ -108,7 +108,7 @@
   }
 
   public final class FullyDrawnReporterKt {
-    method public static suspend inline Object? reportWhenComplete(androidx.activity.FullyDrawnReporter, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> reporter, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public static suspend inline Object? reportWhenComplete(androidx.activity.FullyDrawnReporter, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> reporter, kotlin.coroutines.Continuation<? super kotlin.Unit>);
   }
 
   public interface FullyDrawnReporterOwner {
@@ -249,11 +249,11 @@
 
   public abstract class ActivityResultLauncher<I> {
     ctor public ActivityResultLauncher();
-    method public abstract androidx.activity.result.contract.ActivityResultContract<I,?> getContract();
+    method public abstract androidx.activity.result.contract.ActivityResultContract<I,? extends java.lang.Object!> getContract();
     method public void launch(I input);
     method public abstract void launch(I input, androidx.core.app.ActivityOptionsCompat? options);
     method @MainThread public abstract void unregister();
-    property public abstract androidx.activity.result.contract.ActivityResultContract<I,?> contract;
+    property public abstract androidx.activity.result.contract.ActivityResultContract<I,? extends java.lang.Object!> contract;
   }
 
   public final class ActivityResultLauncherKt {
diff --git a/arch/core/core-common/api/restricted_2.2.0-beta01.txt b/arch/core/core-common/api/restricted_2.2.0-beta01.txt
index 4fbc435..1ef0e0f 100644
--- a/arch/core/core-common/api/restricted_2.2.0-beta01.txt
+++ b/arch/core/core-common/api/restricted_2.2.0-beta01.txt
@@ -1,13 +1,13 @@
 // Signature format: 4.0
 package androidx.arch.core.internal {
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FastSafeIterableMap<K, V> extends androidx.arch.core.internal.SafeIterableMap<K,V> {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FastSafeIterableMap<K, V> extends androidx.arch.core.internal.SafeIterableMap<K!,V!> {
     ctor public FastSafeIterableMap();
     method public java.util.Map.Entry<K!,V!>? ceil(K!);
     method public boolean contains(K!);
   }
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SafeIterableMap<K, V> implements java.lang.Iterable<java.util.Map.Entry<K,V>> {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SafeIterableMap<K, V> implements java.lang.Iterable<java.util.Map.Entry<K!,V!>!> {
     ctor public SafeIterableMap();
     method public java.util.Iterator<java.util.Map.Entry<K!,V!>!> descendingIterator();
     method public java.util.Map.Entry<K!,V!>? eldest();
@@ -20,7 +20,7 @@
     method public int size();
   }
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SafeIterableMap.IteratorWithAdditions extends androidx.arch.core.internal.SafeIterableMap.SupportRemove<K,V> implements java.util.Iterator<java.util.Map.Entry<K,V>> {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SafeIterableMap.IteratorWithAdditions extends androidx.arch.core.internal.SafeIterableMap.SupportRemove<K!,V!> implements java.util.Iterator<java.util.Map.Entry<K!,V!>!> {
     method public boolean hasNext();
     method public java.util.Map.Entry<K!,V!>! next();
   }
diff --git a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/Constants.kt b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/Constants.kt
index d184d2f..4af34d1 100644
--- a/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/Constants.kt
+++ b/benchmark/baseline-profile-gradle-plugin/src/main/kotlin/androidx/baselineprofile/gradle/utils/Constants.kt
@@ -20,7 +20,7 @@
 
 // Minimum AGP version required
 internal val MIN_AGP_VERSION_REQUIRED_INCLUSIVE = AndroidPluginVersion(8, 0, 0)
-internal val MAX_AGP_VERSION_RECOMMENDED_EXCLUSIVE = AndroidPluginVersion(8, 6, 0).alpha(1)
+internal val MAX_AGP_VERSION_RECOMMENDED_EXCLUSIVE = AndroidPluginVersion(9, 0, 0).alpha(1)
 
 // Prefix for the build type baseline profile
 internal const val BUILD_TYPE_BASELINE_PROFILE_PREFIX = "nonMinified"
diff --git a/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/UserInfoTest.kt b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/UserInfoTest.kt
new file mode 100644
index 0000000..968cd43
--- /dev/null
+++ b/benchmark/benchmark-common/src/androidTest/java/androidx/benchmark/UserInfoTest.kt
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.benchmark
+
+import android.util.Log
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SdkSuppress
+import androidx.test.filters.SmallTest
+import java.io.DataInputStream
+import kotlin.test.assertEquals
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@SdkSuppress(minSdkVersion = android.os.Build.VERSION_CODES.R)
+class UserInfoTest {
+
+    @Before
+    fun setup() {
+        UserInfo.Overrides.currentUserId = null
+    }
+
+    @After
+    fun tearDown() {
+        UserInfo.Overrides.currentUserId = null
+    }
+
+    @Test
+    fun currentUserIdEqualsWhoAmI() {
+        assertEquals(
+            expected = UserInfo.currentUserId,
+            actual = getCurrentUserId(),
+            message = "currentUserId different from whoami user."
+        )
+    }
+
+    /**
+     * Executes the command `whoami`. The output of the command is in the format
+     * `u<user-id>_a<app-id>`. After executing the command, the `user-id` is extracted and
+     * returned.
+     */
+    private fun getCurrentUserId(): Int {
+        val output = try {
+            DataInputStream(Runtime.getRuntime().exec("whoami").inputStream)
+                .bufferedReader()
+                .use { it.readText() }
+        } catch (e: Exception) {
+            Log.e(BenchmarkState.TAG, "Error running `whoami` command.", e)
+            ""
+        }
+        val userId = try {
+            output.split("_")[0].substring(1).toInt()
+        } catch (e: Exception) {
+            Log.e(BenchmarkState.TAG, "Error parsing user id. Current user: `$output`.", e)
+            -1
+        }
+        return userId
+    }
+}
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
index 54162f0..74406f3 100644
--- a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
@@ -633,7 +633,7 @@
             """
                 am force-stop $appPackage
                 pm disable-user $appPackage
-            """".trimIndent()
+            """.trimIndent()
         }
         executeScriptCaptureStdoutStderr(command)
     }
@@ -691,6 +691,14 @@
     var isSuAvailable = false
 
     init {
+        // b/268107648: UiAutomation always runs on user 0 so shell cannot access other user data.
+        if (UserInfo.currentUserId > 0) {
+            throw IllegalStateException(
+                "Benchmark and Baseline Profile generation are not currently " +
+                    "supported on AAOS and multiuser environment when a secondary user is " +
+                    "selected."
+            )
+        }
         // These variables are used in executeCommand and executeScript, so we keep them as var
         // instead of val and use a separate initializer
         isSessionRooted = executeCommandUnsafe("id").contains("uid=0(root)")
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/UserInfo.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/UserInfo.kt
new file mode 100644
index 0000000..215810f
--- /dev/null
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/UserInfo.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.benchmark
+
+import android.os.Parcel
+import android.os.Process
+
+internal object UserInfo {
+
+    val currentUserId: Int
+        get() {
+            Overrides.currentUserId?.let { return it }
+
+            // UserHandle does not have public api but it's parcelable so we can read through that.
+            val parcel = Parcel.obtain()
+            Process.myUserHandle().writeToParcel(parcel, 0)
+            parcel.setDataPosition(0)
+            return parcel.readInt()
+        }
+
+    internal object Overrides {
+
+        var currentUserId: Int? = null
+    }
+}
diff --git a/camera/camera-camera2/api/1.3.0-beta03.txt b/camera/camera-camera2/api/1.3.0-beta03.txt
index 87c79d0..1f2bf8d 100644
--- a/camera/camera-camera2/api/1.3.0-beta03.txt
+++ b/camera/camera-camera2/api/1.3.0-beta03.txt
@@ -40,7 +40,7 @@
     method public <ValueT> ValueT? getCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
   }
 
-  @RequiresApi(21) public static final class CaptureRequestOptions.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.camera2.interop.CaptureRequestOptions> {
+  @RequiresApi(21) public static final class CaptureRequestOptions.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.camera2.interop.CaptureRequestOptions!> {
     ctor public CaptureRequestOptions.Builder();
     method public androidx.camera.camera2.interop.CaptureRequestOptions build();
     method public <ValueT> androidx.camera.camera2.interop.CaptureRequestOptions.Builder clearCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
diff --git a/camera/camera-camera2/api/restricted_1.3.0-beta03.txt b/camera/camera-camera2/api/restricted_1.3.0-beta03.txt
index 87c79d0..1f2bf8d 100644
--- a/camera/camera-camera2/api/restricted_1.3.0-beta03.txt
+++ b/camera/camera-camera2/api/restricted_1.3.0-beta03.txt
@@ -40,7 +40,7 @@
     method public <ValueT> ValueT? getCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
   }
 
-  @RequiresApi(21) public static final class CaptureRequestOptions.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.camera2.interop.CaptureRequestOptions> {
+  @RequiresApi(21) public static final class CaptureRequestOptions.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.camera2.interop.CaptureRequestOptions!> {
     ctor public CaptureRequestOptions.Builder();
     method public androidx.camera.camera2.interop.CaptureRequestOptions build();
     method public <ValueT> androidx.camera.camera2.interop.CaptureRequestOptions.Builder clearCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
diff --git a/camera/camera-core/api/1.3.0-beta03.txt b/camera/camera-core/api/1.3.0-beta03.txt
index adace2b..aaa56c0 100644
--- a/camera/camera-core/api/1.3.0-beta03.txt
+++ b/camera/camera-core/api/1.3.0-beta03.txt
@@ -267,7 +267,7 @@
     method public default void updateTransform(android.graphics.Matrix?);
   }
 
-  public static final class ImageAnalysis.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageAnalysis> {
+  public static final class ImageAnalysis.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageAnalysis!> {
     ctor public ImageAnalysis.Builder();
     method public androidx.camera.core.ImageAnalysis build();
     method public androidx.camera.core.ImageAnalysis.Builder setBackgroundExecutor(java.util.concurrent.Executor);
@@ -307,7 +307,7 @@
     field public static final int FLASH_MODE_ON = 1; // 0x1
   }
 
-  public static final class ImageCapture.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageCapture> {
+  public static final class ImageCapture.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageCapture!> {
     ctor public ImageCapture.Builder();
     method public androidx.camera.core.ImageCapture build();
     method public androidx.camera.core.ImageCapture.Builder setCaptureMode(int);
@@ -432,7 +432,7 @@
     method public void setTargetRotation(int);
   }
 
-  public static final class Preview.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.Preview> {
+  public static final class Preview.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.Preview!> {
     ctor public Preview.Builder();
     method public androidx.camera.core.Preview build();
     method public androidx.camera.core.Preview.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
diff --git a/camera/camera-core/api/restricted_1.3.0-beta03.txt b/camera/camera-core/api/restricted_1.3.0-beta03.txt
index adace2b..aaa56c0 100644
--- a/camera/camera-core/api/restricted_1.3.0-beta03.txt
+++ b/camera/camera-core/api/restricted_1.3.0-beta03.txt
@@ -267,7 +267,7 @@
     method public default void updateTransform(android.graphics.Matrix?);
   }
 
-  public static final class ImageAnalysis.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageAnalysis> {
+  public static final class ImageAnalysis.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageAnalysis!> {
     ctor public ImageAnalysis.Builder();
     method public androidx.camera.core.ImageAnalysis build();
     method public androidx.camera.core.ImageAnalysis.Builder setBackgroundExecutor(java.util.concurrent.Executor);
@@ -307,7 +307,7 @@
     field public static final int FLASH_MODE_ON = 1; // 0x1
   }
 
-  public static final class ImageCapture.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageCapture> {
+  public static final class ImageCapture.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageCapture!> {
     ctor public ImageCapture.Builder();
     method public androidx.camera.core.ImageCapture build();
     method public androidx.camera.core.ImageCapture.Builder setCaptureMode(int);
@@ -432,7 +432,7 @@
     method public void setTargetRotation(int);
   }
 
-  public static final class Preview.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.Preview> {
+  public static final class Preview.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.Preview!> {
     ctor public Preview.Builder();
     method public androidx.camera.core.Preview build();
     method public androidx.camera.core.Preview.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
diff --git a/camera/camera-video/api/1.3.0-beta03.txt b/camera/camera-video/api/1.3.0-beta03.txt
index b9cc77a..c877562 100644
--- a/camera/camera-video/api/1.3.0-beta03.txt
+++ b/camera/camera-video/api/1.3.0-beta03.txt
@@ -155,7 +155,7 @@
     method public static <T extends androidx.camera.video.VideoOutput> androidx.camera.video.VideoCapture<T!> withOutput(T);
   }
 
-  @RequiresApi(21) public static final class VideoCapture.Builder<T extends androidx.camera.video.VideoOutput> implements androidx.camera.core.ExtendableBuilder<androidx.camera.video.VideoCapture> {
+  @RequiresApi(21) public static final class VideoCapture.Builder<T extends androidx.camera.video.VideoOutput> implements androidx.camera.core.ExtendableBuilder<androidx.camera.video.VideoCapture!> {
     ctor public VideoCapture.Builder(T);
     method public androidx.camera.video.VideoCapture<T!> build();
     method public androidx.camera.video.VideoCapture.Builder<T!> setDynamicRange(androidx.camera.core.DynamicRange);
diff --git a/camera/camera-video/api/restricted_1.3.0-beta03.txt b/camera/camera-video/api/restricted_1.3.0-beta03.txt
index b9cc77a..c877562 100644
--- a/camera/camera-video/api/restricted_1.3.0-beta03.txt
+++ b/camera/camera-video/api/restricted_1.3.0-beta03.txt
@@ -155,7 +155,7 @@
     method public static <T extends androidx.camera.video.VideoOutput> androidx.camera.video.VideoCapture<T!> withOutput(T);
   }
 
-  @RequiresApi(21) public static final class VideoCapture.Builder<T extends androidx.camera.video.VideoOutput> implements androidx.camera.core.ExtendableBuilder<androidx.camera.video.VideoCapture> {
+  @RequiresApi(21) public static final class VideoCapture.Builder<T extends androidx.camera.video.VideoOutput> implements androidx.camera.core.ExtendableBuilder<androidx.camera.video.VideoCapture!> {
     ctor public VideoCapture.Builder(T);
     method public androidx.camera.video.VideoCapture<T!> build();
     method public androidx.camera.video.VideoCapture.Builder<T!> setDynamicRange(androidx.camera.core.DynamicRange);
diff --git a/car/app/app/api/1.4.0-beta02.txt b/car/app/app/api/1.4.0-beta02.txt
index 7fbc9b6..bf0b97a 100644
--- a/car/app/app/api/1.4.0-beta02.txt
+++ b/car/app/app/api/1.4.0-beta02.txt
@@ -55,7 +55,7 @@
     method public int getCarAppApiLevel();
     method public <T> T getCarService(Class<T!>);
     method public Object getCarService(String);
-    method public String getCarServiceName(Class<?>);
+    method public String getCarServiceName(Class<? extends java.lang.Object!>);
     method public androidx.car.app.HostInfo? getHostInfo();
     method public androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher();
     method public boolean isDarkMode();
diff --git a/car/app/app/api/restricted_1.4.0-beta02.txt b/car/app/app/api/restricted_1.4.0-beta02.txt
index 7fbc9b6..bf0b97a 100644
--- a/car/app/app/api/restricted_1.4.0-beta02.txt
+++ b/car/app/app/api/restricted_1.4.0-beta02.txt
@@ -55,7 +55,7 @@
     method public int getCarAppApiLevel();
     method public <T> T getCarService(Class<T!>);
     method public Object getCarService(String);
-    method public String getCarServiceName(Class<?>);
+    method public String getCarServiceName(Class<? extends java.lang.Object!>);
     method public androidx.car.app.HostInfo? getHostInfo();
     method public androidx.activity.OnBackPressedDispatcher getOnBackPressedDispatcher();
     method public boolean isDarkMode();
diff --git a/collection/collection/api/1.4.0-beta02.txt b/collection/collection/api/1.4.0-beta02.txt
index a9eb715..ce41840 100644
--- a/collection/collection/api/1.4.0-beta02.txt
+++ b/collection/collection/api/1.4.0-beta02.txt
@@ -5,7 +5,7 @@
     ctor public ArrayMap();
     ctor public ArrayMap(androidx.collection.SimpleArrayMap?);
     ctor public ArrayMap(int);
-    method public boolean containsAll(java.util.Collection<?>);
+    method public boolean containsAll(java.util.Collection<? extends java.lang.Object!>);
     method public boolean containsKey(Object?);
     method public boolean containsValue(Object?);
     method public java.util.Set<java.util.Map.Entry<K!,V!>!> entrySet();
@@ -13,8 +13,8 @@
     method public java.util.Set<K!> keySet();
     method public void putAll(java.util.Map<? extends K!,? extends V!>);
     method public V! remove(Object?);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public boolean retainAll(java.util.Collection<?>);
+    method public boolean removeAll(java.util.Collection<? extends java.lang.Object!>);
+    method public boolean retainAll(java.util.Collection<? extends java.lang.Object!>);
     method public java.util.Collection<V!> values();
   }
 
diff --git a/collection/collection/api/restricted_1.4.0-beta02.txt b/collection/collection/api/restricted_1.4.0-beta02.txt
index 91368d2..d95fcbc 100644
--- a/collection/collection/api/restricted_1.4.0-beta02.txt
+++ b/collection/collection/api/restricted_1.4.0-beta02.txt
@@ -5,7 +5,7 @@
     ctor public ArrayMap();
     ctor public ArrayMap(androidx.collection.SimpleArrayMap?);
     ctor public ArrayMap(int);
-    method public boolean containsAll(java.util.Collection<?>);
+    method public boolean containsAll(java.util.Collection<? extends java.lang.Object!>);
     method public boolean containsKey(Object?);
     method public boolean containsValue(Object?);
     method public java.util.Set<java.util.Map.Entry<K!,V!>!> entrySet();
@@ -13,8 +13,8 @@
     method public java.util.Set<K!> keySet();
     method public void putAll(java.util.Map<? extends K!,? extends V!>);
     method public V! remove(Object?);
-    method public boolean removeAll(java.util.Collection<?>);
-    method public boolean retainAll(java.util.Collection<?>);
+    method public boolean removeAll(java.util.Collection<? extends java.lang.Object!>);
+    method public boolean retainAll(java.util.Collection<? extends java.lang.Object!>);
     method public java.util.Collection<V!> values();
   }
 
diff --git a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt
index 16f6d92..1a7bcdb 100644
--- a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt
+++ b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/popupexample/AppContent.jvm.kt
@@ -64,6 +64,7 @@
 import androidx.compose.ui.window.DialogWindow
 import androidx.compose.ui.window.Notification
 import androidx.compose.ui.window.Popup
+import androidx.compose.ui.window.PopupProperties
 import androidx.compose.ui.window.TrayState
 import androidx.compose.ui.window.Window
 import androidx.compose.ui.window.WindowPlacement
@@ -297,8 +298,10 @@
             Popup(
                 alignment = Alignment.TopCenter,
                 offset = IntOffset(0, 50),
-                focusable = true,
-                onDismissRequest = onDismiss
+                onDismissRequest = onDismiss,
+                properties = PopupProperties(
+                    focusable = true
+                )
             ) {
                 println("CompositionLocal value is ${LocalTest.current}.")
                 PopupContent(onDismiss)
diff --git a/compose/foundation/foundation/api/1.7.0-beta02.txt b/compose/foundation/foundation/api/1.7.0-beta02.txt
index 3e92e84..3fe9104 100644
--- a/compose/foundation/foundation/api/1.7.0-beta02.txt
+++ b/compose/foundation/foundation/api/1.7.0-beta02.txt
@@ -176,14 +176,14 @@
   }
 
   public final class MarqueeDefaults {
-    method public int getDefaultMarqueeIterations();
-    method public int getDefaultMarqueeRepeatDelayMillis();
-    method public androidx.compose.foundation.MarqueeSpacing getDefaultMarqueeSpacing();
-    method public float getDefaultMarqueeVelocity();
-    property public final int DefaultMarqueeIterations;
-    property public final int DefaultMarqueeRepeatDelayMillis;
-    property public final androidx.compose.foundation.MarqueeSpacing DefaultMarqueeSpacing;
-    property public final float DefaultMarqueeVelocity;
+    method public int getDefaultIterations();
+    method public int getDefaultRepeatDelayMillis();
+    method public androidx.compose.foundation.MarqueeSpacing getDefaultSpacing();
+    method public float getDefaultVelocity();
+    property public final int DefaultIterations;
+    property public final int DefaultRepeatDelayMillis;
+    property public final androidx.compose.foundation.MarqueeSpacing DefaultSpacing;
+    property public final float DefaultVelocity;
     field public static final androidx.compose.foundation.MarqueeDefaults INSTANCE;
   }
 
diff --git a/compose/foundation/foundation/api/current.ignore b/compose/foundation/foundation/api/current.ignore
index 5f7ef21..9867267 100644
--- a/compose/foundation/foundation/api/current.ignore
+++ b/compose/foundation/foundation/api/current.ignore
@@ -1,3 +1,19 @@
 // Baseline format: 1.0
-AddedClass: androidx.compose.foundation.lazy.grid.LazyGridPrefetchStrategyKt:
-    Added class androidx.compose.foundation.lazy.grid.LazyGridPrefetchStrategyKt
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultIterations():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultIterations()
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultRepeatDelayMillis():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultRepeatDelayMillis()
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultSpacing():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultSpacing()
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultVelocity():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultVelocity()
+
+
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeIterations():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeIterations()
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeRepeatDelayMillis():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeRepeatDelayMillis()
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeSpacing():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeSpacing()
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeVelocity():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeVelocity()
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index 3e92e84..3fe9104 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -176,14 +176,14 @@
   }
 
   public final class MarqueeDefaults {
-    method public int getDefaultMarqueeIterations();
-    method public int getDefaultMarqueeRepeatDelayMillis();
-    method public androidx.compose.foundation.MarqueeSpacing getDefaultMarqueeSpacing();
-    method public float getDefaultMarqueeVelocity();
-    property public final int DefaultMarqueeIterations;
-    property public final int DefaultMarqueeRepeatDelayMillis;
-    property public final androidx.compose.foundation.MarqueeSpacing DefaultMarqueeSpacing;
-    property public final float DefaultMarqueeVelocity;
+    method public int getDefaultIterations();
+    method public int getDefaultRepeatDelayMillis();
+    method public androidx.compose.foundation.MarqueeSpacing getDefaultSpacing();
+    method public float getDefaultVelocity();
+    property public final int DefaultIterations;
+    property public final int DefaultRepeatDelayMillis;
+    property public final androidx.compose.foundation.MarqueeSpacing DefaultSpacing;
+    property public final float DefaultVelocity;
     field public static final androidx.compose.foundation.MarqueeDefaults INSTANCE;
   }
 
diff --git a/compose/foundation/foundation/api/restricted_1.7.0-beta02.txt b/compose/foundation/foundation/api/restricted_1.7.0-beta02.txt
index 3a3becc..200242f 100644
--- a/compose/foundation/foundation/api/restricted_1.7.0-beta02.txt
+++ b/compose/foundation/foundation/api/restricted_1.7.0-beta02.txt
@@ -176,14 +176,14 @@
   }
 
   public final class MarqueeDefaults {
-    method public int getDefaultMarqueeIterations();
-    method public int getDefaultMarqueeRepeatDelayMillis();
-    method public androidx.compose.foundation.MarqueeSpacing getDefaultMarqueeSpacing();
-    method public float getDefaultMarqueeVelocity();
-    property public final int DefaultMarqueeIterations;
-    property public final int DefaultMarqueeRepeatDelayMillis;
-    property public final androidx.compose.foundation.MarqueeSpacing DefaultMarqueeSpacing;
-    property public final float DefaultMarqueeVelocity;
+    method public int getDefaultIterations();
+    method public int getDefaultRepeatDelayMillis();
+    method public androidx.compose.foundation.MarqueeSpacing getDefaultSpacing();
+    method public float getDefaultVelocity();
+    property public final int DefaultIterations;
+    property public final int DefaultRepeatDelayMillis;
+    property public final androidx.compose.foundation.MarqueeSpacing DefaultSpacing;
+    property public final float DefaultVelocity;
     field public static final androidx.compose.foundation.MarqueeDefaults INSTANCE;
   }
 
diff --git a/compose/foundation/foundation/api/restricted_current.ignore b/compose/foundation/foundation/api/restricted_current.ignore
index 5f7ef21..9867267 100644
--- a/compose/foundation/foundation/api/restricted_current.ignore
+++ b/compose/foundation/foundation/api/restricted_current.ignore
@@ -1,3 +1,19 @@
 // Baseline format: 1.0
-AddedClass: androidx.compose.foundation.lazy.grid.LazyGridPrefetchStrategyKt:
-    Added class androidx.compose.foundation.lazy.grid.LazyGridPrefetchStrategyKt
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultIterations():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultIterations()
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultRepeatDelayMillis():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultRepeatDelayMillis()
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultSpacing():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultSpacing()
+AddedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultVelocity():
+    Added method androidx.compose.foundation.MarqueeDefaults.getDefaultVelocity()
+
+
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeIterations():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeIterations()
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeRepeatDelayMillis():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeRepeatDelayMillis()
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeSpacing():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeSpacing()
+RemovedMethod: androidx.compose.foundation.MarqueeDefaults#getDefaultMarqueeVelocity():
+    Removed method androidx.compose.foundation.MarqueeDefaults.getDefaultMarqueeVelocity()
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index 3a3becc..200242f 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -176,14 +176,14 @@
   }
 
   public final class MarqueeDefaults {
-    method public int getDefaultMarqueeIterations();
-    method public int getDefaultMarqueeRepeatDelayMillis();
-    method public androidx.compose.foundation.MarqueeSpacing getDefaultMarqueeSpacing();
-    method public float getDefaultMarqueeVelocity();
-    property public final int DefaultMarqueeIterations;
-    property public final int DefaultMarqueeRepeatDelayMillis;
-    property public final androidx.compose.foundation.MarqueeSpacing DefaultMarqueeSpacing;
-    property public final float DefaultMarqueeVelocity;
+    method public int getDefaultIterations();
+    method public int getDefaultRepeatDelayMillis();
+    method public androidx.compose.foundation.MarqueeSpacing getDefaultSpacing();
+    method public float getDefaultVelocity();
+    property public final int DefaultIterations;
+    property public final int DefaultRepeatDelayMillis;
+    property public final androidx.compose.foundation.MarqueeSpacing DefaultSpacing;
+    property public final float DefaultVelocity;
     field public static final androidx.compose.foundation.MarqueeDefaults INSTANCE;
   }
 
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/build.gradle b/compose/foundation/foundation/integration-tests/foundation-demos/build.gradle
index 35eb15d..063a475 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/build.gradle
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/build.gradle
@@ -29,8 +29,9 @@
     implementation(project(":activity:activity-compose"))
     implementation(project(":compose:animation:animation"))
     implementation(project(":compose:foundation:foundation"))
-    implementation(project(":compose:foundation:foundation-layout"))
     implementation(project(":compose:foundation:foundation:foundation-samples"))
+    implementation(project(":compose:foundation:foundation-layout"))
+    implementation(project(":compose:foundation:foundation-layout:foundation-layout-samples"))
     implementation(project(":compose:integration-tests:demos:common"))
     implementation(project(":compose:material:material"))
     implementation(project(":compose:runtime:runtime"))
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BasicMarqueeDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BasicMarqueeDemo.kt
index db2bd5e..121e25e 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BasicMarqueeDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BasicMarqueeDemo.kt
@@ -24,7 +24,7 @@
 import androidx.compose.foundation.MarqueeAnimationMode
 import androidx.compose.foundation.MarqueeAnimationMode.Companion.Immediately
 import androidx.compose.foundation.MarqueeAnimationMode.Companion.WhileFocused
-import androidx.compose.foundation.MarqueeDefaults.DefaultMarqueeVelocity
+import androidx.compose.foundation.MarqueeDefaults.DefaultVelocity
 import androidx.compose.foundation.basicMarquee
 import androidx.compose.foundation.border
 import androidx.compose.foundation.clickable
@@ -96,7 +96,7 @@
         MarqueeText(
             "backwards animation",
             Modifier.width(80.dp),
-            velocity = -DefaultMarqueeVelocity
+            velocity = -DefaultVelocity
         )
         MarqueeWithClickable()
         Row {
@@ -177,7 +177,7 @@
     text: String,
     modifier: Modifier = Modifier,
     animationMode: MarqueeAnimationMode = Immediately,
-    velocity: Dp = DefaultMarqueeVelocity
+    velocity: Dp = DefaultVelocity
 ) {
     var isFocused by remember { mutableStateOf(false) }
     val focusRequester = remember { FocusRequester() }
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemos.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemos.kt
index 44cc5f7..fb49236 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemos.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/TextDemos.kt
@@ -35,6 +35,7 @@
 import androidx.compose.foundation.demos.text2.TextFieldCursorNotBlinkingInUnfocusedWindowDemo
 import androidx.compose.foundation.demos.text2.TextFieldLineLimitsDemos
 import androidx.compose.foundation.demos.text2.TextFieldReceiveContentDemo
+import androidx.compose.foundation.layout.samples.windowInsetsNestedScrollDemo
 import androidx.compose.foundation.samples.BasicTextFieldUndoSample
 import androidx.compose.foundation.samples.HandwritingDetectorSample
 import androidx.compose.integration.demos.common.ComposableDemo
@@ -214,6 +215,7 @@
         ),
         ComposableDemo("\uD83D\uDD17 Hyperlinks") { Hyperlinks() },
         ComposableDemo("Text Pointer Icon") { TextPointerIconDemo() },
-        ComposableDemo("Html") { AnnotatedStringFromHtml() }
+        ComposableDemo("Html") { AnnotatedStringFromHtml() },
+        ComposableDemo("Show/hide keyboard via scroll") { windowInsetsNestedScrollDemo() },
     )
 )
diff --git a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/input/BasicTextFieldImmIntegrationTest.kt b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/input/BasicTextFieldImmIntegrationTest.kt
index ed77fd8..b3124db 100644
--- a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/input/BasicTextFieldImmIntegrationTest.kt
+++ b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text/input/BasicTextFieldImmIntegrationTest.kt
@@ -45,7 +45,6 @@
 import androidx.compose.ui.text.intl.LocaleList
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.FlakyTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
@@ -210,7 +209,39 @@
     }
 
     @Test
-    fun immUpdated_whenFilterChangesText_fromInputConnection() {
+    fun immUpdated_whenFilterChangesText_withComposition_fromInputConnection() {
+        val state = TextFieldState()
+        inputMethodInterceptor.setTextFieldTestContent {
+            BasicTextField(
+                state = state,
+                modifier = Modifier.testTag(Tag),
+                inputTransformation = {
+                    // Force the selection not to change.
+                    val initialSelection = selection
+                    append("world")
+                    selection = initialSelection
+                }
+            )
+        }
+        requestFocus(Tag)
+        inputMethodInterceptor.withInputConnection {
+            // TODO move this before withInputConnection?
+            imm.resetCalls()
+
+            setComposingText("hello", 1)
+
+            @Suppress("SpellCheckingInspection")
+            assertThat(state.text.toString()).isEqualTo("helloworld")
+        }
+
+        rule.runOnIdle {
+            imm.expectCall("restartInput")
+            imm.expectNoMoreCalls()
+        }
+    }
+
+    @Test
+    fun immNotUpdated_whenFilterChangesText_withoutComposition_fromInputConnection() {
         val state = TextFieldState()
         inputMethodInterceptor.setTextFieldTestContent {
             BasicTextField(
@@ -236,13 +267,12 @@
         }
 
         rule.runOnIdle {
-            imm.expectCall("restartInput")
             imm.expectNoMoreCalls()
         }
     }
 
     @Test
-    fun immUpdated_whenFilterChangesText_fromKeyEvent() {
+    fun immNotUpdated_whenFilterChangesText_withoutComposition_fromKeyEvent() {
         val state = TextFieldState()
         inputMethodInterceptor.setContent {
             BasicTextField(
@@ -261,12 +291,10 @@
         rule.onNodeWithTag(Tag).performKeyInput { pressKey(Key.A) }
 
         rule.runOnIdle {
-            imm.expectCall("restartInput")
             imm.expectNoMoreCalls()
         }
     }
 
-    @FlakyTest(bugId = 290927588)
     @Test
     fun immUpdated_whenFilterChangesSelection_fromInputConnection() {
         val state = TextFieldState()
@@ -284,13 +312,14 @@
         }
 
         rule.runOnIdle {
-            imm.expectCall("updateSelection(0, 5, 0, 5)")
+            // nullify composition since selection has been changed programmatically
+            imm.expectCall("updateSelection(0, 5, -1, -1)")
             imm.expectNoMoreCalls()
         }
     }
 
     @Test
-    fun immUpdated_whenEditChangesText() {
+    fun immNotUpdated_whenEditOnlyChangesText() {
         val state = TextFieldState()
         inputMethodInterceptor.setContent {
             BasicTextField(state, Modifier.testTag(Tag))
@@ -306,7 +335,6 @@
         }
 
         rule.runOnIdle {
-            imm.expectCall("restartInput")
             imm.expectNoMoreCalls()
         }
     }
@@ -350,7 +378,6 @@
 
         rule.runOnIdle {
             imm.expectCall("updateSelection(5, 5, -1, -1)")
-            imm.expectCall("restartInput")
             imm.expectNoMoreCalls()
         }
     }
diff --git a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/text/input/internal/AndroidTextInputSession.android.kt b/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/text/input/internal/AndroidTextInputSession.android.kt
index 9c0c8cb..af1dd92 100644
--- a/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/text/input/internal/AndroidTextInputSession.android.kt
+++ b/compose/foundation/foundation/src/androidMain/kotlin/androidx/compose/foundation/text/input/internal/AndroidTextInputSession.android.kt
@@ -37,7 +37,6 @@
 import androidx.compose.ui.platform.ViewConfiguration
 import androidx.compose.ui.text.input.ImeAction
 import androidx.compose.ui.text.input.ImeOptions
-import androidx.compose.ui.text.input.KeyboardType
 import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.flow.MutableSharedFlow
@@ -88,7 +87,15 @@
                 val oldComposition = oldValue.composition
                 val newComposition = newValue.composition
 
-                if ((oldSelection != newSelection) || oldComposition != newComposition) {
+                // No need to restart the IME if there wasn't a composing region. This is useful
+                // to not unnecessarily restart filtered digit only, or password fields.
+                if (restartImeIfContentChanges &&
+                    oldValue.composition != null &&
+                    !oldValue.contentEquals(newValue)
+                ) {
+                    composeImm.restartInput()
+                } else if (oldSelection != newSelection || oldComposition != newComposition) {
+                    // Don't call updateSelection if input is going to be restarted anyway
                     composeImm.updateSelection(
                         selectionStart = newSelection.min,
                         selectionEnd = newSelection.max,
@@ -96,15 +103,6 @@
                         compositionEnd = newComposition?.max ?: -1
                     )
                 }
-
-                // No need to restart the IME if keyboard type is configured as Password. IME
-                // should not keep an internal input state if the content needs to be secured.
-                if (restartImeIfContentChanges &&
-                    !oldValue.contentEquals(newValue) &&
-                    imeOptions.keyboardType != KeyboardType.Password
-                ) {
-                    composeImm.restartInput()
-                }
             }
         }
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/BasicMarquee.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/BasicMarquee.kt
index 3496e0b8..fdd3c58 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/BasicMarquee.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/BasicMarquee.kt
@@ -27,10 +27,10 @@
 import androidx.compose.foundation.FixedMotionDurationScale.scaleFactor
 import androidx.compose.foundation.MarqueeAnimationMode.Companion.Immediately
 import androidx.compose.foundation.MarqueeAnimationMode.Companion.WhileFocused
-import androidx.compose.foundation.MarqueeDefaults.DefaultMarqueeIterations
-import androidx.compose.foundation.MarqueeDefaults.DefaultMarqueeRepeatDelayMillis
-import androidx.compose.foundation.MarqueeDefaults.DefaultMarqueeSpacing
-import androidx.compose.foundation.MarqueeDefaults.DefaultMarqueeVelocity
+import androidx.compose.foundation.MarqueeDefaults.DefaultIterations
+import androidx.compose.foundation.MarqueeDefaults.DefaultRepeatDelayMillis
+import androidx.compose.foundation.MarqueeDefaults.DefaultSpacing
+import androidx.compose.foundation.MarqueeDefaults.DefaultVelocity
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.getValue
@@ -81,26 +81,26 @@
      */
     // From https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/widget/TextView.java;l=736;drc=6d97d6d7215fef247d1a90e05545cac3676f9212
     @Suppress("MayBeConstant")
-    val DefaultMarqueeIterations: Int = 3
+    val DefaultIterations: Int = 3
 
     /**
      * Default value for the `repeatDelayMillis` parameter to [basicMarquee].
      */
     // From https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/widget/TextView.java;l=13979;drc=6d97d6d7215fef247d1a90e05545cac3676f9212
     @Suppress("MayBeConstant")
-    val DefaultMarqueeRepeatDelayMillis: Int = 1_200
+    val DefaultRepeatDelayMillis: Int = 1_200
 
     /**
      * Default value for the `spacing` parameter to [basicMarquee].
      */
     // From https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/widget/TextView.java;l=14088;drc=6d97d6d7215fef247d1a90e05545cac3676f9212
-    val DefaultMarqueeSpacing: MarqueeSpacing = MarqueeSpacing.fractionOfContainer(1f / 3f)
+    val DefaultSpacing: MarqueeSpacing = MarqueeSpacing.fractionOfContainer(1f / 3f)
 
     /**
      * Default value for the `velocity` parameter to [basicMarquee].
      */
     // From https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/widget/TextView.java;l=13980;drc=6d97d6d7215fef247d1a90e05545cac3676f9212
-    val DefaultMarqueeVelocity: Dp = 30.dp
+    val DefaultVelocity: Dp = 30.dp
 }
 
 /**
@@ -142,13 +142,13 @@
  */
 @Stable
 fun Modifier.basicMarquee(
-    iterations: Int = DefaultMarqueeIterations,
+    iterations: Int = DefaultIterations,
     animationMode: MarqueeAnimationMode = Immediately,
     // TODO(aosp/2339066) Consider taking an AnimationSpec instead of specific configuration params.
-    repeatDelayMillis: Int = DefaultMarqueeRepeatDelayMillis,
+    repeatDelayMillis: Int = DefaultRepeatDelayMillis,
     initialDelayMillis: Int = if (animationMode == Immediately) repeatDelayMillis else 0,
-    spacing: MarqueeSpacing = DefaultMarqueeSpacing,
-    velocity: Dp = DefaultMarqueeVelocity
+    spacing: MarqueeSpacing = DefaultSpacing,
+    velocity: Dp = DefaultVelocity
 ): Modifier = this then MarqueeModifierElement(
     iterations = iterations,
     animationMode = animationMode,
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt
index 5b16fcc..d28c709 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicContextMenuRepresentation.desktop.kt
@@ -40,6 +40,7 @@
 import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.window.Popup
+import androidx.compose.ui.window.PopupProperties
 import androidx.compose.ui.window.rememberCursorPositionProvider
 
 // Design of basic represenation is from Material specs:
@@ -68,9 +69,9 @@
         val isOpen = state.status is ContextMenuState.Status.Open
         if (isOpen) {
             Popup(
-                focusable = true,
+                popupPositionProvider = rememberCursorPositionProvider(),
                 onDismissRequest = { state.status = ContextMenuState.Status.Closed },
-                popupPositionProvider = rememberCursorPositionProvider()
+                properties = PopupProperties(focusable = true)
             ) {
                 Column(
                     modifier = Modifier
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicTooltip.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicTooltip.desktop.kt
index b4ffef2..a0abc54 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicTooltip.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/BasicTooltip.desktop.kt
@@ -21,6 +21,7 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.window.Popup
 import androidx.compose.ui.window.PopupPositionProvider
+import androidx.compose.ui.window.PopupProperties
 
 /**
  * BasicTooltipBox that wraps a composable with a tooltip.
@@ -53,13 +54,18 @@
     enableUserInput: Boolean,
     content: @Composable () -> Unit
 ) {
+    // TODO: Reuse android implementation - there is no platform specifics here.
+    //  Use expect/actual only for string resources
     Box(modifier = modifier) {
         content()
         if (state.isVisible) {
             Popup(
                 popupPositionProvider = positionProvider,
                 onDismissRequest = { state.dismiss() },
-                focusable = focusable
+                properties = PopupProperties(
+                    // TODO(b/326167778): focusable = true cannot work with mouse
+                    focusable = false
+                )
             ) { tooltip() }
         }
     }
diff --git a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextSamples.kt b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextSamples.kt
new file mode 100644
index 0000000..6ed29c7
--- /dev/null
+++ b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextSamples.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.material.samples
+
+import androidx.annotation.Sampled
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.text.LinkAnnotation
+import androidx.compose.ui.text.SpanStyle
+import androidx.compose.ui.text.TextLinkStyles
+import androidx.compose.ui.text.buildAnnotatedString
+import androidx.compose.ui.text.style.TextDecoration
+import androidx.compose.ui.text.withLink
+
+@Sampled
+@Composable
+fun TextWithLinks() {
+    val url = "https://developer.android.com/jetpack/compose"
+
+    val linkColor = MaterialTheme.colors.primary
+    val linkStyle = SpanStyle(color = linkColor, textDecoration = TextDecoration.Underline)
+
+    val annotatedString = buildAnnotatedString {
+        append("Build better apps faster with ")
+        withLink(
+            LinkAnnotation.Url(url = url, styles = TextLinkStyles(style = linkStyle))
+        ) {
+            append("Jetpack Compose")
+        }
+    }
+    // Note that if your string is defined in resources, you can pass the same link style object
+    // when constructing the AnnotatedString using the AnnotatedString.fromHtml method.
+    Text(annotatedString)
+}
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Text.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Text.kt
index 5fc4f0d..b527f7b 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Text.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Text.kt
@@ -222,6 +222,9 @@
  * [Text] or element containing this [Text] to adapt to different background colors and still
  * maintain contrast and accessibility.
  *
+ * See an example of displaying text with links where links apply the styling from the theme:
+ * @sample androidx.compose.material.samples.TextWithLinks
+ *
  * @param text The text to be displayed.
  * @param modifier [Modifier] to apply to this layout node.
  * @param color [Color] to apply to the text. If [Color.Unspecified], and [style] has no color set,
diff --git a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt
index 22dfdd9..f755c0c 100644
--- a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt
+++ b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopAlertDialog.desktop.kt
@@ -191,6 +191,7 @@
         // [alignment] property of [Popup] and have to use [Box] that fills all the
         // available space. Also [Box] provides a dismiss request feature when clicked
         // outside of the [AlertDialog] content.
+        @Suppress("DEPRECATION") // Will be removed in aosp/3077146
         Popup(
             popupPositionProvider = object : PopupPositionProvider {
                 override fun calculatePosition(
diff --git a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
index dc5e6c2..fad8335 100644
--- a/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
+++ b/compose/material/material/src/desktopMain/kotlin/androidx/compose/material/DesktopMenu.desktop.kt
@@ -170,6 +170,7 @@
             transformOriginState.value = calculateTransformOrigin(parentBounds, menuBounds)
         }
 
+        @Suppress("DEPRECATION") // Will be removed in aosp/3077093
         Popup(
             focusable = focusable,
             onDismissRequest = onDismissRequest,
@@ -294,6 +295,7 @@
     if (expandedStates.currentState || expandedStates.targetState) {
         val transformOriginState = remember { mutableStateOf(TransformOrigin.Center) }
 
+        @Suppress("DEPRECATION") // Will be removed in aosp/3077093
         Popup(
             focusable = focusable,
             onDismissRequest = onDismissRequest,
diff --git a/compose/material3/material3/api/1.3.0-beta01.txt b/compose/material3/material3/api/1.3.0-beta01.txt
index c4a1b23..f92b5a9 100644
--- a/compose/material3/material3/api/1.3.0-beta01.txt
+++ b/compose/material3/material3/api/1.3.0-beta01.txt
@@ -17,12 +17,15 @@
     field public static final androidx.compose.material3.AlertDialogDefaults INSTANCE;
   }
 
-  public final class AndroidAlertDialog_androidKt {
+  public final class AlertDialogKt {
     method @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void BasicAlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
+  public final class AndroidAlertDialog_androidKt {
+    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
+  }
+
   public final class AndroidMenu_androidKt {
     method @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional float tonalElevation, optional float shadowElevation, optional androidx.compose.foundation.BorderStroke? border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
     method @Deprecated @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
@@ -2009,6 +2012,8 @@
   }
 
   public final class TooltipKt {
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void TooltipBox(androidx.compose.ui.window.PopupPositionProvider positionProvider, kotlin.jvm.functions.Function1<? super androidx.compose.material3.TooltipScope,kotlin.Unit> tooltip, androidx.compose.material3.TooltipState state, optional androidx.compose.ui.Modifier modifier, optional boolean focusable, optional boolean enableUserInput, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public static androidx.compose.material3.TooltipState TooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static androidx.compose.material3.TooltipState rememberTooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
@@ -2030,11 +2035,6 @@
     property public abstract androidx.compose.animation.core.MutableTransitionState<java.lang.Boolean> transition;
   }
 
-  public final class Tooltip_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
-  }
-
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Stable public final class TopAppBarColors {
     ctor public TopAppBarColors(long containerColor, long scrolledContainerColor, long navigationIconContentColor, long titleContentColor, long actionIconContentColor);
     method public androidx.compose.material3.TopAppBarColors copy(optional long containerColor, optional long scrolledContainerColor, optional long navigationIconContentColor, optional long titleContentColor, optional long actionIconContentColor);
diff --git a/compose/material3/material3/api/current.txt b/compose/material3/material3/api/current.txt
index c4a1b23..f92b5a9 100644
--- a/compose/material3/material3/api/current.txt
+++ b/compose/material3/material3/api/current.txt
@@ -17,12 +17,15 @@
     field public static final androidx.compose.material3.AlertDialogDefaults INSTANCE;
   }
 
-  public final class AndroidAlertDialog_androidKt {
+  public final class AlertDialogKt {
     method @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void BasicAlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
+  public final class AndroidAlertDialog_androidKt {
+    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
+  }
+
   public final class AndroidMenu_androidKt {
     method @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional float tonalElevation, optional float shadowElevation, optional androidx.compose.foundation.BorderStroke? border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
     method @Deprecated @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
@@ -2009,6 +2012,8 @@
   }
 
   public final class TooltipKt {
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void TooltipBox(androidx.compose.ui.window.PopupPositionProvider positionProvider, kotlin.jvm.functions.Function1<? super androidx.compose.material3.TooltipScope,kotlin.Unit> tooltip, androidx.compose.material3.TooltipState state, optional androidx.compose.ui.Modifier modifier, optional boolean focusable, optional boolean enableUserInput, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public static androidx.compose.material3.TooltipState TooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static androidx.compose.material3.TooltipState rememberTooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
@@ -2030,11 +2035,6 @@
     property public abstract androidx.compose.animation.core.MutableTransitionState<java.lang.Boolean> transition;
   }
 
-  public final class Tooltip_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
-  }
-
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Stable public final class TopAppBarColors {
     ctor public TopAppBarColors(long containerColor, long scrolledContainerColor, long navigationIconContentColor, long titleContentColor, long actionIconContentColor);
     method public androidx.compose.material3.TopAppBarColors copy(optional long containerColor, optional long scrolledContainerColor, optional long navigationIconContentColor, optional long titleContentColor, optional long actionIconContentColor);
diff --git a/compose/material3/material3/api/restricted_1.3.0-beta01.txt b/compose/material3/material3/api/restricted_1.3.0-beta01.txt
index c4a1b23..f92b5a9 100644
--- a/compose/material3/material3/api/restricted_1.3.0-beta01.txt
+++ b/compose/material3/material3/api/restricted_1.3.0-beta01.txt
@@ -17,12 +17,15 @@
     field public static final androidx.compose.material3.AlertDialogDefaults INSTANCE;
   }
 
-  public final class AndroidAlertDialog_androidKt {
+  public final class AlertDialogKt {
     method @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void BasicAlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
+  public final class AndroidAlertDialog_androidKt {
+    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
+  }
+
   public final class AndroidMenu_androidKt {
     method @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional float tonalElevation, optional float shadowElevation, optional androidx.compose.foundation.BorderStroke? border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
     method @Deprecated @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
@@ -2009,6 +2012,8 @@
   }
 
   public final class TooltipKt {
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void TooltipBox(androidx.compose.ui.window.PopupPositionProvider positionProvider, kotlin.jvm.functions.Function1<? super androidx.compose.material3.TooltipScope,kotlin.Unit> tooltip, androidx.compose.material3.TooltipState state, optional androidx.compose.ui.Modifier modifier, optional boolean focusable, optional boolean enableUserInput, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public static androidx.compose.material3.TooltipState TooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static androidx.compose.material3.TooltipState rememberTooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
@@ -2030,11 +2035,6 @@
     property public abstract androidx.compose.animation.core.MutableTransitionState<java.lang.Boolean> transition;
   }
 
-  public final class Tooltip_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
-  }
-
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Stable public final class TopAppBarColors {
     ctor public TopAppBarColors(long containerColor, long scrolledContainerColor, long navigationIconContentColor, long titleContentColor, long actionIconContentColor);
     method public androidx.compose.material3.TopAppBarColors copy(optional long containerColor, optional long scrolledContainerColor, optional long navigationIconContentColor, optional long titleContentColor, optional long actionIconContentColor);
diff --git a/compose/material3/material3/api/restricted_current.txt b/compose/material3/material3/api/restricted_current.txt
index c4a1b23..f92b5a9 100644
--- a/compose/material3/material3/api/restricted_current.txt
+++ b/compose/material3/material3/api/restricted_current.txt
@@ -17,12 +17,15 @@
     field public static final androidx.compose.material3.AlertDialogDefaults INSTANCE;
   }
 
-  public final class AndroidAlertDialog_androidKt {
+  public final class AlertDialogKt {
     method @Deprecated @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void BasicAlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
+  public final class AndroidAlertDialog_androidKt {
+    method @androidx.compose.runtime.Composable public static void AlertDialog(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, kotlin.jvm.functions.Function0<kotlin.Unit> confirmButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? dismissButton, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? text, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional long iconContentColor, optional long titleContentColor, optional long textContentColor, optional float tonalElevation, optional androidx.compose.ui.window.DialogProperties properties);
+  }
+
   public final class AndroidMenu_androidKt {
     method @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, optional androidx.compose.ui.graphics.Shape shape, optional long containerColor, optional float tonalElevation, optional float shadowElevation, optional androidx.compose.foundation.BorderStroke? border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
     method @Deprecated @androidx.compose.runtime.Composable public static void DropdownMenu(boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional long offset, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.window.PopupProperties properties, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
@@ -2009,6 +2012,8 @@
   }
 
   public final class TooltipKt {
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void TooltipBox(androidx.compose.ui.window.PopupPositionProvider positionProvider, kotlin.jvm.functions.Function1<? super androidx.compose.material3.TooltipScope,kotlin.Unit> tooltip, androidx.compose.material3.TooltipState state, optional androidx.compose.ui.Modifier modifier, optional boolean focusable, optional boolean enableUserInput, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api public static androidx.compose.material3.TooltipState TooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
     method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static androidx.compose.material3.TooltipState rememberTooltipState(optional boolean initialIsVisible, optional boolean isPersistent, optional androidx.compose.foundation.MutatorMutex mutatorMutex);
@@ -2030,11 +2035,6 @@
     property public abstract androidx.compose.animation.core.MutableTransitionState<java.lang.Boolean> transition;
   }
 
-  public final class Tooltip_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void PlainTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional long contentColor, optional long containerColor, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public static void RichTooltip(androidx.compose.material3.TooltipScope, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? title, optional kotlin.jvm.functions.Function0<kotlin.Unit>? action, optional long caretSize, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.RichTooltipColors colors, optional float tonalElevation, optional float shadowElevation, kotlin.jvm.functions.Function0<kotlin.Unit> text);
-  }
-
   @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Stable public final class TopAppBarColors {
     ctor public TopAppBarColors(long containerColor, long scrolledContainerColor, long navigationIconContentColor, long titleContentColor, long actionIconContentColor);
     method public androidx.compose.material3.TopAppBarColors copy(optional long containerColor, optional long scrolledContainerColor, optional long navigationIconContentColor, optional long titleContentColor, optional long actionIconContentColor);
diff --git a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TextSamples.kt b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TextSamples.kt
new file mode 100644
index 0000000..39f454ee
--- /dev/null
+++ b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TextSamples.kt
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.material3.samples
+
+import androidx.annotation.Sampled
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.text.LinkAnnotation
+import androidx.compose.ui.text.SpanStyle
+import androidx.compose.ui.text.TextLinkStyles
+import androidx.compose.ui.text.buildAnnotatedString
+import androidx.compose.ui.text.style.TextDecoration
+import androidx.compose.ui.text.withLink
+import androidx.compose.ui.tooling.preview.Preview
+
+@Preview(showBackground = true)
+@Sampled
+@Composable
+fun TextWithLinks() {
+    val url = "https://developer.android.com/jetpack/compose"
+
+    val linkColor = MaterialTheme.colorScheme.primary
+    val linkStyle = SpanStyle(color = linkColor, textDecoration = TextDecoration.Underline)
+
+    val annotatedString = buildAnnotatedString {
+        append("Build better apps faster with ")
+        withLink(
+            LinkAnnotation.Url(url = url, styles = TextLinkStyles(style = linkStyle))
+        ) {
+            append("Jetpack Compose")
+        }
+    }
+    // Note that if your string is defined in resources, you can pass the same link style object
+    // when constructing the AnnotatedString using the AnnotatedString.fromHtml method.
+    Text(annotatedString)
+}
diff --git a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TooltipTest.kt b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TooltipTest.kt
index f203011..32d6c65 100644
--- a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TooltipTest.kt
+++ b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TooltipTest.kt
@@ -17,12 +17,15 @@
 package androidx.compose.material3
 
 import androidx.compose.foundation.MutatorMutex
+import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.size
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Favorite
 import androidx.compose.material3.internal.BasicTooltipDefaults
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.snapshotFlow
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.layout.boundsInWindow
@@ -34,6 +37,7 @@
 import androidx.compose.ui.test.click
 import androidx.compose.ui.test.getUnclippedBoundsInRoot
 import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.longClick
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.performTouchInput
 import androidx.compose.ui.unit.IntOffset
@@ -46,6 +50,7 @@
 import androidx.test.filters.MediumTest
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.launch
 import org.junit.Rule
 import org.junit.Test
@@ -391,6 +396,73 @@
     }
 
     @Test
+    fun plainTooltip_longPress_showsTooltip() {
+        lateinit var state: TooltipState
+        var changedToVisible = false
+        rule.mainClock.autoAdvance = false
+        rule.setMaterialContent(lightColorScheme()) {
+            state = rememberTooltipState()
+            LaunchedEffect(true) {
+                snapshotFlow { state.isVisible }.collectLatest {
+                    if (it) { changedToVisible = true }
+                }
+            }
+            Box(Modifier.testTag("tooltip")) {
+                PlainTooltipTest(
+                    tooltipContent = { Text(text = "Test") },
+                    tooltipState = state
+                )
+            }
+        }
+
+        assertThat(changedToVisible).isFalse()
+
+        rule.onNodeWithTag("tooltip").performTouchInput {
+            longClick()
+        }
+
+        rule.mainClock.advanceTimeBy(
+            TooltipFadeInDuration + TooltipFadeOutDuration + 500L +
+                BasicTooltipDefaults.TooltipDuration
+        )
+
+        assertThat(changedToVisible).isTrue()
+        assertThat(state.isVisible).isFalse()
+    }
+
+    @Test
+    fun plainTooltip_longPress_keepsTooltipVisible() {
+        lateinit var state: TooltipState
+        val startTime = rule.mainClock.currentTime
+        var visibleTime = 0L
+        rule.setMaterialContent(lightColorScheme()) {
+            state = rememberTooltipState()
+            LaunchedEffect(true) {
+                snapshotFlow { state.isVisible }.collectLatest {
+                    if (!it) {
+                        visibleTime = rule.mainClock.currentTime - startTime
+                    }
+                }
+            }
+            Box(Modifier.testTag("tooltip")) {
+                PlainTooltipTest(
+                    tooltipContent = { Text(text = "Test") },
+                    tooltipState = state
+                )
+            }
+        }
+
+        rule.onNodeWithTag("tooltip").performTouchInput {
+            longClick(durationMillis = 10_000)
+        }
+
+        rule.waitForIdle()
+        assertThat(state.isVisible).isFalse()
+
+        assertThat(visibleTime).isGreaterThan(9999)
+    }
+
+    @Test
     fun plainTooltipPositioning_tooltipCollideWithTopOfScreen_flipToBelowAnchor() {
         // Test Anchor Bounds
         val anchorPosition = IntOffset(0, 0)
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt
index 0aede79..060ab2b 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/AndroidAlertDialog.android.kt
@@ -16,223 +16,46 @@
 
 package androidx.compose.material3
 
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.sizeIn
-import androidx.compose.material3.internal.Strings
-import androidx.compose.material3.internal.getString
-import androidx.compose.material3.tokens.DialogTokens
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
-import androidx.compose.ui.semantics.paneTitle
-import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.window.Dialog
 import androidx.compose.ui.window.DialogProperties
 
-/**
- * <a href="https://m3.material.io/components/dialogs/overview" class="external" target="_blank">Material Design basic dialog</a>.
- *
- * Dialogs provide important prompts in a user flow. They can require an action, communicate
- * information, or help users accomplish a task.
- *
- * ![Basic dialog image](https://developer.android.com/images/reference/androidx/compose/material3/basic-dialog.png)
- *
- * The dialog will position its buttons, typically [TextButton]s, based on the available space.
- * By default it will try to place them horizontally next to each other and fallback to horizontal
- * placement if not enough space is available.
- *
- * Simple usage:
- * @sample androidx.compose.material3.samples.AlertDialogSample
- *
- * Usage with a "Hero" icon:
- * @sample androidx.compose.material3.samples.AlertDialogWithIconSample
- *
- * @param onDismissRequest called when the user tries to dismiss the Dialog by clicking outside
- * or pressing the back button. This is not called when the dismiss button is clicked.
- * @param confirmButton button which is meant to confirm a proposed action, thus resolving what
- * triggered the dialog. The dialog does not set up any events for this button so they need to be
- * set up by the caller.
- * @param modifier the [Modifier] to be applied to this dialog
- * @param dismissButton button which is meant to dismiss the dialog. The dialog does not set up any
- * events for this button so they need to be set up by the caller.
- * @param icon optional icon that will appear above the [title] or above the [text], in case a
- * title was not provided.
- * @param title title which should specify the purpose of the dialog. The title is not mandatory,
- * because there may be sufficient information inside the [text].
- * @param text text which presents the details regarding the dialog's purpose.
- * @param shape defines the shape of this dialog's container
- * @param containerColor the color used for the background of this dialog. Use [Color.Transparent]
- * to have no color.
- * @param iconContentColor the content color used for the icon.
- * @param titleContentColor the content color used for the title.
- * @param textContentColor the content color used for the text.
- * @param tonalElevation when [containerColor] is [ColorScheme.surface], a translucent primary color
- * overlay is applied on top of the container. A higher tonal elevation value will result in a
- * darker color in light theme and lighter color in dark theme. See also: [Surface].
- * @param properties typically platform specific properties to further configure the dialog.
- * @see BasicAlertDialog
- */
-@OptIn(ExperimentalMaterial3Api::class)
+// Keep expect/actual for maintain binary compatibility.
+// `@file:JvmName` doesn't work here because Android and Desktop were published with different names
+// Please note that binary compatibility for Desktop is tracked only in JetBrains fork
+
 @Composable
-fun AlertDialog(
+actual fun AlertDialog(
     onDismissRequest: () -> Unit,
     confirmButton: @Composable () -> Unit,
-    modifier: Modifier = Modifier,
-    dismissButton: @Composable (() -> Unit)? = null,
-    icon: @Composable (() -> Unit)? = null,
-    title: @Composable (() -> Unit)? = null,
-    text: @Composable (() -> Unit)? = null,
-    shape: Shape = AlertDialogDefaults.shape,
-    containerColor: Color = AlertDialogDefaults.containerColor,
-    iconContentColor: Color = AlertDialogDefaults.iconContentColor,
-    titleContentColor: Color = AlertDialogDefaults.titleContentColor,
-    textContentColor: Color = AlertDialogDefaults.textContentColor,
-    tonalElevation: Dp = AlertDialogDefaults.TonalElevation,
-    properties: DialogProperties = DialogProperties()
-) = BasicAlertDialog(
+    modifier: Modifier,
+    dismissButton: @Composable (() -> Unit)?,
+    icon: @Composable (() -> Unit)?,
+    title: @Composable (() -> Unit)?,
+    text: @Composable (() -> Unit)?,
+    shape: Shape,
+    containerColor: Color,
+    iconContentColor: Color,
+    titleContentColor: Color,
+    textContentColor: Color,
+    tonalElevation: Dp,
+    properties: DialogProperties
+): Unit = AlertDialogImpl(
     onDismissRequest = onDismissRequest,
+    confirmButton = confirmButton,
     modifier = modifier,
+    dismissButton = dismissButton,
+    icon = icon,
+    title = title,
+    text = text,
+    shape = shape,
+    containerColor = containerColor,
+    iconContentColor = iconContentColor,
+    titleContentColor = titleContentColor,
+    textContentColor = textContentColor,
+    tonalElevation = tonalElevation,
     properties = properties
-) {
-    AlertDialogContent(
-        buttons = {
-            AlertDialogFlowRow(
-                mainAxisSpacing = ButtonsMainAxisSpacing,
-                crossAxisSpacing = ButtonsCrossAxisSpacing
-            ) {
-                dismissButton?.invoke()
-                confirmButton()
-            }
-        },
-        icon = icon,
-        title = title,
-        text = text,
-        shape = shape,
-        containerColor = containerColor,
-        tonalElevation = tonalElevation,
-        // Note that a button content color is provided here from the dialog's token, but in
-        // most cases, TextButtons should be used for dismiss and confirm buttons.
-        // TextButtons will not consume this provided content color value, and will used their
-        // own defined or default colors.
-        buttonContentColor = DialogTokens.ActionLabelTextColor.value,
-        iconContentColor = iconContentColor,
-        titleContentColor = titleContentColor,
-        textContentColor = textContentColor,
-    )
-}
-
-/**
- * <a href="https://m3.material.io/components/dialogs/overview" class="external" target="_blank">Basic alert dialog dialog</a>.
- *
- * Dialogs provide important prompts in a user flow. They can require an action, communicate
- * information, or help users accomplish a task.
- *
- * ![Basic dialog image](https://developer.android.com/images/reference/androidx/compose/material3/basic-dialog.png)
- *
- * This basic alert dialog expects an arbitrary content that is defined by the caller. Note that
- * your content will need to define its own styling.
- *
- * By default, the displayed dialog has the minimum height and width that the Material Design spec
- * defines. If required, these constraints can be overwritten by providing a `width` or `height`
- * [Modifier]s.
- *
- * Basic alert dialog usage with custom content:
- * @sample androidx.compose.material3.samples.BasicAlertDialogSample
- *
- * @param onDismissRequest called when the user tries to dismiss the Dialog by clicking outside
- * or pressing the back button. This is not called when the dismiss button is clicked.
- * @param modifier the [Modifier] to be applied to this dialog's content.
- * @param properties typically platform specific properties to further configure the dialog.
- * @param content the content of the dialog
- */
-@ExperimentalMaterial3Api
-@Composable
-fun BasicAlertDialog(
-    onDismissRequest: () -> Unit,
-    modifier: Modifier = Modifier,
-    properties: DialogProperties = DialogProperties(),
-    content: @Composable () -> Unit
-) {
-    Dialog(
-        onDismissRequest = onDismissRequest,
-        properties = properties,
-    ) {
-        val dialogPaneDescription = getString(Strings.Dialog)
-        Box(
-            modifier = modifier
-                .sizeIn(minWidth = DialogMinWidth, maxWidth = DialogMaxWidth)
-                .then(Modifier.semantics { paneTitle = dialogPaneDescription }),
-            propagateMinConstraints = true
-        ) {
-            content()
-        }
-    }
-}
-
-/**
- * <a href="https://m3.material.io/components/dialogs/overview" class="external" target="_blank">Basic alert dialog dialog</a>.
- *
- * Dialogs provide important prompts in a user flow. They can require an action, communicate
- * information, or help users accomplish a task.
- *
- * ![Basic dialog image](https://developer.android.com/images/reference/androidx/compose/material3/basic-dialog.png)
- *
- * This basic alert dialog expects an arbitrary content that is defined by the caller. Note that
- * your content will need to define its own styling.
- *
- * By default, the displayed dialog has the minimum height and width that the Material Design spec
- * defines. If required, these constraints can be overwritten by providing a `width` or `height`
- * [Modifier]s.
- *
- * Basic alert dialog usage with custom content:
- * @sample androidx.compose.material3.samples.BasicAlertDialogSample
- *
- * @param onDismissRequest called when the user tries to dismiss the Dialog by clicking outside
- * or pressing the back button. This is not called when the dismiss button is clicked.
- * @param modifier the [Modifier] to be applied to this dialog's content.
- * @param properties typically platform specific properties to further configure the dialog.
- * @param content the content of the dialog
- */
-@Deprecated(
-    "Use BasicAlertDialog instead",
-    replaceWith = ReplaceWith(
-        "BasicAlertDialog(onDismissRequest, modifier, properties, content)"
-    )
 )
-@ExperimentalMaterial3Api
-@Composable
-fun AlertDialog(
-    onDismissRequest: () -> Unit,
-    modifier: Modifier = Modifier,
-    properties: DialogProperties = DialogProperties(),
-    content: @Composable () -> Unit
-) = BasicAlertDialog(onDismissRequest, modifier, properties, content)
-
-/**
- * Contains default values used for [AlertDialog] and [BasicAlertDialog].
- */
-object AlertDialogDefaults {
-    /** The default shape for alert dialogs */
-    val shape: Shape @Composable get() = DialogTokens.ContainerShape.value
-
-    /** The default container color for alert dialogs */
-    val containerColor: Color @Composable get() = DialogTokens.ContainerColor.value
-
-    /** The default icon color for alert dialogs */
-    val iconContentColor: Color @Composable get() = DialogTokens.IconColor.value
-
-    /** The default title color for alert dialogs */
-    val titleContentColor: Color @Composable get() = DialogTokens.HeadlineColor.value
-
-    /** The default text color for alert dialogs */
-    val textContentColor: Color @Composable get() = DialogTokens.SupportingTextColor.value
-
-    /** The default tonal elevation for alert dialogs */
-    val TonalElevation: Dp = 0.dp
-}
-
-private val ButtonsMainAxisSpacing = 8.dp
-private val ButtonsCrossAxisSpacing = 12.dp
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Tooltip.android.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Tooltip.android.kt
index 8777756..b42e087 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Tooltip.android.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/Tooltip.android.kt
@@ -16,320 +16,12 @@
 
 package androidx.compose.material3
 
-import android.content.res.Configuration
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.paddingFromBaseline
-import androidx.compose.foundation.layout.requiredHeightIn
-import androidx.compose.foundation.layout.sizeIn
-import androidx.compose.material3.tokens.PlainTooltipTokens
-import androidx.compose.material3.tokens.RichTooltipTokens
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.CacheDrawScope
-import androidx.compose.ui.draw.DrawResult
-import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.Path
-import androidx.compose.ui.graphics.Shape
-import androidx.compose.ui.layout.LayoutCoordinates
-import androidx.compose.ui.layout.boundsInWindow
 import androidx.compose.ui.platform.LocalConfiguration
 import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.unit.Density
-import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.isSpecified
 
-/**
- * Plain tooltip that provides a descriptive message.
- *
- * Usually used with [TooltipBox].
- *
- * @param modifier the [Modifier] to be applied to the tooltip.
- * @param caretSize [DpSize] for the caret of the tooltip, if a default
- * caret is desired with a specific dimension. Please see [TooltipDefaults.caretSize] to
- * see the default dimensions. Pass in Dp.Unspecified for this parameter if no caret is desired.
- * @param shape the [Shape] that should be applied to the tooltip container.
- * @param contentColor [Color] that will be applied to the tooltip's content.
- * @param containerColor [Color] that will be applied to the tooltip's container.
- * @param tonalElevation the tonal elevation of the tooltip.
- * @param shadowElevation the shadow elevation of the tooltip.
- * @param content the composable that will be used to populate the tooltip's content.
- */
 @Composable
-@ExperimentalMaterial3Api
-actual fun TooltipScope.PlainTooltip(
-    modifier: Modifier,
-    caretSize: DpSize,
-    shape: Shape,
-    contentColor: Color,
-    containerColor: Color,
-    tonalElevation: Dp,
-    shadowElevation: Dp,
-    content: @Composable () -> Unit
-) {
-    val drawCaretModifier =
-        if (caretSize.isSpecified) {
-            val density = LocalDensity.current
-            val configuration = LocalConfiguration.current
-            Modifier.drawCaret { anchorLayoutCoordinates ->
-                drawCaretWithPath(
-                    CaretType.Plain,
-                    density,
-                    configuration,
-                    containerColor,
-                    caretSize,
-                    anchorLayoutCoordinates
-                )
-            }.then(modifier)
-        } else modifier
-    Surface(
-        modifier = drawCaretModifier,
-        shape = shape,
-        color = containerColor,
-        tonalElevation = tonalElevation,
-        shadowElevation = shadowElevation
-    ) {
-        Box(modifier = Modifier
-            .sizeIn(
-                minWidth = TooltipMinWidth,
-                maxWidth = PlainTooltipMaxWidth,
-                minHeight = TooltipMinHeight
-            )
-            .padding(PlainTooltipContentPadding)
-        ) {
-            val textStyle =
-                PlainTooltipTokens.SupportingTextFont.value
-
-            CompositionLocalProvider(
-                LocalContentColor provides contentColor,
-                LocalTextStyle provides textStyle,
-                content = content
-            )
-        }
-    }
-}
-
-/**
- * Rich text tooltip that allows the user to pass in a title, text, and action.
- * Tooltips are used to provide a descriptive message.
- *
- * Usually used with [TooltipBox]
- *
- * @param modifier the [Modifier] to be applied to the tooltip.
- * @param title An optional title for the tooltip.
- * @param action An optional action for the tooltip.
- * @param caretSize [DpSize] for the caret of the tooltip, if a default
- * caret is desired with a specific dimension. Please see [TooltipDefaults.caretSize] to
- * see the default dimensions. Pass in Dp.Unspecified for this parameter if no caret is desired.
- * @param shape the [Shape] that should be applied to the tooltip container.
- * @param colors [RichTooltipColors] that will be applied to the tooltip's container and content.
- * @param tonalElevation the tonal elevation of the tooltip.
- * @param shadowElevation the shadow elevation of the tooltip.
- * @param text the composable that will be used to populate the rich tooltip's text.
- */
-@Composable
-@ExperimentalMaterial3Api
-actual fun TooltipScope.RichTooltip(
-    modifier: Modifier,
-    title: (@Composable () -> Unit)?,
-    action: (@Composable () -> Unit)?,
-    caretSize: DpSize,
-    shape: Shape,
-    colors: RichTooltipColors,
-    tonalElevation: Dp,
-    shadowElevation: Dp,
-    text: @Composable () -> Unit
-) {
-    val absoluteElevation = LocalAbsoluteTonalElevation.current + tonalElevation
-    val elevatedColor =
-        MaterialTheme.colorScheme.applyTonalElevation(
-            colors.containerColor,
-            absoluteElevation
-        )
-    val drawCaretModifier =
-        if (caretSize.isSpecified) {
-            val density = LocalDensity.current
-            val configuration = LocalConfiguration.current
-            Modifier.drawCaret { anchorLayoutCoordinates ->
-                drawCaretWithPath(
-                    CaretType.Rich,
-                    density,
-                    configuration,
-                    elevatedColor,
-                    caretSize,
-                    anchorLayoutCoordinates
-                )
-            }.then(modifier)
-        } else modifier
-    Surface(
-        modifier = drawCaretModifier
-            .sizeIn(
-                minWidth = TooltipMinWidth,
-                maxWidth = RichTooltipMaxWidth,
-                minHeight = TooltipMinHeight
-            ),
-        shape = shape,
-        color = colors.containerColor,
-        tonalElevation = tonalElevation,
-        shadowElevation = shadowElevation
-    ) {
-        val actionLabelTextStyle = RichTooltipTokens.ActionLabelTextFont.value
-        val subheadTextStyle = RichTooltipTokens.SubheadFont.value
-        val supportingTextStyle = RichTooltipTokens.SupportingTextFont.value
-
-        Column(
-            modifier = Modifier.padding(horizontal = RichTooltipHorizontalPadding)
-        ) {
-            title?.let {
-                Box(
-                    modifier = Modifier.paddingFromBaseline(top = HeightToSubheadFirstLine)
-                ) {
-                    CompositionLocalProvider(
-                        LocalContentColor provides colors.titleContentColor,
-                        LocalTextStyle provides subheadTextStyle,
-                        content = it
-                    )
-                }
-            }
-            Box(
-                modifier = Modifier.textVerticalPadding(
-                    title != null,
-                    action != null
-                )
-            ) {
-                CompositionLocalProvider(
-                    LocalContentColor provides colors.contentColor,
-                    LocalTextStyle provides supportingTextStyle,
-                    content = text
-                )
-            }
-            action?.let {
-                Box(
-                    modifier = Modifier
-                        .requiredHeightIn(min = ActionLabelMinHeight)
-                        .padding(bottom = ActionLabelBottomPadding)
-                ) {
-                    CompositionLocalProvider(
-                        LocalContentColor provides colors.actionContentColor,
-                        LocalTextStyle provides actionLabelTextStyle,
-                        content = it
-                    )
-                }
-            }
-        }
-    }
-}
-
-@ExperimentalMaterial3Api
-private fun CacheDrawScope.drawCaretWithPath(
-    caretType: CaretType,
-    density: Density,
-    configuration: Configuration,
-    containerColor: Color,
-    caretSize: DpSize,
-    anchorLayoutCoordinates: LayoutCoordinates?
-): DrawResult {
-    val path = Path()
-
-    if (anchorLayoutCoordinates != null) {
-        val caretHeightPx: Int
-        val caretWidthPx: Int
-        val screenWidthPx: Int
-        val tooltipAnchorSpacing: Int
-        with(density) {
-            caretHeightPx = caretSize.height.roundToPx()
-            caretWidthPx = caretSize.width.roundToPx()
-            screenWidthPx = configuration.screenWidthDp.dp.roundToPx()
-            tooltipAnchorSpacing = SpacingBetweenTooltipAndAnchor.roundToPx()
-        }
-        val anchorBounds = anchorLayoutCoordinates.boundsInWindow()
-        val anchorLeft = anchorBounds.left
-        val anchorRight = anchorBounds.right
-        val anchorTop = anchorBounds.top
-        val anchorMid = (anchorRight + anchorLeft) / 2
-        val anchorWidth = anchorRight - anchorLeft
-        val tooltipWidth = this.size.width
-        val tooltipHeight = this.size.height
-        val isCaretTop = anchorTop - tooltipHeight - tooltipAnchorSpacing < 0
-        val caretY = if (isCaretTop) { 0f } else { tooltipHeight }
-
-        val position: Offset
-        if (caretType == CaretType.Plain) {
-            position =
-                if (anchorMid + tooltipWidth / 2 > screenWidthPx) {
-                    // Caret needs to be near the right
-                    val anchorMidFromRightScreenEdge =
-                        screenWidthPx - anchorMid
-                    val caretX = tooltipWidth - anchorMidFromRightScreenEdge
-                    Offset(caretX, caretY)
-                } else {
-                    // Caret needs to be near the left
-                    val tooltipLeft =
-                        anchorLeft - (this.size.width / 2 - anchorWidth / 2)
-                    val caretX = anchorMid - maxOf(tooltipLeft, 0f)
-                    Offset(caretX, caretY)
-                }
-        } else {
-            // Default the caret to the left
-            var preferredPosition = Offset(anchorMid - anchorLeft, caretY)
-            if (anchorLeft + tooltipWidth > screenWidthPx) {
-                // Need to move the caret to the right
-                preferredPosition = Offset(anchorMid - (anchorRight - tooltipWidth), caretY)
-                if (anchorRight - tooltipWidth < 0) {
-                    // Need to center the caret
-                    // Caret might need to be offset depending on where
-                    // the tooltip is placed relative to the anchor
-                    if (anchorLeft - tooltipWidth / 2 + anchorWidth / 2 <= 0) {
-                        preferredPosition = Offset(anchorMid, caretY)
-                    } else if (anchorRight + tooltipWidth / 2 - anchorWidth / 2 >= screenWidthPx) {
-                        val anchorMidFromRightScreenEdge =
-                            screenWidthPx - anchorMid
-                        val caretX = tooltipWidth - anchorMidFromRightScreenEdge
-                        preferredPosition = Offset(caretX, caretY)
-                    } else {
-                        preferredPosition = Offset(tooltipWidth / 2, caretY)
-                    }
-                }
-            }
-            position = preferredPosition
-        }
-
-        if (isCaretTop) {
-            path.apply {
-                moveTo(x = position.x, y = position.y)
-                lineTo(x = position.x + caretWidthPx / 2, y = position.y)
-                lineTo(x = position.x, y = position.y - caretHeightPx)
-                lineTo(x = position.x - caretWidthPx / 2, y = position.y)
-                close()
-            }
-        } else {
-            path.apply {
-                moveTo(x = position.x, y = position.y)
-                lineTo(x = position.x + caretWidthPx / 2, y = position.y)
-                lineTo(x = position.x, y = position.y + caretHeightPx.toFloat())
-                lineTo(x = position.x - caretWidthPx / 2, y = position.y)
-                close()
-            }
-        }
-    }
-
-    return onDrawWithContent {
-        if (anchorLayoutCoordinates != null) {
-            drawContent()
-            drawPath(
-                path = path,
-                color = containerColor
-            )
-        }
-    }
-}
-
-@ExperimentalMaterial3Api
-private enum class CaretType {
-    Plain, Rich
+internal actual fun windowContainerWidthInPx(): Int = with(LocalDensity.current) {
+    LocalConfiguration.current.screenWidthDp.dp.roundToPx()
 }
diff --git a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/BasicTooltip.android.kt b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/BasicTooltip.android.kt
index b054c4f..36ed7bd 100644
--- a/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/BasicTooltip.android.kt
+++ b/compose/material3/material3/src/androidMain/kotlin/androidx/compose/material3/internal/BasicTooltip.android.kt
@@ -45,7 +45,10 @@
 import androidx.compose.ui.window.PopupPositionProvider
 import androidx.compose.ui.window.PopupProperties
 import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.CoroutineStart
 import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.launch
 
 /**
@@ -157,6 +160,9 @@
         this.pointerInput(state) {
             coroutineScope {
                 awaitEachGesture {
+                    // Long press will finish before or after show so keep track of it, in a
+                    // flow to handle both cases
+                    val isLongPressedFlow: MutableStateFlow<Boolean> = MutableStateFlow(false)
                     val longPressTimeout = viewConfiguration.longPressTimeoutMillis
                     val pass = PointerEventPass.Initial
 
@@ -172,39 +178,50 @@
                             }
                         } catch (_: PointerEventTimeoutCancellationException) {
                             // handle long press - Show the tooltip
-                            launch { state.show(MutatePriority.UserInput) }
+                            launch(start = CoroutineStart.UNDISPATCHED) {
+                                try {
+                                    isLongPressedFlow.tryEmit(true)
+                                    state.show(MutatePriority.PreventUserInput)
+                                } finally {
+                                    isLongPressedFlow.collectLatest { isLongPressed ->
+                                        if (!isLongPressed) { state.dismiss() }
+                                    }
+                                }
+                            }
 
                             // consume the children's click handling
-                            val changes = awaitPointerEvent(pass = pass).changes
-                            for (i in 0 until changes.size) { changes[i].consume() }
+                            // Long press may still be in progress
+                            val upEvent = waitForUpOrCancellation(pass = pass)
+                            upEvent?.consume()
+                        } finally {
+                            isLongPressedFlow.tryEmit(false)
                         }
                     }
                 }
             }
-        }
-            .pointerInput(state) {
-                coroutineScope {
-                    awaitPointerEventScope {
-                        val pass = PointerEventPass.Main
+        }.pointerInput(state) {
+            coroutineScope {
+                awaitPointerEventScope {
+                    val pass = PointerEventPass.Main
 
-                        while (true) {
-                            val event = awaitPointerEvent(pass)
-                            val inputType = event.changes[0].type
-                            if (inputType == PointerType.Mouse) {
-                                when (event.type) {
-                                    PointerEventType.Enter -> {
-                                        launch { state.show(MutatePriority.UserInput) }
-                                    }
+                    while (true) {
+                        val event = awaitPointerEvent(pass)
+                        val inputType = event.changes[0].type
+                        if (inputType == PointerType.Mouse) {
+                            when (event.type) {
+                                PointerEventType.Enter -> {
+                                    launch { state.show(MutatePriority.UserInput) }
+                                }
 
-                                    PointerEventType.Exit -> {
-                                        state.dismiss()
-                                    }
+                                PointerEventType.Exit -> {
+                                    state.dismiss()
                                 }
                             }
                         }
                     }
                 }
             }
+        }
     } else this
 
 private fun Modifier.anchorSemantics(
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AlertDialog.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AlertDialog.kt
index cf167cd..ee43c24 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AlertDialog.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AlertDialog.kt
@@ -21,7 +21,10 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.sizeIn
 import androidx.compose.material3.internal.ProvideContentColorTextStyle
+import androidx.compose.material3.internal.Strings
+import androidx.compose.material3.internal.getString
 import androidx.compose.material3.tokens.DialogTokens
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
@@ -31,12 +34,236 @@
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.layout.Placeable
+import androidx.compose.ui.semantics.paneTitle
+import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.fastForEach
 import androidx.compose.ui.util.fastForEachIndexed
+import androidx.compose.ui.window.Dialog
+import androidx.compose.ui.window.DialogProperties
 import kotlin.math.max
 
+/**
+ * <a href="https://m3.material.io/components/dialogs/overview" class="external" target="_blank">Material Design basic dialog</a>.
+ *
+ * Dialogs provide important prompts in a user flow. They can require an action, communicate
+ * information, or help users accomplish a task.
+ *
+ * ![Basic dialog image](https://developer.android.com/images/reference/androidx/compose/material3/basic-dialog.png)
+ *
+ * The dialog will position its buttons, typically [TextButton]s, based on the available space.
+ * By default it will try to place them horizontally next to each other and fallback to horizontal
+ * placement if not enough space is available.
+ *
+ * Simple usage:
+ * @sample androidx.compose.material3.samples.AlertDialogSample
+ *
+ * Usage with a "Hero" icon:
+ * @sample androidx.compose.material3.samples.AlertDialogWithIconSample
+ *
+ * @param onDismissRequest called when the user tries to dismiss the Dialog by clicking outside
+ * or pressing the back button. This is not called when the dismiss button is clicked.
+ * @param confirmButton button which is meant to confirm a proposed action, thus resolving what
+ * triggered the dialog. The dialog does not set up any events for this button so they need to be
+ * set up by the caller.
+ * @param modifier the [Modifier] to be applied to this dialog
+ * @param dismissButton button which is meant to dismiss the dialog. The dialog does not set up any
+ * events for this button so they need to be set up by the caller.
+ * @param icon optional icon that will appear above the [title] or above the [text], in case a
+ * title was not provided.
+ * @param title title which should specify the purpose of the dialog. The title is not mandatory,
+ * because there may be sufficient information inside the [text].
+ * @param text text which presents the details regarding the dialog's purpose.
+ * @param shape defines the shape of this dialog's container
+ * @param containerColor the color used for the background of this dialog. Use [Color.Transparent]
+ * to have no color.
+ * @param iconContentColor the content color used for the icon.
+ * @param titleContentColor the content color used for the title.
+ * @param textContentColor the content color used for the text.
+ * @param tonalElevation when [containerColor] is [ColorScheme.surface], a translucent primary color
+ * overlay is applied on top of the container. A higher tonal elevation value will result in a
+ * darker color in light theme and lighter color in dark theme. See also: [Surface].
+ * @param properties typically platform specific properties to further configure the dialog.
+ * @see BasicAlertDialog
+ */
+@Composable
+expect fun AlertDialog(
+    onDismissRequest: () -> Unit,
+    confirmButton: @Composable () -> Unit,
+    modifier: Modifier = Modifier,
+    dismissButton: @Composable (() -> Unit)? = null,
+    icon: @Composable (() -> Unit)? = null,
+    title: @Composable (() -> Unit)? = null,
+    text: @Composable (() -> Unit)? = null,
+    shape: Shape = AlertDialogDefaults.shape,
+    containerColor: Color = AlertDialogDefaults.containerColor,
+    iconContentColor: Color = AlertDialogDefaults.iconContentColor,
+    titleContentColor: Color = AlertDialogDefaults.titleContentColor,
+    textContentColor: Color = AlertDialogDefaults.textContentColor,
+    tonalElevation: Dp = AlertDialogDefaults.TonalElevation,
+    properties: DialogProperties = DialogProperties()
+)
+
+/**
+ * <a href="https://m3.material.io/components/dialogs/overview" class="external" target="_blank">Basic alert dialog dialog</a>.
+ *
+ * Dialogs provide important prompts in a user flow. They can require an action, communicate
+ * information, or help users accomplish a task.
+ *
+ * ![Basic dialog image](https://developer.android.com/images/reference/androidx/compose/material3/basic-dialog.png)
+ *
+ * This basic alert dialog expects an arbitrary content that is defined by the caller. Note that
+ * your content will need to define its own styling.
+ *
+ * By default, the displayed dialog has the minimum height and width that the Material Design spec
+ * defines. If required, these constraints can be overwritten by providing a `width` or `height`
+ * [Modifier]s.
+ *
+ * Basic alert dialog usage with custom content:
+ * @sample androidx.compose.material3.samples.BasicAlertDialogSample
+ *
+ * @param onDismissRequest called when the user tries to dismiss the Dialog by clicking outside
+ * or pressing the back button. This is not called when the dismiss button is clicked.
+ * @param modifier the [Modifier] to be applied to this dialog's content.
+ * @param properties typically platform specific properties to further configure the dialog.
+ * @param content the content of the dialog
+ */
+@ExperimentalMaterial3Api
+@Composable
+fun BasicAlertDialog(
+    onDismissRequest: () -> Unit,
+    modifier: Modifier = Modifier,
+    properties: DialogProperties = DialogProperties(),
+    content: @Composable () -> Unit
+) {
+    Dialog(
+        onDismissRequest = onDismissRequest,
+        properties = properties,
+    ) {
+        val dialogPaneDescription = getString(Strings.Dialog)
+        Box(
+            modifier = modifier
+                .sizeIn(minWidth = DialogMinWidth, maxWidth = DialogMaxWidth)
+                .then(Modifier.semantics { paneTitle = dialogPaneDescription }),
+            propagateMinConstraints = true
+        ) {
+            content()
+        }
+    }
+}
+
+/**
+ * <a href="https://m3.material.io/components/dialogs/overview" class="external" target="_blank">Basic alert dialog dialog</a>.
+ *
+ * Dialogs provide important prompts in a user flow. They can require an action, communicate
+ * information, or help users accomplish a task.
+ *
+ * ![Basic dialog image](https://developer.android.com/images/reference/androidx/compose/material3/basic-dialog.png)
+ *
+ * This basic alert dialog expects an arbitrary content that is defined by the caller. Note that
+ * your content will need to define its own styling.
+ *
+ * By default, the displayed dialog has the minimum height and width that the Material Design spec
+ * defines. If required, these constraints can be overwritten by providing a `width` or `height`
+ * [Modifier]s.
+ *
+ * Basic alert dialog usage with custom content:
+ * @sample androidx.compose.material3.samples.BasicAlertDialogSample
+ *
+ * @param onDismissRequest called when the user tries to dismiss the Dialog by clicking outside
+ * or pressing the back button. This is not called when the dismiss button is clicked.
+ * @param modifier the [Modifier] to be applied to this dialog's content.
+ * @param properties typically platform specific properties to further configure the dialog.
+ * @param content the content of the dialog
+ */
+@Deprecated(
+    "Use BasicAlertDialog instead",
+    replaceWith = ReplaceWith(
+        "BasicAlertDialog(onDismissRequest, modifier, properties, content)"
+    )
+)
+@ExperimentalMaterial3Api
+@Composable
+fun AlertDialog(
+    onDismissRequest: () -> Unit,
+    modifier: Modifier = Modifier,
+    properties: DialogProperties = DialogProperties(),
+    content: @Composable () -> Unit
+) = BasicAlertDialog(onDismissRequest, modifier, properties, content)
+
+/**
+ * Contains default values used for [AlertDialog] and [BasicAlertDialog].
+ */
+object AlertDialogDefaults {
+    /** The default shape for alert dialogs */
+    val shape: Shape @Composable get() = DialogTokens.ContainerShape.value
+
+    /** The default container color for alert dialogs */
+    val containerColor: Color @Composable get() = DialogTokens.ContainerColor.value
+
+    /** The default icon color for alert dialogs */
+    val iconContentColor: Color @Composable get() = DialogTokens.IconColor.value
+
+    /** The default title color for alert dialogs */
+    val titleContentColor: Color @Composable get() = DialogTokens.HeadlineColor.value
+
+    /** The default text color for alert dialogs */
+    val textContentColor: Color @Composable get() = DialogTokens.SupportingTextColor.value
+
+    /** The default tonal elevation for alert dialogs */
+    val TonalElevation: Dp = 0.dp
+}
+
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+internal fun AlertDialogImpl(
+    onDismissRequest: () -> Unit,
+    confirmButton: @Composable () -> Unit,
+    modifier: Modifier,
+    dismissButton: @Composable (() -> Unit)?,
+    icon: @Composable (() -> Unit)?,
+    title: @Composable (() -> Unit)?,
+    text: @Composable (() -> Unit)?,
+    shape: Shape,
+    containerColor: Color,
+    iconContentColor: Color,
+    titleContentColor: Color,
+    textContentColor: Color,
+    tonalElevation: Dp,
+    properties: DialogProperties
+): Unit = BasicAlertDialog(
+    onDismissRequest = onDismissRequest,
+    modifier = modifier,
+    properties = properties
+) {
+    AlertDialogContent(
+        buttons = {
+            AlertDialogFlowRow(
+                mainAxisSpacing = ButtonsMainAxisSpacing,
+                crossAxisSpacing = ButtonsCrossAxisSpacing
+            ) {
+                dismissButton?.invoke()
+                confirmButton()
+            }
+        },
+        icon = icon,
+        title = title,
+        text = text,
+        shape = shape,
+        containerColor = containerColor,
+        tonalElevation = tonalElevation,
+        // Note that a button content color is provided here from the dialog's token, but in
+        // most cases, TextButtons should be used for dismiss and confirm buttons.
+        // TextButtons will not consume this provided content color value, and will used their
+        // own defined or default colors.
+        buttonContentColor = DialogTokens.ActionLabelTextColor.value,
+        iconContentColor = iconContentColor,
+        titleContentColor = titleContentColor,
+        textContentColor = textContentColor,
+    )
+}
+
 @Composable
 internal fun AlertDialogContent(
     buttons: @Composable () -> Unit,
@@ -217,6 +444,9 @@
 internal val DialogMinWidth = 280.dp
 internal val DialogMaxWidth = 560.dp
 
+private val ButtonsMainAxisSpacing = 8.dp
+private val ButtonsCrossAxisSpacing = 12.dp
+
 // Paddings for each of the dialog's parts.
 private val DialogPadding = PaddingValues(all = 24.dp)
 private val IconPadding = PaddingValues(bottom = 16.dp)
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Text.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Text.kt
index 0930a98..a26609f 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Text.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Text.kt
@@ -199,6 +199,9 @@
  * Additionally, for [color], if [color] is not set, and [style] does not have a color, then
  * [LocalContentColor] will be used.
  *
+ * See an example of displaying text with links where links apply the styling from the theme:
+ * @sample androidx.compose.material3.samples.TextWithLinks
+ *
  * @param text the text to be displayed
  * @param modifier the [Modifier] to be applied to this layout node
  * @param color [Color] to apply to the text. If [Color.Unspecified], and [style] has no color set,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tooltip.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tooltip.kt
index f754310..18f443c 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tooltip.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Tooltip.kt
@@ -26,35 +26,42 @@
 import androidx.compose.foundation.MutatePriority
 import androidx.compose.foundation.MutatorMutex
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.paddingFromBaseline
+import androidx.compose.foundation.layout.requiredHeightIn
+import androidx.compose.foundation.layout.sizeIn
 import androidx.compose.material3.internal.BasicTooltipBox
 import androidx.compose.material3.internal.BasicTooltipDefaults
 import androidx.compose.material3.tokens.ElevationTokens
 import androidx.compose.material3.tokens.PlainTooltipTokens
 import androidx.compose.material3.tokens.RichTooltipTokens
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.MutableState
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
 import androidx.compose.ui.draw.CacheDrawScope
 import androidx.compose.ui.draw.DrawResult
 import androidx.compose.ui.draw.drawWithCache
+import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.Path
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.graphics.takeOrElse
 import androidx.compose.ui.layout.LayoutCoordinates
+import androidx.compose.ui.layout.boundsInWindow
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.debugInspectorInfo
+import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.DpSize
 import androidx.compose.ui.unit.IntOffset
@@ -62,6 +69,7 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.isSpecified
 import androidx.compose.ui.window.PopupPositionProvider
 import kotlinx.coroutines.CancellableContinuation
 import kotlinx.coroutines.suspendCancellableCoroutine
@@ -200,7 +208,7 @@
  */
 @Composable
 @ExperimentalMaterial3Api
-expect fun TooltipScope.PlainTooltip(
+fun TooltipScope.PlainTooltip(
     modifier: Modifier = Modifier,
     caretSize: DpSize = DpSize.Unspecified,
     shape: Shape = TooltipDefaults.plainTooltipContainerShape,
@@ -209,7 +217,48 @@
     tonalElevation: Dp = 0.dp,
     shadowElevation: Dp = 0.dp,
     content: @Composable () -> Unit
-)
+) {
+    val drawCaretModifier =
+        if (caretSize.isSpecified) {
+            val density = LocalDensity.current
+            val windowContainerWidthInPx = windowContainerWidthInPx()
+            Modifier.drawCaret { anchorLayoutCoordinates ->
+                drawCaretWithPath(
+                    CaretType.Plain,
+                    density,
+                    windowContainerWidthInPx,
+                    containerColor,
+                    caretSize,
+                    anchorLayoutCoordinates
+                )
+            }.then(modifier)
+        } else modifier
+    Surface(
+        modifier = drawCaretModifier,
+        shape = shape,
+        color = containerColor,
+        tonalElevation = tonalElevation,
+        shadowElevation = shadowElevation
+    ) {
+        Box(modifier = Modifier
+            .sizeIn(
+                minWidth = TooltipMinWidth,
+                maxWidth = PlainTooltipMaxWidth,
+                minHeight = TooltipMinHeight
+            )
+            .padding(PlainTooltipContentPadding)
+        ) {
+            val textStyle =
+                PlainTooltipTokens.SupportingTextFont.value
+
+            CompositionLocalProvider(
+                LocalContentColor provides contentColor,
+                LocalTextStyle provides textStyle,
+                content = content
+            )
+        }
+    }
+}
 
 /**
  * Rich text tooltip that allows the user to pass in a title, text, and action.
@@ -231,7 +280,7 @@
  */
 @Composable
 @ExperimentalMaterial3Api
-expect fun TooltipScope.RichTooltip(
+fun TooltipScope.RichTooltip(
     modifier: Modifier = Modifier,
     title: (@Composable () -> Unit)? = null,
     action: (@Composable () -> Unit)? = null,
@@ -241,7 +290,86 @@
     tonalElevation: Dp = ElevationTokens.Level0,
     shadowElevation: Dp = RichTooltipTokens.ContainerElevation,
     text: @Composable () -> Unit
-)
+) {
+    val absoluteElevation = LocalAbsoluteTonalElevation.current + tonalElevation
+    val elevatedColor =
+        MaterialTheme.colorScheme.applyTonalElevation(
+            colors.containerColor,
+            absoluteElevation
+        )
+    val drawCaretModifier =
+        if (caretSize.isSpecified) {
+            val density = LocalDensity.current
+            val windowContainerWidthInPx = windowContainerWidthInPx()
+            Modifier.drawCaret { anchorLayoutCoordinates ->
+                drawCaretWithPath(
+                    CaretType.Rich,
+                    density,
+                    windowContainerWidthInPx,
+                    elevatedColor,
+                    caretSize,
+                    anchorLayoutCoordinates
+                )
+            }.then(modifier)
+        } else modifier
+    Surface(
+        modifier = drawCaretModifier
+            .sizeIn(
+                minWidth = TooltipMinWidth,
+                maxWidth = RichTooltipMaxWidth,
+                minHeight = TooltipMinHeight
+            ),
+        shape = shape,
+        color = colors.containerColor,
+        tonalElevation = tonalElevation,
+        shadowElevation = shadowElevation
+    ) {
+        val actionLabelTextStyle = RichTooltipTokens.ActionLabelTextFont.value
+        val subheadTextStyle = RichTooltipTokens.SubheadFont.value
+        val supportingTextStyle = RichTooltipTokens.SupportingTextFont.value
+
+        Column(
+            modifier = Modifier.padding(horizontal = RichTooltipHorizontalPadding)
+        ) {
+            title?.let {
+                Box(
+                    modifier = Modifier.paddingFromBaseline(top = HeightToSubheadFirstLine)
+                ) {
+                    CompositionLocalProvider(
+                        LocalContentColor provides colors.titleContentColor,
+                        LocalTextStyle provides subheadTextStyle,
+                        content = it
+                    )
+                }
+            }
+            Box(
+                modifier = Modifier.textVerticalPadding(
+                    title != null,
+                    action != null
+                )
+            ) {
+                CompositionLocalProvider(
+                    LocalContentColor provides colors.contentColor,
+                    LocalTextStyle provides supportingTextStyle,
+                    content = text
+                )
+            }
+            action?.let {
+                Box(
+                    modifier = Modifier
+                        .requiredHeightIn(min = ActionLabelMinHeight)
+                        .padding(bottom = ActionLabelBottomPadding)
+                ) {
+                    CompositionLocalProvider(
+                        LocalContentColor provides colors.actionContentColor,
+                        LocalTextStyle provides actionLabelTextStyle,
+                        content = it
+                    )
+                }
+            }
+        }
+    }
+}
 
 /**
  * Tooltip defaults that contain default values for both [PlainTooltip] and [RichTooltip]
@@ -510,7 +638,7 @@
     override val isVisible: Boolean
         get() = transition.currentState || transition.targetState
 
-            /**
+    /**
      * continuation used to clean up
      */
     private var job: (CancellableContinuation<Unit>)? = null
@@ -544,9 +672,10 @@
                     }
                 }
             } finally {
-                // timeout or cancellation has occurred
-                // and we close out the current tooltip.
-                dismiss()
+                if (mutatePriority != MutatePriority.PreventUserInput) {
+                    // timeout or cancellation has occurred and we close out the current tooltip.
+                    dismiss()
+                }
             }
         }
     }
@@ -683,6 +812,118 @@
     )
 }
 
+@ExperimentalMaterial3Api
+private fun CacheDrawScope.drawCaretWithPath(
+    caretType: CaretType,
+    density: Density,
+    windowContainerWidthInPx: Int,
+    containerColor: Color,
+    caretSize: DpSize,
+    anchorLayoutCoordinates: LayoutCoordinates?
+): DrawResult {
+    val path = Path()
+
+    if (anchorLayoutCoordinates != null) {
+        val caretHeightPx: Int
+        val caretWidthPx: Int
+        val tooltipAnchorSpacing: Int
+        with(density) {
+            caretHeightPx = caretSize.height.roundToPx()
+            caretWidthPx = caretSize.width.roundToPx()
+            tooltipAnchorSpacing = SpacingBetweenTooltipAndAnchor.roundToPx()
+        }
+        val anchorBounds = anchorLayoutCoordinates.boundsInWindow()
+        val anchorLeft = anchorBounds.left
+        val anchorRight = anchorBounds.right
+        val anchorTop = anchorBounds.top
+        val anchorMid = (anchorRight + anchorLeft) / 2
+        val anchorWidth = anchorRight - anchorLeft
+        val tooltipWidth = this.size.width
+        val tooltipHeight = this.size.height
+        val isCaretTop = anchorTop - tooltipHeight - tooltipAnchorSpacing < 0
+        val caretY = if (isCaretTop) { 0f } else { tooltipHeight }
+
+        val position: Offset
+        if (caretType == CaretType.Plain) {
+            position =
+                if (anchorMid + tooltipWidth / 2 > windowContainerWidthInPx) {
+                    // Caret needs to be near the right
+                    val anchorMidFromRightScreenEdge =
+                        windowContainerWidthInPx - anchorMid
+                    val caretX = tooltipWidth - anchorMidFromRightScreenEdge
+                    Offset(caretX, caretY)
+                } else {
+                    // Caret needs to be near the left
+                    val tooltipLeft =
+                        anchorLeft - (this.size.width / 2 - anchorWidth / 2)
+                    val caretX = anchorMid - maxOf(tooltipLeft, 0f)
+                    Offset(caretX, caretY)
+                }
+        } else {
+            // Default the caret to the left
+            var preferredPosition = Offset(anchorMid - anchorLeft, caretY)
+            if (anchorLeft + tooltipWidth > windowContainerWidthInPx) {
+                // Need to move the caret to the right
+                preferredPosition = Offset(anchorMid - (anchorRight - tooltipWidth), caretY)
+                if (anchorRight - tooltipWidth < 0) {
+                    // Need to center the caret
+                    // Caret might need to be offset depending on where
+                    // the tooltip is placed relative to the anchor
+                    if (anchorLeft - tooltipWidth / 2 + anchorWidth / 2 <= 0) {
+                        preferredPosition = Offset(anchorMid, caretY)
+                    } else if (
+                        anchorRight + tooltipWidth / 2 - anchorWidth / 2 >= windowContainerWidthInPx
+                    ) {
+                        val anchorMidFromRightScreenEdge =
+                            windowContainerWidthInPx - anchorMid
+                        val caretX = tooltipWidth - anchorMidFromRightScreenEdge
+                        preferredPosition = Offset(caretX, caretY)
+                    } else {
+                        preferredPosition = Offset(tooltipWidth / 2, caretY)
+                    }
+                }
+            }
+            position = preferredPosition
+        }
+
+        if (isCaretTop) {
+            path.apply {
+                moveTo(x = position.x, y = position.y)
+                lineTo(x = position.x + caretWidthPx / 2, y = position.y)
+                lineTo(x = position.x, y = position.y - caretHeightPx)
+                lineTo(x = position.x - caretWidthPx / 2, y = position.y)
+                close()
+            }
+        } else {
+            path.apply {
+                moveTo(x = position.x, y = position.y)
+                lineTo(x = position.x + caretWidthPx / 2, y = position.y)
+                lineTo(x = position.x, y = position.y + caretHeightPx.toFloat())
+                lineTo(x = position.x - caretWidthPx / 2, y = position.y)
+                close()
+            }
+        }
+    }
+
+    return onDrawWithContent {
+        if (anchorLayoutCoordinates != null) {
+            drawContent()
+            drawPath(
+                path = path,
+                color = containerColor
+            )
+        }
+    }
+}
+
+@ExperimentalMaterial3Api
+private enum class CaretType {
+    Plain, Rich
+}
+
+@Composable
+internal expect fun windowContainerWidthInPx(): Int
+
 internal val SpacingBetweenTooltipAndAnchor = 4.dp
 internal val TooltipMinHeight = 24.dp
 internal val TooltipMinWidth = 40.dp
diff --git a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Tooltip.desktop.kt b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Tooltip.desktop.kt
index 71f431b..c3cbf05 100644
--- a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Tooltip.desktop.kt
+++ b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/Tooltip.desktop.kt
@@ -16,158 +16,12 @@
 
 package androidx.compose.material3
 
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.paddingFromBaseline
-import androidx.compose.foundation.layout.requiredHeightIn
-import androidx.compose.foundation.layout.sizeIn
-import androidx.compose.material3.tokens.PlainTooltipTokens
-import androidx.compose.material3.tokens.RichTooltipTokens
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.Shape
-import androidx.compose.ui.unit.Dp
-import androidx.compose.ui.unit.DpSize
+import androidx.compose.ui.LocalComposeScene
 
-/**
- * Plain tooltip that provides a descriptive message.
- *
- * Usually used with [TooltipBox].
- *
- * @param modifier the [Modifier] to be applied to the tooltip.
- * @param caretSize [DpSize] for the caret of the tooltip, if a default
- * caret is desired with a specific dimension. Please see [TooltipDefaults.caretSize] to
- * see the default dimensions. Pass in Dp.Unspecified for this parameter if no caret is desired.
- * @param shape the [Shape] that should be applied to the tooltip container.
- * @param contentColor [Color] that will be applied to the tooltip's content.
- * @param containerColor [Color] that will be applied to the tooltip's container.
- * @param tonalElevation the tonal elevation of the tooltip.
- * @param shadowElevation the shadow elevation of the tooltip.
- * @param content the composable that will be used to populate the tooltip's content.
- */
 @Composable
-@ExperimentalMaterial3Api
-actual fun TooltipScope.PlainTooltip(
-    modifier: Modifier,
-    caretSize: DpSize,
-    shape: Shape,
-    contentColor: Color,
-    containerColor: Color,
-    tonalElevation: Dp,
-    shadowElevation: Dp,
-    content: @Composable () -> Unit
-) {
-    Surface(
-        modifier = modifier,
-        shape = shape,
-        color = containerColor,
-        tonalElevation = tonalElevation,
-        shadowElevation = shadowElevation
-    ) {
-        Box(modifier = Modifier
-            .sizeIn(
-                minWidth = TooltipMinWidth,
-                maxWidth = PlainTooltipMaxWidth,
-                minHeight = TooltipMinHeight
-            )
-            .padding(PlainTooltipContentPadding)
-        ) {
-            val textStyle = PlainTooltipTokens.SupportingTextFont.value
-            CompositionLocalProvider(
-                LocalContentColor provides contentColor,
-                LocalTextStyle provides textStyle,
-                content = content
-            )
-        }
-    }
-}
-
-/**
- * Rich text tooltip that allows the user to pass in a title, text, and action.
- * Tooltips are used to provide a descriptive message.
- *
- * Usually used with [TooltipBox]
- *
- * @param modifier the [Modifier] to be applied to the tooltip.
- * @param title An optional title for the tooltip.
- * @param action An optional action for the tooltip.
- * @param caretSize [DpSize] for the caret of the tooltip, if a default
- * caret is desired with a specific dimension. Please see [TooltipDefaults.caretSize] to
- * see the default dimensions. Pass in Dp.Unspecified for this parameter if no caret is desired.
- * @param shape the [Shape] that should be applied to the tooltip container.
- * @param colors [RichTooltipColors] that will be applied to the tooltip's container and content.
- * @param tonalElevation the tonal elevation of the tooltip.
- * @param shadowElevation the shadow elevation of the tooltip.
- * @param text the composable that will be used to populate the rich tooltip's text.
- */
-@Composable
-@ExperimentalMaterial3Api
-actual fun TooltipScope.RichTooltip(
-    modifier: Modifier,
-    title: (@Composable () -> Unit)?,
-    action: (@Composable () -> Unit)?,
-    caretSize: DpSize,
-    shape: Shape,
-    colors: RichTooltipColors,
-    tonalElevation: Dp,
-    shadowElevation: Dp,
-    text: @Composable () -> Unit
-) {
-    Surface(
-        modifier = modifier
-            .sizeIn(
-                minWidth = TooltipMinWidth,
-                maxWidth = RichTooltipMaxWidth,
-                minHeight = TooltipMinHeight
-            ),
-        shape = shape,
-        color = colors.containerColor,
-        tonalElevation = tonalElevation,
-        shadowElevation = shadowElevation
-    ) {
-        val actionLabelTextStyle = RichTooltipTokens.ActionLabelTextFont.value
-        val subheadTextStyle = RichTooltipTokens.SubheadFont.value
-        val supportingTextStyle = RichTooltipTokens.SupportingTextFont.value
-
-        Column(
-            modifier = Modifier.padding(horizontal = RichTooltipHorizontalPadding)
-        ) {
-            title?.let {
-                Box(
-                    modifier = Modifier.paddingFromBaseline(top = HeightToSubheadFirstLine)
-                ) {
-                    CompositionLocalProvider(
-                        LocalContentColor provides colors.titleContentColor,
-                        LocalTextStyle provides subheadTextStyle,
-                        content = it
-                    )
-                }
-            }
-            Box(
-                modifier = Modifier.textVerticalPadding(title != null, action != null)
-            ) {
-                CompositionLocalProvider(
-                    LocalContentColor provides colors.contentColor,
-                    LocalTextStyle provides supportingTextStyle,
-                    content = text
-                )
-            }
-            action?.let {
-                Box(
-                    modifier = Modifier
-                        .requiredHeightIn(min = ActionLabelMinHeight)
-                        .padding(bottom = ActionLabelBottomPadding)
-                ) {
-                    CompositionLocalProvider(
-                        LocalContentColor provides colors.actionContentColor,
-                        LocalTextStyle provides actionLabelTextStyle,
-                        content = it
-                    )
-                }
-            }
-        }
-    }
+internal actual fun windowContainerWidthInPx(): Int {
+    // TODO: Upstream a proper way to get this from JetBrains fork
+    //  LocalWindowInfo.current.containerSize.width
+    return LocalComposeScene.current.constraints.maxWidth
 }
diff --git a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/internal/BasicTooltip.desktop.kt b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/internal/BasicTooltip.desktop.kt
index 649eb3e..30845c6 100644
--- a/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/internal/BasicTooltip.desktop.kt
+++ b/compose/material3/material3/src/desktopMain/kotlin/androidx/compose/material3/internal/BasicTooltip.desktop.kt
@@ -23,6 +23,7 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.window.Popup
 import androidx.compose.ui.window.PopupPositionProvider
+import androidx.compose.ui.window.PopupProperties
 
 /**
  * NOTICE:
@@ -56,13 +57,18 @@
     enableUserInput: Boolean,
     content: @Composable () -> Unit
 ) {
+    // TODO: Reuse android implementation - there is no platform specifics here.
+    //  Use expect/actual only for string resources
     Box(modifier = modifier) {
         content()
         if (state.isVisible) {
             Popup(
                 popupPositionProvider = positionProvider,
                 onDismissRequest = { state.dismiss() },
-                focusable = focusable
+                properties = PopupProperties(
+                    // TODO(b/326167778): focusable = true cannot work with mouse
+                    focusable = false
+                )
             ) { tooltip() }
         }
     }
diff --git a/compose/material3/material3/src/skikoMain/kotlin/androidx/compose/material3/AlertDialog.skiko.kt b/compose/material3/material3/src/skikoMain/kotlin/androidx/compose/material3/AlertDialog.skiko.kt
new file mode 100644
index 0000000..e3b2ca3
--- /dev/null
+++ b/compose/material3/material3/src/skikoMain/kotlin/androidx/compose/material3/AlertDialog.skiko.kt
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.material3
+
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.window.DialogProperties
+
+// Keep expect/actual for maintain binary compatibility.
+// `@file:JvmName` doesn't work here because Android and Desktop were published with different names
+// Please note that binary compatibility for Desktop is tracked only in JetBrains fork
+
+@Composable
+actual fun AlertDialog(
+    onDismissRequest: () -> Unit,
+    confirmButton: @Composable () -> Unit,
+    modifier: Modifier,
+    dismissButton: @Composable (() -> Unit)?,
+    icon: @Composable (() -> Unit)?,
+    title: @Composable (() -> Unit)?,
+    text: @Composable (() -> Unit)?,
+    shape: Shape,
+    containerColor: Color,
+    iconContentColor: Color,
+    titleContentColor: Color,
+    textContentColor: Color,
+    tonalElevation: Dp,
+    properties: DialogProperties
+): Unit = AlertDialogImpl(
+    onDismissRequest = onDismissRequest,
+    confirmButton = confirmButton,
+    modifier = modifier,
+    dismissButton = dismissButton,
+    icon = icon,
+    title = title,
+    text = text,
+    shape = shape,
+    containerColor = containerColor,
+    iconContentColor = iconContentColor,
+    titleContentColor = titleContentColor,
+    textContentColor = textContentColor,
+    tonalElevation = tonalElevation,
+    properties = properties
+)
diff --git a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierDeclarationDetector.kt b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierDeclarationDetector.kt
index d5fe7f0..8d2f30d 100644
--- a/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierDeclarationDetector.kt
+++ b/compose/ui/ui-lint/src/main/java/androidx/compose/ui/lint/ModifierDeclarationDetector.kt
@@ -37,14 +37,20 @@
 import org.jetbrains.kotlin.analysis.api.analyze
 import org.jetbrains.kotlin.analysis.api.calls.KtCall
 import org.jetbrains.kotlin.analysis.api.calls.KtCallableMemberCall
+import org.jetbrains.kotlin.analysis.api.calls.KtImplicitReceiverValue
 import org.jetbrains.kotlin.analysis.api.calls.singleCallOrNull
+import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
+import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
+import org.jetbrains.kotlin.idea.references.mainReference
 import org.jetbrains.kotlin.psi.KtCallExpression
 import org.jetbrains.kotlin.psi.KtCallableDeclaration
+import org.jetbrains.kotlin.psi.KtDeclaration
 import org.jetbrains.kotlin.psi.KtDeclarationWithBody
 import org.jetbrains.kotlin.psi.KtFunction
 import org.jetbrains.kotlin.psi.KtParameter
 import org.jetbrains.kotlin.psi.KtProperty
 import org.jetbrains.kotlin.psi.KtPropertyAccessor
+import org.jetbrains.kotlin.psi.KtThisExpression
 import org.jetbrains.kotlin.psi.KtUserType
 import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
 import org.jetbrains.uast.UCallExpression
@@ -225,43 +231,64 @@
  * See [ModifierDeclarationDetector.ModifierFactoryUnreferencedReceiver]
  */
 private fun UMethod.ensureReceiverIsReferenced(context: JavaContext) {
+    val factoryMethod = this
     var isReceiverReferenced = false
     accept(object : AbstractUastVisitor() {
         /**
-         * If there is no receiver on the call, but the call has a Modifier receiver
-         * type, then the call is implicitly using the Modifier receiver
-         * TODO: consider checking for nested receivers, in case the implicit
-         *  receiver is an inner scope, and not the outer Modifier receiver
+         * Checks for calls to functions with an implicit receiver (member / extension function)
+         * that use the Modifier receiver from the outer factory function.
          */
         override fun visitCallExpression(node: UCallExpression): Boolean {
-            // We account for a receiver of `this` in `visitThisExpression`
-            if (node.receiver == null) {
-                val ktCallExpression = node.sourcePsi as? KtCallExpression
-                    ?: return isReceiverReferenced
-                analyze(ktCallExpression) {
-                    val ktCall = ktCallExpression.resolveCall()?.singleCallOrNull<KtCall>()
-                    val callee = (ktCall as? KtCallableMemberCall<*, *>)?.partiallyAppliedSymbol
-                    val receiver = callee?.extensionReceiver ?: callee?.dispatchReceiver
-                    val receiverClass = receiver?.type?.expandedClassSymbol?.classIdIfNonLocal
-                    if (receiverClass?.asFqNameString() == Names.Ui.Modifier.javaFqn) {
-                        isReceiverReferenced = true
-                        // no further tree traversal, since we found receiver usage.
-                        return true
-                    }
+            val ktCallExpression = node.sourcePsi as? KtCallExpression
+                ?: return isReceiverReferenced
+            analyze(ktCallExpression) {
+                val ktCall = ktCallExpression.resolveCall()?.singleCallOrNull<KtCall>()
+                val callee = (ktCall as? KtCallableMemberCall<*, *>)?.partiallyAppliedSymbol
+                val receiver = (callee?.extensionReceiver ?: callee?.dispatchReceiver)
+                    // Explicit receivers of `this` are handled separately in visitThisExpression -
+                    // that lets us be more defensive and avoid warning for cases like passing
+                    // `this` as a parameter to a function / class where we may run into false
+                    // positives if we only account for explicit receivers in a call expression.
+                    as? KtImplicitReceiverValue ?: return isReceiverReferenced
+                val symbol = receiver.symbol as? KtReceiverParameterSymbol
+                // The symbol of the enclosing factory method
+                val enclosingMethodSymbol = (factoryMethod.sourcePsi as? KtDeclaration)
+                    ?.getSymbol() as? KtFunctionSymbol
+                // If the receiver parameter symbol matches the outer modifier factory's
+                // symbol, then that means that the receiver for this call is the
+                // factory method, and not some other declaration that provides a modifier
+                // receiver.
+                if (symbol == enclosingMethodSymbol?.receiverParameter) {
+                    isReceiverReferenced = true
+                    // no further tree traversal, since we found receiver usage.
+                    return true
                 }
             }
             return isReceiverReferenced
         }
 
         /**
-         * If `this` is explicitly referenced, no error.
-         * TODO: consider checking for nested receivers, in case `this` refers to an
-         * inner scope, and not the outer Modifier receiver
+         * If `this` is explicitly referenced, and points to the receiver of the outer factory
+         * function, no error.
          */
         override fun visitThisExpression(node: UThisExpression): Boolean {
-            isReceiverReferenced = true
-            // no further tree traversal, since we found receiver usage.
-            return true
+            val ktThisExpression = node.sourcePsi as? KtThisExpression
+                ?: return isReceiverReferenced
+            analyze(ktThisExpression) {
+                val symbol = ktThisExpression.instanceReference.mainReference.resolveToSymbol()
+                // The symbol of the enclosing factory method
+                val enclosingMethodSymbol = (factoryMethod.sourcePsi as? KtDeclaration)
+                    ?.getSymbol() as? KtFunctionSymbol
+                // If the symbol `this` points to matches the enclosing factory method, then we
+                // consider the modifier receiver referenced. If the symbols do not match, `this`
+                // might point to an inner scope
+                if (symbol == enclosingMethodSymbol) {
+                    isReceiverReferenced = true
+                    // no further tree traversal, since we found receiver usage.
+                    return true
+                }
+            }
+            return isReceiverReferenced
         }
     })
     if (!isReceiverReferenced) {
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt
index 9b1c94b..4eff543 100644
--- a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt
@@ -150,7 +150,7 @@
                 object TestModifier : Modifier.Element
 
                 fun Modifier.fooModifier(): Modifier.Element {
-                    return this.then(TestModifier)
+                    return TestModifier
                 }
             """
             ),
@@ -162,7 +162,10 @@
 src/androidx/compose/ui/foo/TestModifier.kt:8: Warning: Modifier factory functions should have a return type of Modifier [ModifierFactoryReturnType]
                 fun Modifier.fooModifier(): Modifier.Element {
                              ~~~~~~~~~~~
-0 errors, 1 warnings
+src/androidx/compose/ui/foo/TestModifier.kt:8: Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver]
+                fun Modifier.fooModifier(): Modifier.Element {
+                             ~~~~~~~~~~~
+1 errors, 1 warnings
             """
             )
             .expectFixDiffs(
@@ -187,14 +190,14 @@
                 object TestModifier : Modifier.Element
 
                 val Modifier.fooModifier get(): Modifier.Element {
-                    return this.then(TestModifier)
+                    return TestModifier
                 }
 
                 val Modifier.fooModifier2: Modifier.Element get() {
-                    return this.then(TestModifier)
+                    return TestModifier
                 }
 
-                val Modifier.fooModifier3: Modifier.Element get() = this.then(TestModifier)
+                val Modifier.fooModifier3: Modifier.Element get() = TestModifier
             """
             ),
             Stubs.Modifier
@@ -209,25 +212,34 @@
                 val Modifier.fooModifier2: Modifier.Element get() {
                              ~~~~~~~~~~~~
 src/androidx/compose/ui/foo/TestModifier.kt:16: Warning: Modifier factory functions should have a return type of Modifier [ModifierFactoryReturnType]
-                val Modifier.fooModifier3: Modifier.Element get() = this.then(TestModifier)
+                val Modifier.fooModifier3: Modifier.Element get() = TestModifier
                              ~~~~~~~~~~~~
-0 errors, 3 warnings
+src/androidx/compose/ui/foo/TestModifier.kt:8: Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver]
+                val Modifier.fooModifier get(): Modifier.Element {
+                             ~~~~~~~~~~~
+src/androidx/compose/ui/foo/TestModifier.kt:12: Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver]
+                val Modifier.fooModifier2: Modifier.Element get() {
+                             ~~~~~~~~~~~~
+src/androidx/compose/ui/foo/TestModifier.kt:16: Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver]
+                val Modifier.fooModifier3: Modifier.Element get() = TestModifier
+                             ~~~~~~~~~~~~
+3 errors, 3 warnings
             """
             )
             .expectFixDiffs(
                 """
-Fix for src/androidx/compose/ui/foo/TestModifier.kt line 8: Change return type to Modifier:
+Autofix for src/androidx/compose/ui/foo/TestModifier.kt line 8: Change return type to Modifier:
 @@ -8 +8
 -                 val Modifier.fooModifier get(): Modifier.Element {
 +                 val Modifier.fooModifier get(): Modifier {
-Fix for src/androidx/compose/ui/foo/TestModifier.kt line 12: Change return type to Modifier:
+Autofix for src/androidx/compose/ui/foo/TestModifier.kt line 12: Change return type to Modifier:
 @@ -12 +12
 -                 val Modifier.fooModifier2: Modifier.Element get() {
 +                 val Modifier.fooModifier2: Modifier get() {
-Fix for src/androidx/compose/ui/foo/TestModifier.kt line 16: Change return type to Modifier:
+Autofix for src/androidx/compose/ui/foo/TestModifier.kt line 16: Change return type to Modifier:
 @@ -16 +16
--                 val Modifier.fooModifier3: Modifier.Element get() = this.then(TestModifier)
-+                 val Modifier.fooModifier3: Modifier get() = this.then(TestModifier)
+-                 val Modifier.fooModifier3: Modifier.Element get() = TestModifier
++                 val Modifier.fooModifier3: Modifier get() = TestModifier
             """
             )
     }
@@ -320,7 +332,7 @@
                 object TestModifier : Modifier.Element
 
                 fun Modifier.fooModifier(): TestModifier {
-                    return this.then(TestModifier)
+                    return TestModifier
                 }
             """
             ),
@@ -332,7 +344,10 @@
 src/androidx/compose/ui/foo/TestModifier.kt:8: Warning: Modifier factory functions should have a return type of Modifier [ModifierFactoryReturnType]
                 fun Modifier.fooModifier(): TestModifier {
                              ~~~~~~~~~~~
-0 errors, 1 warnings
+src/androidx/compose/ui/foo/TestModifier.kt:8: Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver]
+                fun Modifier.fooModifier(): TestModifier {
+                             ~~~~~~~~~~~
+1 errors, 1 warnings
             """
             )
             .expectFixDiffs(
@@ -445,21 +460,19 @@
 
                 import androidx.compose.ui.Modifier
 
-                object TestModifier : Modifier.Element
-
                 fun fooModifier(): Modifier {
-                    return this.then(TestModifier)
+                    return Modifier
                 }
 
                 val fooModifier get(): Modifier {
-                    return this.then(TestModifier)
+                    return Modifier
                 }
 
                 val fooModifier2: Modifier get() {
-                    return this.then(TestModifier)
+                    return Modifier
                 }
 
-                val fooModifier3: Modifier get() = TestModifier
+                val fooModifier3: Modifier get() = Modifier
             """
             ),
             Stubs.Modifier
@@ -467,39 +480,39 @@
             .run()
             .expect(
                 """
-src/androidx/compose/ui/foo/TestModifier.kt:8: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
+src/androidx/compose/ui/foo/test.kt:6: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
                 fun fooModifier(): Modifier {
                     ~~~~~~~~~~~
-src/androidx/compose/ui/foo/TestModifier.kt:12: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
+src/androidx/compose/ui/foo/test.kt:10: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
                 val fooModifier get(): Modifier {
                     ~~~~~~~~~~~
-src/androidx/compose/ui/foo/TestModifier.kt:16: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
+src/androidx/compose/ui/foo/test.kt:14: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
                 val fooModifier2: Modifier get() {
                     ~~~~~~~~~~~~
-src/androidx/compose/ui/foo/TestModifier.kt:20: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
-                val fooModifier3: Modifier get() = TestModifier
+src/androidx/compose/ui/foo/test.kt:18: Warning: Modifier factory functions should be extensions on Modifier [ModifierFactoryExtensionFunction]
+                val fooModifier3: Modifier get() = Modifier
                     ~~~~~~~~~~~~
 0 errors, 4 warnings
             """
             )
             .expectFixDiffs(
                 """
-Fix for src/androidx/compose/ui/foo/TestModifier.kt line 8: Add Modifier receiver:
-@@ -8 +8
+Autofix for src/androidx/compose/ui/foo/test.kt line 6: Add Modifier receiver:
+@@ -6 +6
 -                 fun fooModifier(): Modifier {
 +                 fun Modifier.fooModifier(): Modifier {
-Fix for src/androidx/compose/ui/foo/TestModifier.kt line 12: Add Modifier receiver:
-@@ -12 +12
+Autofix for src/androidx/compose/ui/foo/test.kt line 10: Add Modifier receiver:
+@@ -10 +10
 -                 val fooModifier get(): Modifier {
 +                 val Modifier.fooModifier get(): Modifier {
-Fix for src/androidx/compose/ui/foo/TestModifier.kt line 16: Add Modifier receiver:
-@@ -16 +16
+Autofix for src/androidx/compose/ui/foo/test.kt line 14: Add Modifier receiver:
+@@ -14 +14
 -                 val fooModifier2: Modifier get() {
 +                 val Modifier.fooModifier2: Modifier get() {
-Fix for src/androidx/compose/ui/foo/TestModifier.kt line 20: Add Modifier receiver:
-@@ -20 +20
--                 val fooModifier3: Modifier get() = TestModifier
-+                 val Modifier.fooModifier3: Modifier get() = TestModifier
+Autofix for src/androidx/compose/ui/foo/test.kt line 18: Add Modifier receiver:
+@@ -18 +18
+-                 val fooModifier3: Modifier get() = Modifier
++                 val Modifier.fooModifier3: Modifier get() = Modifier
             """
             )
     }
@@ -879,5 +892,60 @@
             .run()
             .expectClean()
     }
+
+    // Test for b/341056462
+    @Test
+    fun nestedReceivers() {
+        lint().files(
+            kotlin(
+                """
+                package androidx.compose.ui.foo
+
+                import androidx.compose.ui.Modifier
+                import androidx.compose.ui.composed
+
+                object TestModifier : Modifier.Element
+
+                fun Modifier.fooModifier(): Modifier {
+                    return this.then(TestModifier)
+                }
+
+                fun Modifier.noError_implicitReceiver(): Modifier = composed {
+                    fooModifier()
+                }
+
+                // fooModifier() uses the receiver from composed, but composed doesn't use the
+                // receiver from Modifier.error() - so there is still an issue.
+                fun Modifier.error_implicitReceiver(): Modifier = Modifier.composed {
+                    fooModifier()
+                }
+
+                fun Modifier.noError_explicitReceiver(): Modifier = this.composed {
+                    this.fooModifier()
+                }
+
+                // fooModifier() uses the receiver from composed, but composed doesn't use the
+                // receiver from Modifier.error() - so there is still an issue.
+                fun Modifier.error_explicitReceiver(): Modifier = Modifier.composed {
+                    this.fooModifier()
+                }
+            """
+            ),
+            Stubs.Modifier,
+            UiStubs.composed,
+        )
+            .run()
+            .expect(
+"""
+src/androidx/compose/ui/foo/TestModifier.kt:19: Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver]
+                fun Modifier.error_implicitReceiver(): Modifier = Modifier.composed {
+                             ~~~~~~~~~~~~~~~~~~~~~~
+src/androidx/compose/ui/foo/TestModifier.kt:29: Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver]
+                fun Modifier.error_explicitReceiver(): Modifier = Modifier.composed {
+                             ~~~~~~~~~~~~~~~~~~~~~~
+2 errors, 0 warnings
+"""
+            )
+    }
 }
 /* ktlint-enable max-line-length */
diff --git a/compose/ui/ui-text/samples/src/main/java/androidx/compose/ui/text/samples/AnnotatedStringBuilderSamples.kt b/compose/ui/ui-text/samples/src/main/java/androidx/compose/ui/text/samples/AnnotatedStringBuilderSamples.kt
index b864ae0..3088ab3 100644
--- a/compose/ui/ui-text/samples/src/main/java/androidx/compose/ui/text/samples/AnnotatedStringBuilderSamples.kt
+++ b/compose/ui/ui-text/samples/src/main/java/androidx/compose/ui/text/samples/AnnotatedStringBuilderSamples.kt
@@ -177,7 +177,12 @@
     BasicText(
         buildAnnotatedString {
             append("Build better apps faster with ")
-            withLink(LinkAnnotation.Url("https://developer.android.com/jetpack/compose")) {
+            withLink(
+                LinkAnnotation.Url(
+                    "https://developer.android.com/jetpack/compose",
+                    TextLinkStyles(style = SpanStyle(color = Color.Blue))
+                )
+            ) {
                 append("Jetpack Compose")
             }
         }
@@ -194,6 +199,7 @@
             val link = LinkAnnotation.Url(
                 "https://developer.android.com/jetpack/compose",
                 TextLinkStyles(
+                    style = SpanStyle(color = Color.Blue),
                     hoveredStyle = SpanStyle(textDecoration = TextDecoration.Underline)
                 )
             )
@@ -212,7 +218,8 @@
         buildAnnotatedString {
             append("Build better apps faster with ")
             val link = LinkAnnotation.Url(
-                "https://developer.android.com/jetpack/compose"
+                "https://developer.android.com/jetpack/compose",
+                TextLinkStyles(SpanStyle(color = Color.Blue))
             ) {
                 val url = (it as LinkAnnotation.Url).url
                 // log some metrics
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt
index 7ad8bde..697c44e 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/DesktopPopup.desktop.kt
@@ -16,29 +16,12 @@
 package androidx.compose.ui.window
 
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.DisposableEffect
-import androidx.compose.runtime.Immutable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
-import androidx.compose.runtime.rememberCompositionContext
-import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.LocalComposeScene
-import androidx.compose.ui.Modifier
 import androidx.compose.ui.awt.LocalLayerContainer
 import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.input.key.Key
-import androidx.compose.ui.input.key.KeyEvent
-import androidx.compose.ui.input.key.KeyEventType
-import androidx.compose.ui.input.key.key
-import androidx.compose.ui.input.key.type
-import androidx.compose.ui.layout.Layout
-import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.platform.SkiaBasedOwner
-import androidx.compose.ui.platform.setContent
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.DpOffset
 import androidx.compose.ui.unit.IntOffset
@@ -49,291 +32,23 @@
 import androidx.compose.ui.unit.round
 import java.awt.MouseInfo
 import javax.swing.SwingUtilities.convertPointFromScreen
-
-@Immutable
-actual class PopupProperties @ExperimentalComposeUiApi actual constructor(
-    actual val focusable: Boolean,
-    actual val dismissOnBackPress: Boolean,
-    actual val dismissOnClickOutside: Boolean,
-    actual val clippingEnabled: Boolean,
-) {
-    override fun equals(other: Any?): Boolean {
-        if (this === other) return true
-        if (other !is PopupProperties) return false
-
-        if (focusable != other.focusable) return false
-        if (dismissOnBackPress != other.dismissOnBackPress) return false
-        if (dismissOnClickOutside != other.dismissOnClickOutside) return false
-        if (clippingEnabled != other.clippingEnabled) return false
-
-        return true
-    }
-
-    override fun hashCode(): Int {
-        var result = dismissOnBackPress.hashCode()
-        result = 31 * result + focusable.hashCode()
-        result = 31 * result + dismissOnBackPress.hashCode()
-        result = 31 * result + dismissOnClickOutside.hashCode()
-        result = 31 * result + clippingEnabled.hashCode()
-        return result
-    }
-}
+import kotlin.math.roundToInt
 
 /**
- * Opens a popup with the given content.
- *
- * The popup is positioned relative to its parent, using the [alignment] and [offset].
- * The popup is visible as long as it is part of the composition hierarchy.
- *
- * @sample androidx.compose.ui.samples.PopupSample
- *
- * @param alignment The alignment relative to the parent.
- * @param offset An offset from the original aligned position of the popup. Offset respects the
- * Ltr/Rtl context, thus in Ltr it will be added to the original aligned position and in Rtl it
- * will be subtracted from it.
- * @param focusable Indicates if the popup can grab the focus.
- * @param onDismissRequest Executes when the user clicks outside of the popup.
- * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
- * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
- * Return true to stop propagation of this event. If you return false, the key event will be
- * sent to this [onPreviewKeyEvent]'s child. If none of the children consume the event,
- * it will be sent back up to the root using the onKeyEvent callback.
- * @param onKeyEvent This callback is invoked when the user interacts with the hardware
- * keyboard. While implementing this callback, return true to stop propagation of this event.
- * If you return false, the key event will be sent to this [onKeyEvent]'s parent.
- * @param content The content to be displayed inside the popup.
+ * Returns a remembered value of the mouse cursor position or null if cursor is not inside a scene.
  */
 @Composable
-fun Popup(
-    alignment: Alignment = Alignment.TopStart,
-    offset: IntOffset = IntOffset(0, 0),
-    focusable: Boolean = false,
-    onDismissRequest: (() -> Unit)? = null,
-    onPreviewKeyEvent: ((KeyEvent) -> Boolean) = { false },
-    onKeyEvent: ((KeyEvent) -> Boolean) = { false },
-    content: @Composable () -> Unit
-) {
-    val popupPositioner = remember(alignment, offset) {
-        AlignmentOffsetPositionProvider(
-            alignment,
-            offset
+private fun rememberCursorPosition(): Offset? {
+    // TODO: Apply changes from https://github.com/JetBrains/compose-multiplatform-core/pull/432
+    val component = LocalLayerContainer.current
+    return remember {
+        val awtMousePosition = MouseInfo.getPointerInfo().location
+        convertPointFromScreen(awtMousePosition, component)
+        Offset(
+            (awtMousePosition.x * component.density.density),
+            (awtMousePosition.y * component.density.density)
         )
     }
-
-    Popup(
-        popupPositionProvider = popupPositioner,
-        onDismissRequest = onDismissRequest,
-        onKeyEvent = onKeyEvent,
-        onPreviewKeyEvent = onPreviewKeyEvent,
-        focusable = focusable,
-        content = content
-    )
-}
-
-/**
- * Opens a popup with the given content.
- *
- * The popup is positioned using a custom [popupPositionProvider].
- *
- * @sample androidx.compose.ui.samples.PopupSample
- *
- * @param popupPositionProvider Provides the screen position of the popup.
- * @param onDismissRequest Executes when the user clicks outside of the popup.
- * @param focusable Indicates if the popup can grab the focus.
- * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
- * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
- * Return true to stop propagation of this event. If you return false, the key event will be
- * sent to this [onPreviewKeyEvent]'s child. If none of the children consume the event,
- * it will be sent back up to the root using the onKeyEvent callback.
- * @param onKeyEvent This callback is invoked when the user interacts with the hardware
- * keyboard. While implementing this callback, return true to stop propagation of this event.
- * If you return false, the key event will be sent to this [onKeyEvent]'s parent.
- * @param content The content to be displayed inside the popup.
- */
-@Composable
-fun Popup(
-    popupPositionProvider: PopupPositionProvider,
-    onDismissRequest: (() -> Unit)? = null,
-    onPreviewKeyEvent: ((KeyEvent) -> Boolean) = { false },
-    onKeyEvent: ((KeyEvent) -> Boolean) = { false },
-    focusable: Boolean = false,
-    content: @Composable () -> Unit
-) {
-    PopupLayout(
-        popupPositionProvider = popupPositionProvider,
-        focusable = focusable,
-        onDismissRequest = if (focusable) onDismissRequest else null,
-        onPreviewKeyEvent = onPreviewKeyEvent,
-        onKeyEvent = onKeyEvent,
-        content = content
-    )
-}
-
-/**
- * Opens a popup with the given content.
- *
- * A popup is a floating container that appears on top of the current activity.
- * It is especially useful for non-modal UI surfaces that remain hidden until they
- * are needed, for example floating menus like Cut/Copy/Paste.
- *
- * The popup is positioned relative to its parent, using the [alignment] and [offset].
- * The popup is visible as long as it is part of the composition hierarchy.
- *
- * @sample androidx.compose.ui.samples.PopupSample
- *
- * @param alignment The alignment relative to the parent.
- * @param offset An offset from the original aligned position of the popup. Offset respects the
- * Ltr/Rtl context, thus in Ltr it will be added to the original aligned position and in Rtl it
- * will be subtracted from it.
- * @param onDismissRequest Executes when the user clicks outside of the popup.
- * @param properties [PopupProperties] for further customization of this popup's behavior.
- * @param content The content to be displayed inside the popup.
- */
-@Composable
-actual fun Popup(
-    alignment: Alignment,
-    offset: IntOffset,
-    onDismissRequest: (() -> Unit)?,
-    properties: PopupProperties,
-    content: @Composable () -> Unit
-) {
-    val popupPositioner = remember(alignment, offset) {
-        AlignmentOffsetPositionProvider(
-            alignment,
-            offset
-        )
-    }
-
-    Popup(
-        popupPositionProvider = popupPositioner,
-        onDismissRequest = onDismissRequest,
-        properties = properties,
-        content = content
-    )
-}
-
-/**
- * Opens a popup with the given content.
- *
- * The popup is positioned using a custom [popupPositionProvider].
- *
- * @sample androidx.compose.ui.samples.PopupSample
- *
- * @param popupPositionProvider Provides the screen position of the popup.
- * @param onDismissRequest Executes when the user clicks outside of the popup.
- * @param properties [PopupProperties] for further customization of this popup's behavior.
- * @param content The content to be displayed inside the popup.
- */
-@Composable
-actual fun Popup(
-    popupPositionProvider: PopupPositionProvider,
-    onDismissRequest: (() -> Unit)?,
-    properties: PopupProperties,
-    content: @Composable () -> Unit
-) {
-    PopupLayout(
-        popupPositionProvider,
-        properties.focusable,
-        if (properties.dismissOnClickOutside) onDismissRequest else null,
-        onKeyEvent = {
-            if (properties.dismissOnBackPress &&
-                it.type == KeyEventType.KeyDown && it.key == Key.Escape &&
-                onDismissRequest != null
-            ) {
-                onDismissRequest()
-                true
-            } else {
-                false
-            }
-        },
-        content = content
-    )
-}
-
-@Composable
-internal fun PopupLayout(
-    popupPositionProvider: PopupPositionProvider,
-    focusable: Boolean,
-    onDismissRequest: (() -> Unit)?,
-    modifier: Modifier = Modifier,
-    onPreviewKeyEvent: ((KeyEvent) -> Boolean) = { false },
-    onKeyEvent: ((KeyEvent) -> Boolean) = { false },
-    content: @Composable () -> Unit
-) {
-    val scene = LocalComposeScene.current
-    val density = LocalDensity.current
-
-    var parentBounds by remember { mutableStateOf(IntRect.Zero) }
-    var popupBounds by remember { mutableStateOf(IntRect.Zero) }
-
-    // getting parent bounds
-    Layout(
-        content = {},
-        modifier = Modifier.onGloballyPositioned { childCoordinates ->
-            val coordinates = childCoordinates.parentCoordinates!!
-            parentBounds = IntRect(
-                coordinates.localToWindow(Offset.Zero).round(),
-                coordinates.size
-            )
-        },
-        measurePolicy = { _, _ ->
-            layout(0, 0) {}
-        }
-    )
-
-    val parentComposition = rememberCompositionContext()
-    val (owner, composition) = remember {
-        val owner = SkiaBasedOwner(
-            platformInputService = scene.platformInputService,
-            component = scene.component,
-            density = density,
-            coroutineContext = parentComposition.effectCoroutineContext,
-            isPopup = true,
-            isFocusable = focusable,
-            onDismissRequest = onDismissRequest,
-            onPreviewKeyEvent = onPreviewKeyEvent,
-            onKeyEvent = onKeyEvent
-        )
-        scene.attach(owner)
-        val composition = owner.setContent(parent = parentComposition) {
-            Layout(
-                content = content,
-                modifier = modifier,
-                measurePolicy = { measurables, constraints ->
-                    val width = constraints.maxWidth
-                    val height = constraints.maxHeight
-
-                    layout(constraints.maxWidth, constraints.maxHeight) {
-                        measurables.forEach {
-                            val placeable = it.measure(constraints)
-                            val position = popupPositionProvider.calculatePosition(
-                                anchorBounds = parentBounds,
-                                windowSize = IntSize(width, height),
-                                layoutDirection = layoutDirection,
-                                popupContentSize = IntSize(placeable.width, placeable.height)
-                            )
-
-                            popupBounds = IntRect(
-                                position,
-                                IntSize(placeable.width, placeable.height)
-                            )
-                            owner.bounds = popupBounds
-                            placeable.place(position.x, position.y)
-                        }
-                    }
-                }
-            )
-        }
-        owner to composition
-    }
-    owner.density = density
-    DisposableEffect(Unit) {
-        onDispose {
-            scene.detach(owner)
-            composition.dispose()
-            owner.dispose()
-        }
-    }
 }
 
 /**
@@ -343,58 +58,122 @@
  * @param alignment The alignment of the popup relative to the current cursor position.
  * @param windowMargin Defines the area within the window that limits the placement of the popup.
  */
+@OptIn(ExperimentalComposeUiApi::class)
 @Composable
 fun rememberCursorPositionProvider(
     offset: DpOffset = DpOffset.Zero,
     alignment: Alignment = Alignment.BottomEnd,
     windowMargin: Dp = 4.dp
-): PopupPositionProvider = with(LocalDensity.current) {
-    val component = LocalLayerContainer.current
-    val cursorPoint = remember {
-        val awtMousePosition = MouseInfo.getPointerInfo().location
-        convertPointFromScreen(awtMousePosition, component)
-        IntOffset(
-            (awtMousePosition.x * component.density.density).toInt(),
-            (awtMousePosition.y * component.density.density).toInt()
+): PopupPositionProvider {
+    val offsetPx = with(LocalDensity.current) {
+        Offset(offset.x.toPx(), offset.y.toPx())
+    }
+    val windowMarginPx = with(LocalDensity.current) {
+        windowMargin.roundToPx()
+    }
+    val cursorPosition = rememberCursorPosition()
+
+    if (cursorPosition == null) {
+        // if cursor is outside the scene, show popup under the parent component
+        return rememberComponentRectPositionProvider(
+            alignment = alignment,
+            offset = offset
         )
     }
-    val offsetPx = IntOffset(offset.x.roundToPx(), offset.y.roundToPx())
+
+    return remember(cursorPosition, offsetPx, alignment, windowMarginPx) {
+        PopupPositionProviderAtPosition(
+            positionPx = cursorPosition,
+            isRelativeToAnchor = false,
+            offsetPx = offsetPx,
+            alignment = alignment,
+            windowMarginPx = windowMarginPx
+        )
+    }
+}
+
+/**
+ * A [PopupPositionProvider] that positions the popup at the given position relative to the anchor.
+ *
+ * @param positionPx the offset, in pixels, relative to the anchor, to position the popup at.
+ * @param offset [DpOffset] to be added to the position of the popup.
+ * @param alignment The alignment of the popup relative to desired position.
+ * @param windowMargin Defines the area within the window that limits the placement of the popup.
+ */
+@ExperimentalComposeUiApi
+@Composable
+fun rememberPopupPositionProviderAtPosition(
+    positionPx: Offset,
+    offset: DpOffset = DpOffset.Zero,
+    alignment: Alignment = Alignment.BottomEnd,
+    windowMargin: Dp = 4.dp
+): PopupPositionProvider = with(LocalDensity.current) {
+    val offsetPx = Offset(offset.x.toPx(), offset.y.toPx())
     val windowMarginPx = windowMargin.roundToPx()
-    object : PopupPositionProvider {
-        override fun calculatePosition(
-            anchorBounds: IntRect,
-            windowSize: IntSize,
-            layoutDirection: LayoutDirection,
-            popupContentSize: IntSize
-        ) = with(density) {
-            val anchor = IntRect(cursorPoint, IntSize.Zero)
-            val tooltipArea = IntRect(
-                IntOffset(
-                    anchor.left - popupContentSize.width,
-                    anchor.top - popupContentSize.height,
-                ),
-                IntSize(
-                    popupContentSize.width * 2,
-                    popupContentSize.height * 2
-                )
+
+    remember(positionPx, offsetPx, alignment, windowMarginPx) {
+        PopupPositionProviderAtPosition(
+            positionPx = positionPx,
+            isRelativeToAnchor = true,
+            offsetPx = offsetPx,
+            alignment = alignment,
+            windowMarginPx = windowMarginPx
+        )
+    }
+}
+
+/**
+ * A [PopupPositionProvider] that positions the popup at the given offsets and alignment.
+ *
+ * @param positionPx The offset of the popup's location, in pixels.
+ * @param isRelativeToAnchor Whether [positionPx] is relative to the anchor bounds passed to
+ * [calculatePosition]. If `false`, it is relative to the window.
+ * @param offsetPx Extra offset to be added to the position of the popup, in pixels.
+ * @param alignment The alignment of the popup relative to desired position.
+ * @param windowMarginPx Defines the area within the window that limits the placement of the popup,
+ * in pixels.
+ */
+@ExperimentalComposeUiApi
+class PopupPositionProviderAtPosition(
+    val positionPx: Offset,
+    val isRelativeToAnchor: Boolean,
+    val offsetPx: Offset,
+    val alignment: Alignment = Alignment.BottomEnd,
+    val windowMarginPx: Int,
+) : PopupPositionProvider {
+    override fun calculatePosition(
+        anchorBounds: IntRect,
+        windowSize: IntSize,
+        layoutDirection: LayoutDirection,
+        popupContentSize: IntSize
+    ): IntOffset {
+        val anchor = IntRect(
+            offset = positionPx.round() +
+                (if (isRelativeToAnchor) anchorBounds.topLeft else IntOffset.Zero),
+            size = IntSize.Zero)
+        val tooltipArea = IntRect(
+            IntOffset(
+                anchor.left - popupContentSize.width,
+                anchor.top - popupContentSize.height,
+            ),
+            IntSize(
+                popupContentSize.width * 2,
+                popupContentSize.height * 2
             )
-            val position = alignment.align(popupContentSize, tooltipArea.size, layoutDirection)
-            var x = tooltipArea.left + position.x + offsetPx.x
-            var y = tooltipArea.top + position.y + offsetPx.y
-            if (x + popupContentSize.width > windowSize.width - windowMarginPx) {
-                x -= popupContentSize.width
-            }
-            if (y + popupContentSize.height > windowSize.height - windowMarginPx) {
-                y -= popupContentSize.height + anchor.height
-            }
-            if (x < windowMarginPx) {
-                x = windowMarginPx
-            }
-            if (y < windowMarginPx) {
-                y = windowMarginPx
-            }
-            IntOffset(x, y)
+        )
+        val position = alignment.align(popupContentSize, tooltipArea.size, layoutDirection)
+        var x = tooltipArea.left + position.x + offsetPx.x
+        var y = tooltipArea.top + position.y + offsetPx.y
+        if (x + popupContentSize.width > windowSize.width - windowMarginPx) {
+            x -= popupContentSize.width
         }
+        if (y + popupContentSize.height > windowSize.height - windowMarginPx) {
+            y -= popupContentSize.height + anchor.height
+        }
+        x = x.coerceAtLeast(windowMarginPx.toFloat())
+        y = y.coerceAtLeast(windowMarginPx.toFloat())
+
+        return IntOffset(x.roundToInt(), y.roundToInt())
     }
 }
 
@@ -410,28 +189,32 @@
     anchor: Alignment = Alignment.BottomCenter,
     alignment: Alignment = Alignment.BottomCenter,
     offset: DpOffset = DpOffset.Zero
-): PopupPositionProvider = with(LocalDensity.current) {
-    val offsetPx = IntOffset(offset.x.roundToPx(), offset.y.roundToPx())
-    return object : PopupPositionProvider {
-        override fun calculatePosition(
-            anchorBounds: IntRect,
-            windowSize: IntSize,
-            layoutDirection: LayoutDirection,
-            popupContentSize: IntSize
-        ): IntOffset {
-            val anchorPoint = anchor.align(IntSize.Zero, anchorBounds.size, layoutDirection)
-            val tooltipArea = IntRect(
-                IntOffset(
-                    anchorBounds.left + anchorPoint.x - popupContentSize.width,
-                    anchorBounds.top + anchorPoint.y - popupContentSize.height,
-                ),
-                IntSize(
-                    popupContentSize.width * 2,
-                    popupContentSize.height * 2
+): PopupPositionProvider {
+    val offsetPx = with(LocalDensity.current) {
+        IntOffset(offset.x.roundToPx(), offset.y.roundToPx())
+    }
+    return remember(anchor, alignment, offsetPx) {
+        object : PopupPositionProvider {
+            override fun calculatePosition(
+                anchorBounds: IntRect,
+                windowSize: IntSize,
+                layoutDirection: LayoutDirection,
+                popupContentSize: IntSize
+            ): IntOffset {
+                val anchorPoint = anchor.align(IntSize.Zero, anchorBounds.size, layoutDirection)
+                val tooltipArea = IntRect(
+                    IntOffset(
+                        anchorBounds.left + anchorPoint.x - popupContentSize.width,
+                        anchorBounds.top + anchorPoint.y - popupContentSize.height,
+                    ),
+                    IntSize(
+                        popupContentSize.width * 2,
+                        popupContentSize.height * 2
+                    )
                 )
-            )
-            val position = alignment.align(popupContentSize, tooltipArea.size, layoutDirection)
-            return tooltipArea.topLeft + position + offsetPx
+                val position = alignment.align(popupContentSize, tooltipArea.size, layoutDirection)
+                return tooltipArea.topLeft + position + offsetPx
+            }
         }
     }
 }
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Dialog.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Dialog.desktop.kt
index 4d9e671..f238d7d 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Dialog.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/window/Dialog.desktop.kt
@@ -18,26 +18,16 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.currentCompositionLocalContext
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberUpdatedState
-import androidx.compose.ui.Alignment
 import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.Modifier
 import androidx.compose.ui.awt.ComposeDialog
-import androidx.compose.ui.draw.drawBehind
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.painter.Painter
-import androidx.compose.ui.input.key.Key
 import androidx.compose.ui.input.key.KeyEvent
-import androidx.compose.ui.input.key.KeyEventType
-import androidx.compose.ui.input.key.key
-import androidx.compose.ui.input.key.type
 import androidx.compose.ui.unit.DpSize
-import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.ComponentUpdater
 import androidx.compose.ui.util.makeDisplayable
@@ -53,75 +43,6 @@
 import java.awt.event.WindowEvent
 import javax.swing.JDialog
 
-/**
- * Properties used to customize the behavior of a [Dialog].
- *
- * @property dismissOnBackPress whether the popup can be dismissed by pressing the back button
- *  * on Android or escape key on desktop.
- * If true, pressing the back button will call onDismissRequest.
- * @property dismissOnClickOutside whether the dialog can be dismissed by clicking outside the
- * dialog's bounds. If true, clicking outside the dialog will call onDismissRequest.
- * @property usePlatformDefaultWidth Whether the width of the dialog's content should be limited to
- * the platform default, which is smaller than the screen width.
- */
-@Immutable
-actual class DialogProperties actual constructor(
-    actual val dismissOnBackPress: Boolean,
-    actual val dismissOnClickOutside: Boolean,
-    actual val usePlatformDefaultWidth: Boolean,
-) {
-    override fun equals(other: Any?): Boolean {
-        if (this === other) return true
-        if (other !is DialogProperties) return false
-
-        if (dismissOnBackPress != other.dismissOnBackPress) return false
-        if (dismissOnClickOutside != other.dismissOnClickOutside) return false
-        if (usePlatformDefaultWidth != other.usePlatformDefaultWidth) return false
-
-        return true
-    }
-
-    override fun hashCode(): Int {
-        var result = dismissOnBackPress.hashCode()
-        result = 31 * result + dismissOnClickOutside.hashCode()
-        result = 31 * result + usePlatformDefaultWidth.hashCode()
-        return result
-    }
-}
-
-@Composable
-actual fun Dialog(
-    onDismissRequest: () -> Unit,
-    properties: DialogProperties,
-    content: @Composable () -> Unit
-) {
-    val popupPositioner = remember {
-        AlignmentOffsetPositionProvider(
-            alignment = Alignment.Center,
-            offset = IntOffset(0, 0)
-        )
-    }
-    PopupLayout(
-        popupPositionProvider = popupPositioner,
-        focusable = true,
-        if (properties.dismissOnClickOutside) onDismissRequest else null,
-        modifier = Modifier.drawBehind {
-            drawRect(Color.Black.copy(alpha = 0.6f))
-        },
-        onKeyEvent = {
-            if (properties.dismissOnBackPress &&
-                it.type == KeyEventType.KeyDown && it.key == Key.Escape
-            ) {
-                onDismissRequest()
-                true
-            } else {
-                false
-            }
-        },
-        content = content
-    )
-}
-
 @Deprecated(
     message = "Replaced by DialogWindow",
     replaceWith = ReplaceWith("DialogWindow(" +
@@ -155,26 +76,65 @@
     resizable,
     enabled,
     focusable,
+    alwaysOnTop = false,
     onPreviewKeyEvent,
     onKeyEvent,
     content
 )
 
+@Deprecated(
+    level = DeprecationLevel.HIDDEN,
+    message = "Replaced by an overload that also takes alwaysOnTop",
+)
+@Composable
+fun DialogWindow(
+    onCloseRequest: () -> Unit,
+    state: DialogState = rememberDialogState(),
+    visible: Boolean = true,
+    title: String = "Untitled",
+    icon: Painter? = null,
+    undecorated: Boolean = false,
+    transparent: Boolean = false,
+    resizable: Boolean = true,
+    enabled: Boolean = true,
+    focusable: Boolean = true,
+    onPreviewKeyEvent: ((KeyEvent) -> Boolean) = { false },
+    onKeyEvent: ((KeyEvent) -> Boolean) = { false },
+    content: @Composable DialogWindowScope.() -> Unit
+) {
+    DialogWindow(
+        onCloseRequest,
+        state,
+        visible,
+        title,
+        icon,
+        undecorated,
+        transparent,
+        resizable,
+        enabled,
+        focusable,
+        alwaysOnTop = false,
+        onPreviewKeyEvent,
+        onKeyEvent,
+        content
+    )
+}
+
 /**
  * Composes platform dialog in the current composition. When Dialog enters the composition,
  * a new platform dialog will be created and receives the focus. When Dialog leaves the
  * composition, dialog will be disposed and closed.
  *
- * Dialog is a modal window. It means it blocks the parent [Window] / [Dialog] in which composition
+ * Dialog is a modal window. It means it blocks the parent [Window] / [DialogWindow] in which composition
  * context it was created.
  *
  * Usage:
  * ```
  * @Composable
  * fun main() = application {
- *     val isDialogOpen by remember { mutableStateOf(true) }
+ *     var isDialogOpen by remember { mutableStateOf(true) }
  *     if (isDialogOpen) {
- *         Dialog(onCloseRequest = { isDialogOpen = false })
+ *         Dialog(onCloseRequest = { isDialogOpen = false }) {}
  *     }
  * }
  * ```
@@ -189,11 +149,11 @@
  * the native dialog will update its corresponding properties.
  * If [DialogState.position] is not [WindowPosition.isSpecified], then after the first show on the
  * screen [DialogState.position] will be set to the absolute values.
- * @param visible Is [Dialog] visible to user.
+ * @param visible Is [DialogWindow] visible to user.
  * If `false`:
- * - internal state of [Dialog] is preserved and will be restored next time the dialog
+ * - internal state of [DialogWindow] is preserved and will be restored next time the dialog
  * will be visible;
- * - native resources will not be released. They will be released only when [Dialog]
+ * - native resources will not be released. They will be released only when [DialogWindow]
  * will leave the composition.
  * @param title Title in the titlebar of the dialog
  * @param icon Icon in the titlebar of the window (for platforms which support this).
@@ -207,6 +167,7 @@
  * changing [state])
  * @param enabled Can dialog react to input events
  * @param focusable Can dialog receive focus
+ * @param alwaysOnTop Should the dialog always be on top of another windows and dialogs
  * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
  * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
  * Return true to stop propagation of this event. If you return false, the key event will be
@@ -229,6 +190,7 @@
     resizable: Boolean = true,
     enabled: Boolean = true,
     focusable: Boolean = true,
+    alwaysOnTop: Boolean = false,
     onPreviewKeyEvent: ((KeyEvent) -> Boolean) = { false },
     onKeyEvent: ((KeyEvent) -> Boolean) = { false },
     content: @Composable DialogWindowScope.() -> Unit
@@ -243,6 +205,7 @@
     val currentResizable by rememberUpdatedState(resizable)
     val currentEnabled by rememberUpdatedState(enabled)
     val currentFocusable by rememberUpdatedState(focusable)
+    val currentAlwaysOnTop by rememberUpdatedState(alwaysOnTop)
     val currentOnCloseRequest by rememberUpdatedState(onCloseRequest)
 
     val updater = remember(::ComponentUpdater)
@@ -281,6 +244,7 @@
                 set(currentResizable, dialog::setResizable)
                 set(currentEnabled, dialog::setEnabled)
                 set(currentFocusable, dialog::setFocusable)
+                set(currentAlwaysOnTop, dialog::setAlwaysOnTop)
                 set(state.size, dialog::setSizeSafely)
                 set(state.position, dialog::setPositionSafely)
             }
@@ -325,7 +289,7 @@
  * Once Dialog leaves the composition, [dispose] will be called to free resources that
  * obtained by the [ComposeDialog].
  *
- * Dialog is a modal window. It means it blocks the parent [Window] / [Dialog] in which composition
+ * Dialog is a modal window. It means it blocks the parent [Window] / [DialogWindow] in which composition
  * context it was created.
  *
  * The [update] block can be run multiple times (on the UI thread as well) due to recomposition,
@@ -334,13 +298,13 @@
  * Note the block will also be ran once right after the [create] block completes.
  *
  * Dialog is needed for creating dialog's that still can't be created with
- * the default Compose function [androidx.compose.ui.window.Dialog]
+ * the default Compose function [androidx.compose.ui.window.DialogWindow]
  *
  * @param visible Is [ComposeDialog] visible to user.
  * If `false`:
  * - internal state of [ComposeDialog] is preserved and will be restored next time the dialog
  * will be visible;
- * - native resources will not be released. They will be released only when [Dialog]
+ * - native resources will not be released. They will be released only when [DialogWindow]
  * will leave the composition.
  * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
  * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
@@ -393,12 +357,12 @@
 }
 
 /**
- * Receiver scope which is used by [androidx.compose.ui.window.Dialog].
+ * Receiver scope which is used by [androidx.compose.ui.window.DialogWindow].
  */
 @Stable
 interface DialogWindowScope : WindowScope {
     /**
-     * [ComposeDialog] that was created inside [androidx.compose.ui.window.Dialog].
+     * [ComposeDialog] that was created inside [androidx.compose.ui.window.DialogWindow].
      */
     override val window: ComposeDialog
 }
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt
index 2f16c79..d510fac 100644
--- a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/ComposeScene.skiko.kt
@@ -56,7 +56,9 @@
 import kotlinx.coroutines.launch
 import org.jetbrains.skia.Canvas
 
-internal val LocalComposeScene = staticCompositionLocalOf<ComposeScene> {
+// TODO: This val should not be public!
+//  Upstream current state of [ComposeScene] from JetBrains fork
+val LocalComposeScene = staticCompositionLocalOf<ComposeScene> {
     error("CompositionLocal LocalComposeScene not provided")
 }
 
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/window/Dialog.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/window/Dialog.skiko.kt
new file mode 100644
index 0000000..9bc95d4
--- /dev/null
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/window/Dialog.skiko.kt
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.window
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.Immutable
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCompositionContext
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.ExperimentalComposeUiApi
+import androidx.compose.ui.LocalComposeScene
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.input.key.Key
+import androidx.compose.ui.input.key.KeyEvent
+import androidx.compose.ui.input.key.KeyEventType
+import androidx.compose.ui.input.key.key
+import androidx.compose.ui.input.key.type
+import androidx.compose.ui.layout.Layout
+import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.platform.SkiaBasedOwner
+import androidx.compose.ui.platform.setContent
+import androidx.compose.ui.unit.IntRect
+import androidx.compose.ui.unit.IntSize
+
+/**
+ * The default scrim opacity.
+ */
+private const val DefaultScrimOpacity = 0.6f
+private val DefaultScrimColor = Color.Black.copy(alpha = DefaultScrimOpacity)
+
+/**
+ * Properties used to customize the behavior of a [Dialog].
+ *
+ * @property dismissOnBackPress whether the popup can be dismissed by pressing the back button
+ *  * on Android or escape key on desktop.
+ * If true, pressing the back button will call onDismissRequest.
+ * @property dismissOnClickOutside whether the dialog can be dismissed by clicking outside the
+ * dialog's bounds. If true, clicking outside the dialog will call onDismissRequest.
+ * @property usePlatformDefaultWidth Whether the width of the dialog's content should be limited to
+ * the platform default, which is smaller than the screen width.
+ * @property usePlatformInsets Whether the size of the dialog's content should be limited by
+ * platform insets.
+ * @property useSoftwareKeyboardInset Whether the size of the dialog's content should be limited by
+ * software keyboard inset.
+ * @property scrimColor Color of background fill.
+ */
+@Immutable
+actual class DialogProperties @ExperimentalComposeUiApi constructor(
+    actual val dismissOnBackPress: Boolean = true,
+    actual val dismissOnClickOutside: Boolean = true,
+    actual val usePlatformDefaultWidth: Boolean = true,
+    val usePlatformInsets: Boolean = true,
+    val useSoftwareKeyboardInset: Boolean = true,
+    val scrimColor: Color = DefaultScrimColor,
+) {
+    // Constructor with all non-experimental arguments.
+    @OptIn(ExperimentalComposeUiApi::class)
+    actual constructor(
+        dismissOnBackPress: Boolean,
+        dismissOnClickOutside: Boolean,
+        usePlatformDefaultWidth: Boolean,
+    ) : this(
+        dismissOnBackPress = dismissOnBackPress,
+        dismissOnClickOutside = dismissOnClickOutside,
+        usePlatformDefaultWidth = usePlatformDefaultWidth,
+        usePlatformInsets = true,
+        useSoftwareKeyboardInset = true,
+        scrimColor = DefaultScrimColor,
+    )
+
+    override fun equals(other: Any?): Boolean {
+        if (this === other) return true
+        if (other !is DialogProperties) return false
+
+        if (dismissOnBackPress != other.dismissOnBackPress) return false
+        if (dismissOnClickOutside != other.dismissOnClickOutside) return false
+        if (usePlatformDefaultWidth != other.usePlatformDefaultWidth) return false
+        if (usePlatformInsets != other.usePlatformInsets) return false
+        if (useSoftwareKeyboardInset != other.useSoftwareKeyboardInset) return false
+        if (scrimColor != other.scrimColor) return false
+
+        return true
+    }
+
+    override fun hashCode(): Int {
+        var result = dismissOnBackPress.hashCode()
+        result = 31 * result + dismissOnClickOutside.hashCode()
+        result = 31 * result + usePlatformDefaultWidth.hashCode()
+        result = 31 * result + usePlatformInsets.hashCode()
+        result = 31 * result + useSoftwareKeyboardInset.hashCode()
+        result = 31 * result + scrimColor.hashCode()
+        return result
+    }
+}
+
+@Composable
+actual fun Dialog(
+    onDismissRequest: () -> Unit,
+    properties: DialogProperties,
+    content: @Composable () -> Unit
+) {
+    DialogLayout(
+        if (properties.dismissOnClickOutside) onDismissRequest else null,
+        modifier = Modifier.drawBehind {
+            drawRect(properties.scrimColor)
+        },
+        onPreviewKeyEvent = { false },
+        onKeyEvent = {
+            if (properties.dismissOnBackPress && it.isDismissRequest()) {
+                onDismissRequest()
+                true
+            } else {
+                false
+            }
+        },
+        content = content
+    )
+}
+
+@Composable
+internal fun DialogLayout(
+    onDismissRequest: (() -> Unit)?,
+    modifier: Modifier = Modifier,
+    onPreviewKeyEvent: ((KeyEvent) -> Boolean)?,
+    onKeyEvent: ((KeyEvent) -> Boolean)?,
+    content: @Composable () -> Unit
+) {
+    // TODO: Upstream ComposeScene refactor
+    val scene = LocalComposeScene.current
+    val density = LocalDensity.current
+
+    val parentComposition = rememberCompositionContext()
+    val (owner, composition) = remember {
+        val owner = SkiaBasedOwner(
+            platformInputService = scene.platformInputService,
+            component = scene.component,
+            density = density,
+            coroutineContext = parentComposition.effectCoroutineContext,
+            isPopup = true,
+            isFocusable = true,
+            onDismissRequest = onDismissRequest,
+            onPreviewKeyEvent = onPreviewKeyEvent ?: { false },
+            onKeyEvent = onKeyEvent ?: { false }
+        )
+        scene.attach(owner)
+        val composition = owner.setContent(parent = parentComposition) {
+            Layout(
+                content = content,
+                modifier = modifier,
+                measurePolicy = { measurables, constraints ->
+                    val width = constraints.maxWidth
+                    val height = constraints.maxHeight
+
+                    layout(constraints.maxWidth, constraints.maxHeight) {
+                        measurables.forEach {
+                            val placeable = it.measure(constraints)
+                            val position = Alignment.Center.align(
+                                size = IntSize(placeable.width, placeable.height),
+                                space = IntSize(width, height),
+                                layoutDirection = layoutDirection
+                            )
+                            owner.bounds = IntRect(
+                                position,
+                                IntSize(placeable.width, placeable.height)
+                            )
+                            placeable.place(position.x, position.y)
+                        }
+                    }
+                }
+            )
+        }
+        owner to composition
+    }
+    owner.density = density
+    DisposableEffect(Unit) {
+        onDispose {
+            scene.detach(owner)
+            composition.dispose()
+            owner.dispose()
+        }
+    }
+}
+
+private fun KeyEvent.isDismissRequest() =
+    type == KeyEventType.KeyDown && key == Key.Escape
diff --git a/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/window/Popup.skiko.kt b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/window/Popup.skiko.kt
new file mode 100644
index 0000000..15b2c62
--- /dev/null
+++ b/compose/ui/ui/src/skikoMain/kotlin/androidx/compose/ui/window/Popup.skiko.kt
@@ -0,0 +1,483 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.window
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.Immutable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCompositionContext
+import androidx.compose.runtime.rememberUpdatedState
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.ExperimentalComposeUiApi
+import androidx.compose.ui.LocalComposeScene
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.key.Key
+import androidx.compose.ui.input.key.KeyEvent
+import androidx.compose.ui.input.key.KeyEventType
+import androidx.compose.ui.input.key.key
+import androidx.compose.ui.input.key.type
+import androidx.compose.ui.layout.Layout
+import androidx.compose.ui.layout.onGloballyPositioned
+import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.platform.SkiaBasedOwner
+import androidx.compose.ui.platform.setContent
+import androidx.compose.ui.semantics.popup
+import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.unit.IntOffset
+import androidx.compose.ui.unit.IntRect
+import androidx.compose.ui.unit.IntSize
+import androidx.compose.ui.unit.round
+
+/**
+ * Properties used to customize the behavior of a [Popup].
+ *
+ * @property focusable Whether the popup is focusable. When true, the popup will receive IME
+ * events and key presses, such as when the back button is pressed.
+ * @property dismissOnBackPress Whether the popup can be dismissed by pressing the back button
+ * on Android or escape key on desktop.
+ * If true, pressing the back button will call onDismissRequest. Note that [focusable] must be
+ * set to true in order to receive key events such as the back button - if the popup is not
+ * focusable then this property does nothing.
+ * @property dismissOnClickOutside Whether the popup can be dismissed by clicking outside the
+ * popup's bounds. If true, clicking outside the popup will call onDismissRequest.
+ * @property clippingEnabled Whether to allow the popup window to extend beyond the bounds of the
+ * screen. By default, the window is clipped to the screen boundaries. Setting this to false will
+ * allow windows to be accurately positioned.
+ * The default value is true.
+ * @property usePlatformDefaultWidth Whether the width of the popup's content should be limited to
+ * the platform default, which is smaller than the screen width.
+ * @property usePlatformInsets Whether the width of the popup's content should be limited by
+ * platform insets.
+ */
+@Immutable
+actual class PopupProperties @ExperimentalComposeUiApi constructor(
+    actual val focusable: Boolean = false,
+    actual val dismissOnBackPress: Boolean = true,
+    actual val dismissOnClickOutside: Boolean = true,
+    actual val clippingEnabled: Boolean = true,
+    val usePlatformDefaultWidth: Boolean = false,
+    val usePlatformInsets: Boolean = true,
+) {
+    // Constructor with all non-experimental arguments.
+    @OptIn(ExperimentalComposeUiApi::class)
+    actual constructor(
+        focusable: Boolean,
+        dismissOnBackPress: Boolean,
+        dismissOnClickOutside: Boolean,
+        clippingEnabled: Boolean,
+    ) : this(
+        focusable = focusable,
+        dismissOnBackPress = dismissOnBackPress,
+        dismissOnClickOutside = dismissOnClickOutside,
+        clippingEnabled = clippingEnabled,
+        usePlatformDefaultWidth = false,
+        usePlatformInsets = true,
+    )
+
+    override fun equals(other: Any?): Boolean {
+        if (this === other) return true
+        if (other !is PopupProperties) return false
+
+        if (focusable != other.focusable) return false
+        if (dismissOnBackPress != other.dismissOnBackPress) return false
+        if (dismissOnClickOutside != other.dismissOnClickOutside) return false
+        if (clippingEnabled != other.clippingEnabled) return false
+        if (usePlatformDefaultWidth != other.usePlatformDefaultWidth) return false
+        if (usePlatformInsets != other.usePlatformInsets) return false
+
+        return true
+    }
+
+    override fun hashCode(): Int {
+        var result = focusable.hashCode()
+        result = 31 * result + dismissOnBackPress.hashCode()
+        result = 31 * result + dismissOnClickOutside.hashCode()
+        result = 31 * result + clippingEnabled.hashCode()
+        result = 31 * result + usePlatformDefaultWidth.hashCode()
+        result = 31 * result + usePlatformInsets.hashCode()
+        return result
+    }
+}
+
+/**
+ * Opens a popup with the given content.
+ *
+ * The popup is positioned relative to its parent, using the [alignment] and [offset].
+ * The popup is visible as long as it is part of the composition hierarchy.
+ *
+ * @sample androidx.compose.ui.samples.PopupSample
+ *
+ * @param alignment The alignment relative to the parent.
+ * @param offset An offset from the original aligned position of the popup. Offset respects the
+ * Ltr/Rtl context, thus in Ltr it will be added to the original aligned position and in Rtl it
+ * will be subtracted from it.
+ * @param focusable Indicates if the popup can grab the focus.
+ * @param onDismissRequest Executes when the user clicks outside of the popup.
+ * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
+ * Return true to stop propagation of this event. If you return false, the key event will be
+ * sent to this [onPreviewKeyEvent]'s child. If none of the children consume the event,
+ * it will be sent back up to the root using the onKeyEvent callback.
+ * @param onKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. While implementing this callback, return true to stop propagation of this event.
+ * If you return false, the key event will be sent to this [onKeyEvent]'s parent.
+ * @param content The content to be displayed inside the popup.
+ */
+@Deprecated(
+    "Replaced by Popup with properties parameter",
+    ReplaceWith("Popup(alignment, offset, onDismissRequest, " +
+        "androidx.compose.ui.window.PopupProperties(focusable = focusable), " +
+        "onPreviewKeyEvent, onKeyEvent, content)")
+)
+@Composable
+fun Popup(
+    alignment: Alignment = Alignment.TopStart,
+    offset: IntOffset = IntOffset(0, 0),
+    focusable: Boolean = false,
+    onDismissRequest: (() -> Unit)? = null,
+    onPreviewKeyEvent: ((KeyEvent) -> Boolean) = { false },
+    onKeyEvent: ((KeyEvent) -> Boolean) = { false },
+    content: @Composable () -> Unit
+) = Popup(
+    alignment = alignment,
+    offset = offset,
+    onDismissRequest = onDismissRequest,
+    properties = PopupProperties(
+        focusable = focusable,
+        dismissOnBackPress = true,
+        dismissOnClickOutside = focusable
+
+    ),
+    onPreviewKeyEvent = onPreviewKeyEvent,
+    onKeyEvent = onKeyEvent,
+    content = content
+)
+
+/**
+ * Opens a popup with the given content.
+ *
+ * The popup is positioned using a custom [popupPositionProvider].
+ *
+ * @sample androidx.compose.ui.samples.PopupSample
+ *
+ * @param popupPositionProvider Provides the screen position of the popup.
+ * @param onDismissRequest Executes when the user clicks outside of the popup.
+ * @param focusable Indicates if the popup can grab the focus.
+ * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
+ * Return true to stop propagation of this event. If you return false, the key event will be
+ * sent to this [onPreviewKeyEvent]'s child. If none of the children consume the event,
+ * it will be sent back up to the root using the onKeyEvent callback.
+ * @param onKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. While implementing this callback, return true to stop propagation of this event.
+ * If you return false, the key event will be sent to this [onKeyEvent]'s parent.
+ * @param content The content to be displayed inside the popup.
+ */
+@Deprecated(
+    "Replaced by Popup with properties parameter",
+    ReplaceWith("Popup(popupPositionProvider, onDismissRequest, " +
+        "androidx.compose.ui.window.PopupProperties(focusable = focusable), " +
+        "onPreviewKeyEvent, onKeyEvent, content)")
+)
+@Composable
+fun Popup(
+    popupPositionProvider: PopupPositionProvider,
+    onDismissRequest: (() -> Unit)? = null,
+    onPreviewKeyEvent: ((KeyEvent) -> Boolean) = { false },
+    onKeyEvent: ((KeyEvent) -> Boolean) = { false },
+    focusable: Boolean = false,
+    content: @Composable () -> Unit
+) = Popup(
+    popupPositionProvider = popupPositionProvider,
+    onDismissRequest = onDismissRequest,
+    properties = PopupProperties(
+        focusable = focusable,
+        dismissOnBackPress = true,
+        dismissOnClickOutside = focusable
+
+    ),
+    onPreviewKeyEvent = onPreviewKeyEvent,
+    onKeyEvent = onKeyEvent,
+    content = content
+)
+
+/**
+ * Opens a popup with the given content.
+ *
+ * A popup is a floating container that appears on top of the current activity.
+ * It is especially useful for non-modal UI surfaces that remain hidden until they
+ * are needed, for example floating menus like Cut/Copy/Paste.
+ *
+ * The popup is positioned relative to its parent, using the [alignment] and [offset].
+ * The popup is visible as long as it is part of the composition hierarchy.
+ *
+ * @sample androidx.compose.ui.samples.PopupSample
+ *
+ * @param alignment The alignment relative to the parent.
+ * @param offset An offset from the original aligned position of the popup. Offset respects the
+ * Ltr/Rtl context, thus in Ltr it will be added to the original aligned position and in Rtl it
+ * will be subtracted from it.
+ * @param onDismissRequest Executes when the user clicks outside of the popup.
+ * @param properties [PopupProperties] for further customization of this popup's behavior.
+ * @param content The content to be displayed inside the popup.
+ */
+@Composable
+actual fun Popup(
+    alignment: Alignment,
+    offset: IntOffset,
+    onDismissRequest: (() -> Unit)?,
+    properties: PopupProperties,
+    content: @Composable () -> Unit
+): Unit = Popup(
+    alignment = alignment,
+    offset = offset,
+    onDismissRequest = onDismissRequest,
+    properties = properties,
+    onPreviewKeyEvent = null,
+    onKeyEvent = null,
+    content = content
+)
+
+/**
+ * Opens a popup with the given content.
+ *
+ * The popup is positioned using a custom [popupPositionProvider].
+ *
+ * @sample androidx.compose.ui.samples.PopupSample
+ *
+ * @param popupPositionProvider Provides the screen position of the popup.
+ * @param onDismissRequest Executes when the user clicks outside of the popup.
+ * @param properties [PopupProperties] for further customization of this popup's behavior.
+ * @param content The content to be displayed inside the popup.
+ */
+@Composable
+actual fun Popup(
+    popupPositionProvider: PopupPositionProvider,
+    onDismissRequest: (() -> Unit)?,
+    properties: PopupProperties,
+    content: @Composable () -> Unit
+): Unit = Popup(
+    popupPositionProvider = popupPositionProvider,
+    onDismissRequest = onDismissRequest,
+    properties = properties,
+    onPreviewKeyEvent = null,
+    onKeyEvent = null,
+    content = content
+)
+
+/**
+ * Opens a popup with the given content.
+ *
+ * A popup is a floating container that appears on top of the current activity.
+ * It is especially useful for non-modal UI surfaces that remain hidden until they
+ * are needed, for example floating menus like Cut/Copy/Paste.
+ *
+ * The popup is positioned relative to its parent, using the [alignment] and [offset].
+ * The popup is visible as long as it is part of the composition hierarchy.
+ *
+ * @sample androidx.compose.ui.samples.PopupSample
+ *
+ * @param alignment The alignment relative to the parent.
+ * @param offset An offset from the original aligned position of the popup. Offset respects the
+ * Ltr/Rtl context, thus in Ltr it will be added to the original aligned position and in Rtl it
+ * will be subtracted from it.
+ * @param onDismissRequest Executes when the user clicks outside of the popup.
+ * @param properties [PopupProperties] for further customization of this popup's behavior.
+ * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
+ * Return true to stop propagation of this event. If you return false, the key event will be
+ * sent to this [onPreviewKeyEvent]'s child. If none of the children consume the event,
+ * it will be sent back up to the root using the onKeyEvent callback.
+ * @param onKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. While implementing this callback, return true to stop propagation of this event.
+ * If you return false, the key event will be sent to this [onKeyEvent]'s parent.
+ * @param content The content to be displayed inside the popup.
+ */
+@Composable
+fun Popup(
+    alignment: Alignment = Alignment.TopStart,
+    offset: IntOffset = IntOffset(0, 0),
+    onDismissRequest: (() -> Unit)? = null,
+    properties: PopupProperties = PopupProperties(),
+    onPreviewKeyEvent: ((KeyEvent) -> Boolean)? = null,
+    onKeyEvent: ((KeyEvent) -> Boolean)? = null,
+    content: @Composable () -> Unit
+) {
+    val popupPositioner = remember(alignment, offset) {
+        AlignmentOffsetPositionProvider(alignment, offset)
+    }
+    Popup(
+        popupPositionProvider = popupPositioner,
+        onDismissRequest = onDismissRequest,
+        properties = properties,
+        onPreviewKeyEvent = onPreviewKeyEvent,
+        onKeyEvent = onKeyEvent,
+        content = content
+    )
+}
+
+/**
+ * Opens a popup with the given content.
+ *
+ * The popup is positioned using a custom [popupPositionProvider].
+ *
+ * @sample androidx.compose.ui.samples.PopupSample
+ *
+ * @param popupPositionProvider Provides the screen position of the popup.
+ * @param onDismissRequest Executes when the user clicks outside of the popup.
+ * @param properties [PopupProperties] for further customization of this popup's behavior.
+ * @param onPreviewKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. It gives ancestors of a focused component the chance to intercept a [KeyEvent].
+ * Return true to stop propagation of this event. If you return false, the key event will be
+ * sent to this [onPreviewKeyEvent]'s child. If none of the children consume the event,
+ * it will be sent back up to the root using the onKeyEvent callback.
+ * @param onKeyEvent This callback is invoked when the user interacts with the hardware
+ * keyboard. While implementing this callback, return true to stop propagation of this event.
+ * If you return false, the key event will be sent to this [onKeyEvent]'s parent.
+ * @param content The content to be displayed inside the popup.
+ */
+@Composable
+fun Popup(
+    popupPositionProvider: PopupPositionProvider,
+    onDismissRequest: (() -> Unit)? = null,
+    properties: PopupProperties = PopupProperties(),
+    onPreviewKeyEvent: ((KeyEvent) -> Boolean)? = null,
+    onKeyEvent: ((KeyEvent) -> Boolean)? = null,
+    content: @Composable () -> Unit
+) {
+    val currentOnDismissRequest by rememberUpdatedState(onDismissRequest)
+    val currentOnKeyEvent by rememberUpdatedState(onKeyEvent)
+
+    val overriddenOnKeyEvent = if (properties.dismissOnBackPress && onDismissRequest != null) {
+        // No need to remember this lambda, as it doesn't capture any values that can change.
+        { event: KeyEvent ->
+            val consumed = currentOnKeyEvent?.invoke(event) ?: false
+            if (!consumed && event.isDismissRequest()) {
+                currentOnDismissRequest?.invoke()
+                true
+            } else {
+                consumed
+            }
+        }
+    } else {
+        onKeyEvent
+    }
+    PopupLayout(
+        popupPositionProvider = popupPositionProvider,
+        focusable = properties.focusable,
+        onDismissRequest = onDismissRequest,
+        modifier = Modifier.semantics { popup() },
+        onPreviewKeyEvent = onPreviewKeyEvent,
+        onKeyEvent = overriddenOnKeyEvent,
+        content = content,
+    )
+}
+
+@Composable
+internal fun PopupLayout(
+    popupPositionProvider: PopupPositionProvider,
+    focusable: Boolean,
+    onDismissRequest: (() -> Unit)?,
+    modifier: Modifier = Modifier,
+    onPreviewKeyEvent: ((KeyEvent) -> Boolean)?,
+    onKeyEvent: ((KeyEvent) -> Boolean)?,
+    content: @Composable () -> Unit
+) {
+    // TODO: Upstream ComposeScene refactor
+    val scene = LocalComposeScene.current
+    val density = LocalDensity.current
+
+    var parentBounds by remember { mutableStateOf(IntRect.Zero) }
+    var popupBounds by remember { mutableStateOf(IntRect.Zero) }
+
+    // getting parent bounds
+    Layout(
+        content = {},
+        modifier = Modifier.onGloballyPositioned { childCoordinates ->
+            val coordinates = childCoordinates.parentCoordinates!!
+            parentBounds = IntRect(
+                coordinates.localToWindow(Offset.Zero).round(),
+                coordinates.size
+            )
+        },
+        measurePolicy = { _, _ ->
+            layout(0, 0) {}
+        }
+    )
+
+    val parentComposition = rememberCompositionContext()
+    val (owner, composition) = remember {
+        val owner = SkiaBasedOwner(
+            platformInputService = scene.platformInputService,
+            component = scene.component,
+            density = density,
+            coroutineContext = parentComposition.effectCoroutineContext,
+            isPopup = true,
+            isFocusable = focusable,
+            onDismissRequest = onDismissRequest,
+            onPreviewKeyEvent = onPreviewKeyEvent ?: { false },
+            onKeyEvent = onKeyEvent ?: { false }
+        )
+        scene.attach(owner)
+        val composition = owner.setContent(parent = parentComposition) {
+            Layout(
+                content = content,
+                modifier = modifier,
+                measurePolicy = { measurables, constraints ->
+                    val width = constraints.maxWidth
+                    val height = constraints.maxHeight
+
+                    layout(constraints.maxWidth, constraints.maxHeight) {
+                        measurables.forEach {
+                            val placeable = it.measure(constraints)
+                            val position = popupPositionProvider.calculatePosition(
+                                anchorBounds = parentBounds,
+                                windowSize = IntSize(width, height),
+                                layoutDirection = layoutDirection,
+                                popupContentSize = IntSize(placeable.width, placeable.height)
+                            )
+
+                            popupBounds = IntRect(
+                                position,
+                                IntSize(placeable.width, placeable.height)
+                            )
+                            owner.bounds = popupBounds
+                            placeable.place(position.x, position.y)
+                        }
+                    }
+                }
+            )
+        }
+        owner to composition
+    }
+    owner.density = density
+    DisposableEffect(Unit) {
+        onDispose {
+            scene.detach(owner)
+            composition.dispose()
+            owner.dispose()
+        }
+    }
+}
+
+private fun KeyEvent.isDismissRequest() =
+    type == KeyEventType.KeyDown && key == Key.Escape
diff --git a/coordinatorlayout/coordinatorlayout/api/1.2.0-beta02.txt b/coordinatorlayout/coordinatorlayout/api/1.2.0-beta02.txt
index b334abc..5756cab 100644
--- a/coordinatorlayout/coordinatorlayout/api/1.2.0-beta02.txt
+++ b/coordinatorlayout/coordinatorlayout/api/1.2.0-beta02.txt
@@ -72,14 +72,14 @@
   }
 
   @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public static @interface CoordinatorLayout.DefaultBehavior {
-    method @Deprecated public abstract Class<? extends androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior> value();
+    method @Deprecated public abstract Class<? extends androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior!> value();
   }
 
   public static class CoordinatorLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public CoordinatorLayout.LayoutParams(int, int);
-    ctor public CoordinatorLayout.LayoutParams(androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams!);
-    ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
+    ctor public CoordinatorLayout.LayoutParams(androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams!);
+    ctor public CoordinatorLayout.LayoutParams(int, int);
     method @IdRes public int getAnchorId();
     method public androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior? getBehavior();
     method public void setAnchorId(@IdRes int);
diff --git a/coordinatorlayout/coordinatorlayout/api/restricted_1.2.0-beta02.txt b/coordinatorlayout/coordinatorlayout/api/restricted_1.2.0-beta02.txt
index 1c5495c..8549bfd 100644
--- a/coordinatorlayout/coordinatorlayout/api/restricted_1.2.0-beta02.txt
+++ b/coordinatorlayout/coordinatorlayout/api/restricted_1.2.0-beta02.txt
@@ -73,17 +73,17 @@
   }
 
   @Deprecated @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME) public static @interface CoordinatorLayout.DefaultBehavior {
-    method @Deprecated public abstract Class<? extends androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior> value();
+    method @Deprecated public abstract Class<? extends androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior!> value();
   }
 
   @IntDef({0x0, 0x1, 0x2}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface CoordinatorLayout.DispatchChangeEvent {
   }
 
   public static class CoordinatorLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public CoordinatorLayout.LayoutParams(int, int);
-    ctor public CoordinatorLayout.LayoutParams(androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams!);
-    ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public CoordinatorLayout.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
+    ctor public CoordinatorLayout.LayoutParams(androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams!);
+    ctor public CoordinatorLayout.LayoutParams(int, int);
     method @IdRes public int getAnchorId();
     method public androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior? getBehavior();
     method public void setAnchorId(@IdRes int);
diff --git a/core/core-animation/api/1.0.0-beta02.txt b/core/core-animation/api/1.0.0-beta02.txt
index 71e774e..571b34c 100644
--- a/core/core-animation/api/1.0.0-beta02.txt
+++ b/core/core-animation/api/1.0.0-beta02.txt
@@ -122,12 +122,12 @@
     method @FloatRange(to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
   }
 
-  public final class ArgbEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer> {
+  public final class ArgbEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer!> {
     method public Integer evaluate(float, Integer, Integer);
     method public static androidx.core.animation.ArgbEvaluator getInstance();
   }
 
-  public abstract class BidirectionalTypeConverter<T, V> extends androidx.core.animation.TypeConverter<T,V> {
+  public abstract class BidirectionalTypeConverter<T, V> extends androidx.core.animation.TypeConverter<T!,V!> {
     ctor public BidirectionalTypeConverter(Class<T!>, Class<V!>);
     method public abstract T convertBack(V);
     method public androidx.core.animation.BidirectionalTypeConverter<V!,T!> invert();
@@ -151,36 +151,36 @@
     method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
   }
 
-  public final class FloatArrayEvaluator implements androidx.core.animation.TypeEvaluator<float[]> {
+  public final class FloatArrayEvaluator implements androidx.core.animation.TypeEvaluator<float[]!> {
     ctor public FloatArrayEvaluator();
     ctor public FloatArrayEvaluator(float[]?);
     method public float[] evaluate(float, float[], float[]);
   }
 
-  public final class FloatEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Float> {
+  public final class FloatEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Float!> {
     method public Float evaluate(float, Float, Float);
     method public static androidx.core.animation.FloatEvaluator getInstance();
   }
 
-  public abstract class FloatProperty<T> extends android.util.Property<T,java.lang.Float> {
+  public abstract class FloatProperty<T> extends android.util.Property<T!,java.lang.Float!> {
     ctor public FloatProperty();
     ctor public FloatProperty(String);
     method public final void set(T, Float);
     method public abstract void setValue(T, float);
   }
 
-  public class IntArrayEvaluator implements androidx.core.animation.TypeEvaluator<int[]> {
+  public class IntArrayEvaluator implements androidx.core.animation.TypeEvaluator<int[]!> {
     ctor public IntArrayEvaluator();
     ctor public IntArrayEvaluator(int[]?);
     method public int[] evaluate(float, int[], int[]);
   }
 
-  public class IntEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer> {
+  public class IntEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer!> {
     method public Integer evaluate(float, Integer, Integer);
     method public static androidx.core.animation.IntEvaluator getInstance();
   }
 
-  public abstract class IntProperty<T> extends android.util.Property<T,java.lang.Integer> {
+  public abstract class IntProperty<T> extends android.util.Property<T!,java.lang.Integer!> {
     ctor public IntProperty();
     ctor public IntProperty(String);
     method public final void set(T, Integer);
@@ -196,7 +196,7 @@
     method public abstract androidx.core.animation.Keyframe<T!> clone();
     method @FloatRange(from=0, to=1) public float getFraction();
     method public androidx.core.animation.Interpolator? getInterpolator();
-    method public Class<?> getType();
+    method public Class<? extends java.lang.Object!> getType();
     method public abstract T? getValue();
     method public boolean hasValue();
     method public static androidx.core.animation.Keyframe<java.lang.Float!> ofFloat(@FloatRange(from=0, to=1) float);
@@ -237,7 +237,7 @@
     method public static androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, android.graphics.Path);
     method @java.lang.SafeVarargs public static <T> androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, androidx.core.animation.TypeConverter<T!,int[]!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
     method public static androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, int[]![]);
-    method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeConverter<android.graphics.PointF!,?>?, android.graphics.Path);
+    method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeConverter<android.graphics.PointF!,? extends java.lang.Object!>?, android.graphics.Path);
     method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeEvaluator, java.lang.Object!...);
     method @java.lang.SafeVarargs public static <T, V, P> androidx.core.animation.ObjectAnimator ofObject(T, android.util.Property<T!,P!>, androidx.core.animation.TypeConverter<V!,P!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
     method public static <T, V> androidx.core.animation.ObjectAnimator ofObject(T, android.util.Property<T!,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
@@ -265,7 +265,7 @@
     method public float getInterpolation(@FloatRange(from=0, to=1) float);
   }
 
-  public class PointFEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.PointF> {
+  public class PointFEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.PointF!> {
     ctor public PointFEvaluator();
     ctor public PointFEvaluator(android.graphics.PointF);
     method public android.graphics.PointF evaluate(float, android.graphics.PointF, android.graphics.PointF);
@@ -274,9 +274,9 @@
   public class PropertyValuesHolder implements java.lang.Cloneable {
     method public androidx.core.animation.PropertyValuesHolder clone();
     method public String getPropertyName();
-    method public static androidx.core.animation.PropertyValuesHolder ofFloat(android.util.Property<?,java.lang.Float!>, float...);
+    method public static androidx.core.animation.PropertyValuesHolder ofFloat(android.util.Property<? extends java.lang.Object!,java.lang.Float!>, float...);
     method public static androidx.core.animation.PropertyValuesHolder ofFloat(String, float...);
-    method public static androidx.core.animation.PropertyValuesHolder ofInt(android.util.Property<?,java.lang.Integer!>, int...);
+    method public static androidx.core.animation.PropertyValuesHolder ofInt(android.util.Property<? extends java.lang.Object!,java.lang.Integer!>, int...);
     method public static androidx.core.animation.PropertyValuesHolder ofInt(String, int...);
     method @java.lang.SafeVarargs public static androidx.core.animation.PropertyValuesHolder ofKeyframe(android.util.Property, androidx.core.animation.Keyframe!...);
     method @java.lang.SafeVarargs public static androidx.core.animation.PropertyValuesHolder ofKeyframe(String, androidx.core.animation.Keyframe!...);
@@ -289,9 +289,9 @@
     method @java.lang.SafeVarargs public static <V> androidx.core.animation.PropertyValuesHolder ofMultiInt(String, androidx.core.animation.TypeConverter<V!,int[]!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
     method public static androidx.core.animation.PropertyValuesHolder ofMultiInt(String, int[]![]);
     method @java.lang.SafeVarargs public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property, androidx.core.animation.TypeEvaluator<V!>, V!...);
-    method public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<?,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T, V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<?,V!>, androidx.core.animation.TypeConverter<T!,V!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
-    method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeConverter<android.graphics.PointF!,?>?, android.graphics.Path);
+    method public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<? extends java.lang.Object!,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
+    method @java.lang.SafeVarargs public static <T, V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<? extends java.lang.Object!,V!>, androidx.core.animation.TypeConverter<T!,V!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
+    method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeConverter<android.graphics.PointF!,? extends java.lang.Object!>?, android.graphics.Path);
     method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeEvaluator, java.lang.Object!...);
     method public void setConverter(androidx.core.animation.TypeConverter?);
     method public void setEvaluator(androidx.core.animation.TypeEvaluator);
@@ -303,7 +303,7 @@
     method public void setPropertyName(String);
   }
 
-  public class RectEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.Rect> {
+  public class RectEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.Rect!> {
     ctor public RectEvaluator();
     ctor public RectEvaluator(android.graphics.Rect);
     method public android.graphics.Rect evaluate(float, android.graphics.Rect, android.graphics.Rect);
diff --git a/core/core-animation/api/restricted_1.0.0-beta02.txt b/core/core-animation/api/restricted_1.0.0-beta02.txt
index 71e774e..571b34c 100644
--- a/core/core-animation/api/restricted_1.0.0-beta02.txt
+++ b/core/core-animation/api/restricted_1.0.0-beta02.txt
@@ -122,12 +122,12 @@
     method @FloatRange(to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
   }
 
-  public final class ArgbEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer> {
+  public final class ArgbEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer!> {
     method public Integer evaluate(float, Integer, Integer);
     method public static androidx.core.animation.ArgbEvaluator getInstance();
   }
 
-  public abstract class BidirectionalTypeConverter<T, V> extends androidx.core.animation.TypeConverter<T,V> {
+  public abstract class BidirectionalTypeConverter<T, V> extends androidx.core.animation.TypeConverter<T!,V!> {
     ctor public BidirectionalTypeConverter(Class<T!>, Class<V!>);
     method public abstract T convertBack(V);
     method public androidx.core.animation.BidirectionalTypeConverter<V!,T!> invert();
@@ -151,36 +151,36 @@
     method @FloatRange(from=0, to=1) public float getInterpolation(@FloatRange(from=0, to=1) float);
   }
 
-  public final class FloatArrayEvaluator implements androidx.core.animation.TypeEvaluator<float[]> {
+  public final class FloatArrayEvaluator implements androidx.core.animation.TypeEvaluator<float[]!> {
     ctor public FloatArrayEvaluator();
     ctor public FloatArrayEvaluator(float[]?);
     method public float[] evaluate(float, float[], float[]);
   }
 
-  public final class FloatEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Float> {
+  public final class FloatEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Float!> {
     method public Float evaluate(float, Float, Float);
     method public static androidx.core.animation.FloatEvaluator getInstance();
   }
 
-  public abstract class FloatProperty<T> extends android.util.Property<T,java.lang.Float> {
+  public abstract class FloatProperty<T> extends android.util.Property<T!,java.lang.Float!> {
     ctor public FloatProperty();
     ctor public FloatProperty(String);
     method public final void set(T, Float);
     method public abstract void setValue(T, float);
   }
 
-  public class IntArrayEvaluator implements androidx.core.animation.TypeEvaluator<int[]> {
+  public class IntArrayEvaluator implements androidx.core.animation.TypeEvaluator<int[]!> {
     ctor public IntArrayEvaluator();
     ctor public IntArrayEvaluator(int[]?);
     method public int[] evaluate(float, int[], int[]);
   }
 
-  public class IntEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer> {
+  public class IntEvaluator implements androidx.core.animation.TypeEvaluator<java.lang.Integer!> {
     method public Integer evaluate(float, Integer, Integer);
     method public static androidx.core.animation.IntEvaluator getInstance();
   }
 
-  public abstract class IntProperty<T> extends android.util.Property<T,java.lang.Integer> {
+  public abstract class IntProperty<T> extends android.util.Property<T!,java.lang.Integer!> {
     ctor public IntProperty();
     ctor public IntProperty(String);
     method public final void set(T, Integer);
@@ -196,7 +196,7 @@
     method public abstract androidx.core.animation.Keyframe<T!> clone();
     method @FloatRange(from=0, to=1) public float getFraction();
     method public androidx.core.animation.Interpolator? getInterpolator();
-    method public Class<?> getType();
+    method public Class<? extends java.lang.Object!> getType();
     method public abstract T? getValue();
     method public boolean hasValue();
     method public static androidx.core.animation.Keyframe<java.lang.Float!> ofFloat(@FloatRange(from=0, to=1) float);
@@ -237,7 +237,7 @@
     method public static androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, android.graphics.Path);
     method @java.lang.SafeVarargs public static <T> androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, androidx.core.animation.TypeConverter<T!,int[]!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
     method public static androidx.core.animation.ObjectAnimator ofMultiInt(Object, String, int[]![]);
-    method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeConverter<android.graphics.PointF!,?>?, android.graphics.Path);
+    method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeConverter<android.graphics.PointF!,? extends java.lang.Object!>?, android.graphics.Path);
     method public static androidx.core.animation.ObjectAnimator ofObject(Object, String, androidx.core.animation.TypeEvaluator, java.lang.Object!...);
     method @java.lang.SafeVarargs public static <T, V, P> androidx.core.animation.ObjectAnimator ofObject(T, android.util.Property<T!,P!>, androidx.core.animation.TypeConverter<V!,P!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
     method public static <T, V> androidx.core.animation.ObjectAnimator ofObject(T, android.util.Property<T!,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
@@ -265,7 +265,7 @@
     method public float getInterpolation(@FloatRange(from=0, to=1) float);
   }
 
-  public class PointFEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.PointF> {
+  public class PointFEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.PointF!> {
     ctor public PointFEvaluator();
     ctor public PointFEvaluator(android.graphics.PointF);
     method public android.graphics.PointF evaluate(float, android.graphics.PointF, android.graphics.PointF);
@@ -274,9 +274,9 @@
   public class PropertyValuesHolder implements java.lang.Cloneable {
     method public androidx.core.animation.PropertyValuesHolder clone();
     method public String getPropertyName();
-    method public static androidx.core.animation.PropertyValuesHolder ofFloat(android.util.Property<?,java.lang.Float!>, float...);
+    method public static androidx.core.animation.PropertyValuesHolder ofFloat(android.util.Property<? extends java.lang.Object!,java.lang.Float!>, float...);
     method public static androidx.core.animation.PropertyValuesHolder ofFloat(String, float...);
-    method public static androidx.core.animation.PropertyValuesHolder ofInt(android.util.Property<?,java.lang.Integer!>, int...);
+    method public static androidx.core.animation.PropertyValuesHolder ofInt(android.util.Property<? extends java.lang.Object!,java.lang.Integer!>, int...);
     method public static androidx.core.animation.PropertyValuesHolder ofInt(String, int...);
     method @java.lang.SafeVarargs public static androidx.core.animation.PropertyValuesHolder ofKeyframe(android.util.Property, androidx.core.animation.Keyframe!...);
     method @java.lang.SafeVarargs public static androidx.core.animation.PropertyValuesHolder ofKeyframe(String, androidx.core.animation.Keyframe!...);
@@ -289,9 +289,9 @@
     method @java.lang.SafeVarargs public static <V> androidx.core.animation.PropertyValuesHolder ofMultiInt(String, androidx.core.animation.TypeConverter<V!,int[]!>, androidx.core.animation.TypeEvaluator<V!>, V!...);
     method public static androidx.core.animation.PropertyValuesHolder ofMultiInt(String, int[]![]);
     method @java.lang.SafeVarargs public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property, androidx.core.animation.TypeEvaluator<V!>, V!...);
-    method public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<?,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
-    method @java.lang.SafeVarargs public static <T, V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<?,V!>, androidx.core.animation.TypeConverter<T!,V!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
-    method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeConverter<android.graphics.PointF!,?>?, android.graphics.Path);
+    method public static <V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<? extends java.lang.Object!,V!>, androidx.core.animation.TypeConverter<android.graphics.PointF!,V!>?, android.graphics.Path);
+    method @java.lang.SafeVarargs public static <T, V> androidx.core.animation.PropertyValuesHolder ofObject(android.util.Property<? extends java.lang.Object!,V!>, androidx.core.animation.TypeConverter<T!,V!>, androidx.core.animation.TypeEvaluator<T!>, T!...);
+    method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeConverter<android.graphics.PointF!,? extends java.lang.Object!>?, android.graphics.Path);
     method public static androidx.core.animation.PropertyValuesHolder ofObject(String, androidx.core.animation.TypeEvaluator, java.lang.Object!...);
     method public void setConverter(androidx.core.animation.TypeConverter?);
     method public void setEvaluator(androidx.core.animation.TypeEvaluator);
@@ -303,7 +303,7 @@
     method public void setPropertyName(String);
   }
 
-  public class RectEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.Rect> {
+  public class RectEvaluator implements androidx.core.animation.TypeEvaluator<android.graphics.Rect!> {
     ctor public RectEvaluator();
     ctor public RectEvaluator(android.graphics.Rect);
     method public android.graphics.Rect evaluate(float, android.graphics.Rect, android.graphics.Rect);
diff --git a/core/core/api/1.13.0-beta01.txt b/core/core/api/1.13.0-beta01.txt
index 57c66b5..4940d52 100644
--- a/core/core/api/1.13.0-beta01.txt
+++ b/core/core/api/1.13.0-beta01.txt
@@ -170,7 +170,7 @@
   @Deprecated public abstract class JobIntentService extends android.app.Service {
     ctor @Deprecated public JobIntentService();
     method @Deprecated public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
-    method @Deprecated public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+    method @Deprecated public static void enqueueWork(android.content.Context, Class<? extends java.lang.Object!>, int, android.content.Intent);
     method @Deprecated public boolean isStopped();
     method @Deprecated public android.os.IBinder! onBind(android.content.Intent);
     method @Deprecated protected abstract void onHandleWork(android.content.Intent);
@@ -195,7 +195,7 @@
   public final class NavUtils {
     method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
     method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<? extends java.lang.Object!>) throws android.content.pm.PackageManager.NameNotFoundException;
     method public static String? getParentActivityName(android.app.Activity);
     method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
     method public static void navigateUpFromSameTask(android.app.Activity);
@@ -1065,7 +1065,7 @@
     method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
     method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
     method public androidx.core.app.TaskStackBuilder addParentStack(android.content.ComponentName);
-    method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
+    method public androidx.core.app.TaskStackBuilder addParentStack(Class<? extends java.lang.Object!>);
     method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
     method public android.content.Intent? editIntentAt(int);
     method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
@@ -1116,7 +1116,7 @@
     method public static java.io.File![] getObbDirs(android.content.Context);
     method public static String getString(android.content.Context, int);
     method public static <T> T? getSystemService(android.content.Context, Class<T!>);
-    method public static String? getSystemServiceName(android.content.Context, Class<?>);
+    method public static String? getSystemServiceName(android.content.Context, Class<? extends java.lang.Object!>);
     method public static boolean isDeviceProtectedStorage(android.content.Context);
     method public static android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, int);
     method public static android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, String?, android.os.Handler?, int);
@@ -1179,7 +1179,7 @@
     method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
     method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
     method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
-    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<? extends java.lang.Object!>);
     method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
     method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
     method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
diff --git a/core/core/api/restricted_1.13.0-beta01.txt b/core/core/api/restricted_1.13.0-beta01.txt
index b090f80..85e1239 100644
--- a/core/core/api/restricted_1.13.0-beta01.txt
+++ b/core/core/api/restricted_1.13.0-beta01.txt
@@ -218,7 +218,7 @@
   @Deprecated public abstract class JobIntentService extends android.app.Service {
     ctor @Deprecated public JobIntentService();
     method @Deprecated public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
-    method @Deprecated public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+    method @Deprecated public static void enqueueWork(android.content.Context, Class<? extends java.lang.Object!>, int, android.content.Intent);
     method @Deprecated public boolean isStopped();
     method @Deprecated public android.os.IBinder! onBind(android.content.Intent);
     method @Deprecated protected abstract void onHandleWork(android.content.Intent);
@@ -243,7 +243,7 @@
   public final class NavUtils {
     method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
     method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<? extends java.lang.Object!>) throws android.content.pm.PackageManager.NameNotFoundException;
     method public static String? getParentActivityName(android.app.Activity);
     method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
     method public static void navigateUpFromSameTask(android.app.Activity);
@@ -1188,7 +1188,7 @@
     method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
     method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
     method public androidx.core.app.TaskStackBuilder addParentStack(android.content.ComponentName);
-    method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
+    method public androidx.core.app.TaskStackBuilder addParentStack(Class<? extends java.lang.Object!>);
     method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
     method public android.content.Intent? editIntentAt(int);
     method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
@@ -1239,7 +1239,7 @@
     method public static java.io.File![] getObbDirs(android.content.Context);
     method public static String getString(android.content.Context, int);
     method public static <T> T? getSystemService(android.content.Context, Class<T!>);
-    method public static String? getSystemServiceName(android.content.Context, Class<?>);
+    method public static String? getSystemServiceName(android.content.Context, Class<? extends java.lang.Object!>);
     method public static boolean isDeviceProtectedStorage(android.content.Context);
     method public static android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, int);
     method public static android.content.Intent? registerReceiver(android.content.Context, android.content.BroadcastReceiver?, android.content.IntentFilter, String?, android.os.Handler?, int);
@@ -1302,7 +1302,7 @@
     method public androidx.core.content.IntentSanitizer.Builder allowData(androidx.core.util.Predicate<android.net.Uri!>);
     method public androidx.core.content.IntentSanitizer.Builder allowDataWithAuthority(String);
     method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, androidx.core.util.Predicate<java.lang.Object!>);
-    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<?>);
+    method public androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<? extends java.lang.Object!>);
     method public <T> androidx.core.content.IntentSanitizer.Builder allowExtra(String, Class<T!>, androidx.core.util.Predicate<T!>);
     method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(androidx.core.util.Predicate<android.net.Uri!>);
     method public androidx.core.content.IntentSanitizer.Builder allowExtraOutput(String);
@@ -1806,19 +1806,19 @@
     method public android.graphics.Typeface? createFromFontFamilyFilesResourceEntry(android.content.Context!, androidx.core.content.res.FontResourcesParserCompat.FontFamilyFilesResourceEntry!, android.content.res.Resources!, int);
     method public android.graphics.Typeface? createFromFontInfo(android.content.Context!, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![], int);
     method public android.graphics.Typeface? createFromResourcesFontFile(android.content.Context!, android.content.res.Resources!, int, String!, int);
-    method protected java.lang.reflect.Method! obtainAbortCreationMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainAddFontFromAssetManagerMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainAddFontFromBufferMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainCreateFromFamiliesWithDefaultMethod(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected Class<?>! obtainFontFamily() throws java.lang.ClassNotFoundException;
-    method protected java.lang.reflect.Constructor<?>! obtainFontFamilyCtor(Class<?>!) throws java.lang.NoSuchMethodException;
-    method protected java.lang.reflect.Method! obtainFreezeMethod(Class<?>!) throws java.lang.NoSuchMethodException;
+    method protected java.lang.reflect.Method! obtainAbortCreationMethod(Class<? extends java.lang.Object!>!) throws java.lang.NoSuchMethodException;
+    method protected java.lang.reflect.Method! obtainAddFontFromAssetManagerMethod(Class<? extends java.lang.Object!>!) throws java.lang.NoSuchMethodException;
+    method protected java.lang.reflect.Method! obtainAddFontFromBufferMethod(Class<? extends java.lang.Object!>!) throws java.lang.NoSuchMethodException;
+    method protected java.lang.reflect.Method! obtainCreateFromFamiliesWithDefaultMethod(Class<? extends java.lang.Object!>!) throws java.lang.NoSuchMethodException;
+    method protected Class<? extends java.lang.Object!>! obtainFontFamily() throws java.lang.ClassNotFoundException;
+    method protected java.lang.reflect.Constructor<? extends java.lang.Object!>! obtainFontFamilyCtor(Class<? extends java.lang.Object!>!) throws java.lang.NoSuchMethodException;
+    method protected java.lang.reflect.Method! obtainFreezeMethod(Class<? extends java.lang.Object!>!) throws java.lang.NoSuchMethodException;
     field protected final java.lang.reflect.Method! mAbortCreation;
     field protected final java.lang.reflect.Method! mAddFontFromAssetManager;
     field protected final java.lang.reflect.Method! mAddFontFromBuffer;
     field protected final java.lang.reflect.Method! mCreateFromFamiliesWithDefault;
-    field protected final Class<?>! mFontFamily;
-    field protected final java.lang.reflect.Constructor<?>! mFontFamilyCtor;
+    field protected final Class<? extends java.lang.Object!>! mFontFamily;
+    field protected final java.lang.reflect.Constructor<? extends java.lang.Object!>! mFontFamilyCtor;
     field protected final java.lang.reflect.Method! mFreeze;
   }
 
diff --git a/credentials/credentials/api/1.2.0-beta04.txt b/credentials/credentials/api/1.2.0-beta04.txt
index 8c9cf86..ba6930c 100644
--- a/credentials/credentials/api/1.2.0-beta04.txt
+++ b/credentials/credentials/api/1.2.0-beta04.txt
@@ -96,7 +96,7 @@
 
   @RequiresApi(16) public interface CredentialManager {
     method public default suspend Object? clearCredentialState(androidx.credentials.ClearCredentialStateRequest request, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method public void clearCredentialStateAsync(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public void clearCredentialStateAsync(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void?,androidx.credentials.exceptions.ClearCredentialException> callback);
     method public static androidx.credentials.CredentialManager create(android.content.Context context);
     method public default suspend Object? createCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.CreateCredentialResponse>);
     method public void createCredentialAsync(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
@@ -136,7 +136,7 @@
 
   public interface CredentialProvider {
     method public boolean isAvailableOnDevice();
-    method public void onClearCredential(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public void onClearCredential(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void?,androidx.credentials.exceptions.ClearCredentialException> callback);
     method public void onCreateCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
     method public void onGetCredential(android.content.Context context, androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
     method @RequiresApi(34) public default void onGetCredential(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
@@ -746,7 +746,7 @@
     method public final void onBeginGetCredential(android.service.credentials.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<android.service.credentials.BeginGetCredentialResponse,android.credentials.GetCredentialException> callback);
     method public abstract void onBeginGetCredentialRequest(androidx.credentials.provider.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<androidx.credentials.provider.BeginGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
     method public final void onClearCredentialState(android.service.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,android.credentials.ClearCredentialStateException> callback);
-    method public abstract void onClearCredentialStateRequest(androidx.credentials.provider.ProviderClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public abstract void onClearCredentialStateRequest(androidx.credentials.provider.ProviderClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void?,androidx.credentials.exceptions.ClearCredentialException> callback);
   }
 
   @RequiresApi(26) public final class CustomCredentialEntry extends androidx.credentials.provider.CredentialEntry {
diff --git a/credentials/credentials/api/restricted_1.2.0-beta04.txt b/credentials/credentials/api/restricted_1.2.0-beta04.txt
index 8c9cf86..ba6930c 100644
--- a/credentials/credentials/api/restricted_1.2.0-beta04.txt
+++ b/credentials/credentials/api/restricted_1.2.0-beta04.txt
@@ -96,7 +96,7 @@
 
   @RequiresApi(16) public interface CredentialManager {
     method public default suspend Object? clearCredentialState(androidx.credentials.ClearCredentialStateRequest request, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method public void clearCredentialStateAsync(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public void clearCredentialStateAsync(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void?,androidx.credentials.exceptions.ClearCredentialException> callback);
     method public static androidx.credentials.CredentialManager create(android.content.Context context);
     method public default suspend Object? createCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.CreateCredentialResponse>);
     method public void createCredentialAsync(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
@@ -136,7 +136,7 @@
 
   public interface CredentialProvider {
     method public boolean isAvailableOnDevice();
-    method public void onClearCredential(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public void onClearCredential(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void?,androidx.credentials.exceptions.ClearCredentialException> callback);
     method public void onCreateCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
     method public void onGetCredential(android.content.Context context, androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
     method @RequiresApi(34) public default void onGetCredential(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
@@ -746,7 +746,7 @@
     method public final void onBeginGetCredential(android.service.credentials.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<android.service.credentials.BeginGetCredentialResponse,android.credentials.GetCredentialException> callback);
     method public abstract void onBeginGetCredentialRequest(androidx.credentials.provider.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<androidx.credentials.provider.BeginGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
     method public final void onClearCredentialState(android.service.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,android.credentials.ClearCredentialStateException> callback);
-    method public abstract void onClearCredentialStateRequest(androidx.credentials.provider.ProviderClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public abstract void onClearCredentialStateRequest(androidx.credentials.provider.ProviderClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void?,androidx.credentials.exceptions.ClearCredentialException> callback);
   }
 
   @RequiresApi(26) public final class CustomCredentialEntry extends androidx.credentials.provider.CredentialEntry {
diff --git a/datastore/datastore-core/api/1.1.0-beta02.txt b/datastore/datastore-core/api/1.1.0-beta02.txt
index 2700ff7..7497295 100644
--- a/datastore/datastore-core/api/1.1.0-beta02.txt
+++ b/datastore/datastore-core/api/1.1.0-beta02.txt
@@ -21,7 +21,7 @@
 
   public interface DataStore<T> {
     method public kotlinx.coroutines.flow.Flow<T> getData();
-    method public suspend Object? updateData(kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super T>,?> transform, kotlin.coroutines.Continuation<? super T>);
+    method public suspend Object? updateData(kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super T>,? extends java.lang.Object?> transform, kotlin.coroutines.Continuation<? super T>);
     property public abstract kotlinx.coroutines.flow.Flow<T> data;
   }
 
@@ -43,8 +43,8 @@
     method public kotlinx.coroutines.flow.Flow<kotlin.Unit> getUpdateNotifications();
     method public suspend Object? getVersion(kotlin.coroutines.Continuation<? super java.lang.Integer>);
     method public suspend Object? incrementAndGetVersion(kotlin.coroutines.Continuation<? super java.lang.Integer>);
-    method public suspend <T> Object? lock(kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T>);
-    method public suspend <T> Object? tryLock(kotlin.jvm.functions.Function2<? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T>);
+    method public suspend <T> Object? lock(kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super T>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super T>);
+    method public suspend <T> Object? tryLock(kotlin.jvm.functions.Function2<? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super T>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super T>);
     property public abstract kotlinx.coroutines.flow.Flow<kotlin.Unit> updateNotifications;
   }
 
@@ -85,8 +85,8 @@
 
   public interface StorageConnection<T> extends androidx.datastore.core.Closeable {
     method public androidx.datastore.core.InterProcessCoordinator getCoordinator();
-    method public suspend <R> Object? readScope(kotlin.jvm.functions.Function3<? super androidx.datastore.core.ReadScope<T>,? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
-    method public suspend Object? writeScope(kotlin.jvm.functions.Function2<? super androidx.datastore.core.WriteScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend <R> Object? readScope(kotlin.jvm.functions.Function3<? super androidx.datastore.core.ReadScope<T>,? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super R>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super R>);
+    method public suspend Object? writeScope(kotlin.jvm.functions.Function2<? super androidx.datastore.core.WriteScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public abstract androidx.datastore.core.InterProcessCoordinator coordinator;
   }
 
diff --git a/datastore/datastore-core/api/restricted_1.1.0-beta02.txt b/datastore/datastore-core/api/restricted_1.1.0-beta02.txt
index 2700ff7..7497295 100644
--- a/datastore/datastore-core/api/restricted_1.1.0-beta02.txt
+++ b/datastore/datastore-core/api/restricted_1.1.0-beta02.txt
@@ -21,7 +21,7 @@
 
   public interface DataStore<T> {
     method public kotlinx.coroutines.flow.Flow<T> getData();
-    method public suspend Object? updateData(kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super T>,?> transform, kotlin.coroutines.Continuation<? super T>);
+    method public suspend Object? updateData(kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super T>,? extends java.lang.Object?> transform, kotlin.coroutines.Continuation<? super T>);
     property public abstract kotlinx.coroutines.flow.Flow<T> data;
   }
 
@@ -43,8 +43,8 @@
     method public kotlinx.coroutines.flow.Flow<kotlin.Unit> getUpdateNotifications();
     method public suspend Object? getVersion(kotlin.coroutines.Continuation<? super java.lang.Integer>);
     method public suspend Object? incrementAndGetVersion(kotlin.coroutines.Continuation<? super java.lang.Integer>);
-    method public suspend <T> Object? lock(kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T>);
-    method public suspend <T> Object? tryLock(kotlin.jvm.functions.Function2<? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super T>,?> block, kotlin.coroutines.Continuation<? super T>);
+    method public suspend <T> Object? lock(kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super T>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super T>);
+    method public suspend <T> Object? tryLock(kotlin.jvm.functions.Function2<? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super T>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super T>);
     property public abstract kotlinx.coroutines.flow.Flow<kotlin.Unit> updateNotifications;
   }
 
@@ -85,8 +85,8 @@
 
   public interface StorageConnection<T> extends androidx.datastore.core.Closeable {
     method public androidx.datastore.core.InterProcessCoordinator getCoordinator();
-    method public suspend <R> Object? readScope(kotlin.jvm.functions.Function3<? super androidx.datastore.core.ReadScope<T>,? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
-    method public suspend Object? writeScope(kotlin.jvm.functions.Function2<? super androidx.datastore.core.WriteScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend <R> Object? readScope(kotlin.jvm.functions.Function3<? super androidx.datastore.core.ReadScope<T>,? super java.lang.Boolean,? super kotlin.coroutines.Continuation<? super R>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super R>);
+    method public suspend Object? writeScope(kotlin.jvm.functions.Function2<? super androidx.datastore.core.WriteScope<T>,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public abstract androidx.datastore.core.InterProcessCoordinator coordinator;
   }
 
diff --git a/datastore/datastore-preferences-core/api/1.1.0-beta02.txt b/datastore/datastore-preferences-core/api/1.1.0-beta02.txt
index a2e5dcc..c09b4e5 100644
--- a/datastore/datastore-preferences-core/api/1.1.0-beta02.txt
+++ b/datastore/datastore-preferences-core/api/1.1.0-beta02.txt
@@ -2,14 +2,14 @@
 package androidx.datastore.preferences.core {
 
   public final class MutablePreferences extends androidx.datastore.preferences.core.Preferences {
-    method public java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public java.util.Map<androidx.datastore.preferences.core.Preferences.Key<? extends java.lang.Object!>,java.lang.Object> asMap();
     method public void clear();
     method public operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
-    method public operator void minusAssign(androidx.datastore.preferences.core.Preferences.Key<?> key);
+    method public operator void minusAssign(androidx.datastore.preferences.core.Preferences.Key<? extends java.lang.Object!> key);
     method public operator void plusAssign(androidx.datastore.preferences.core.Preferences prefs);
-    method public operator void plusAssign(androidx.datastore.preferences.core.Preferences.Pair<?> pair);
-    method public void putAll(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public operator void plusAssign(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!> pair);
+    method public void putAll(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!>... pairs);
     method public <T> T remove(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public operator <T> void set(androidx.datastore.preferences.core.Preferences.Key<T> key, T value);
   }
@@ -25,7 +25,7 @@
   }
 
   public abstract class Preferences {
-    method public abstract java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public abstract java.util.Map<androidx.datastore.preferences.core.Preferences.Key<? extends java.lang.Object!>,java.lang.Object> asMap();
     method public abstract operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public abstract operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public final androidx.datastore.preferences.core.MutablePreferences toMutablePreferences();
@@ -42,9 +42,9 @@
   }
 
   public final class PreferencesFactory {
-    method public static androidx.datastore.preferences.core.Preferences create(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static androidx.datastore.preferences.core.Preferences create(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!>... pairs);
     method public static androidx.datastore.preferences.core.Preferences createEmpty();
-    method public static androidx.datastore.preferences.core.MutablePreferences createMutable(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static androidx.datastore.preferences.core.MutablePreferences createMutable(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!>... pairs);
   }
 
   public final class PreferencesKeys {
@@ -59,7 +59,7 @@
   }
 
   public final class PreferencesKt {
-    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.core.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.core.Preferences>);
+    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.core.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.core.Preferences>);
   }
 
   public final class PreferencesSerializer implements androidx.datastore.core.okio.OkioSerializer<androidx.datastore.preferences.core.Preferences> {
diff --git a/datastore/datastore-preferences-core/api/restricted_1.1.0-beta02.txt b/datastore/datastore-preferences-core/api/restricted_1.1.0-beta02.txt
index a2e5dcc..c09b4e5 100644
--- a/datastore/datastore-preferences-core/api/restricted_1.1.0-beta02.txt
+++ b/datastore/datastore-preferences-core/api/restricted_1.1.0-beta02.txt
@@ -2,14 +2,14 @@
 package androidx.datastore.preferences.core {
 
   public final class MutablePreferences extends androidx.datastore.preferences.core.Preferences {
-    method public java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public java.util.Map<androidx.datastore.preferences.core.Preferences.Key<? extends java.lang.Object!>,java.lang.Object> asMap();
     method public void clear();
     method public operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
-    method public operator void minusAssign(androidx.datastore.preferences.core.Preferences.Key<?> key);
+    method public operator void minusAssign(androidx.datastore.preferences.core.Preferences.Key<? extends java.lang.Object!> key);
     method public operator void plusAssign(androidx.datastore.preferences.core.Preferences prefs);
-    method public operator void plusAssign(androidx.datastore.preferences.core.Preferences.Pair<?> pair);
-    method public void putAll(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public operator void plusAssign(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!> pair);
+    method public void putAll(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!>... pairs);
     method public <T> T remove(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public operator <T> void set(androidx.datastore.preferences.core.Preferences.Key<T> key, T value);
   }
@@ -25,7 +25,7 @@
   }
 
   public abstract class Preferences {
-    method public abstract java.util.Map<androidx.datastore.preferences.core.Preferences.Key<?>,java.lang.Object> asMap();
+    method public abstract java.util.Map<androidx.datastore.preferences.core.Preferences.Key<? extends java.lang.Object!>,java.lang.Object> asMap();
     method public abstract operator <T> boolean contains(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public abstract operator <T> T? get(androidx.datastore.preferences.core.Preferences.Key<T> key);
     method public final androidx.datastore.preferences.core.MutablePreferences toMutablePreferences();
@@ -42,9 +42,9 @@
   }
 
   public final class PreferencesFactory {
-    method public static androidx.datastore.preferences.core.Preferences create(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static androidx.datastore.preferences.core.Preferences create(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!>... pairs);
     method public static androidx.datastore.preferences.core.Preferences createEmpty();
-    method public static androidx.datastore.preferences.core.MutablePreferences createMutable(androidx.datastore.preferences.core.Preferences.Pair<?>... pairs);
+    method public static androidx.datastore.preferences.core.MutablePreferences createMutable(androidx.datastore.preferences.core.Preferences.Pair<? extends java.lang.Object!>... pairs);
   }
 
   public final class PreferencesKeys {
@@ -59,7 +59,7 @@
   }
 
   public final class PreferencesKt {
-    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.core.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.core.Preferences>);
+    method public static suspend Object? edit(androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences>, kotlin.jvm.functions.Function2<? super androidx.datastore.preferences.core.MutablePreferences,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> transform, kotlin.coroutines.Continuation<? super androidx.datastore.preferences.core.Preferences>);
   }
 
   public final class PreferencesSerializer implements androidx.datastore.core.okio.OkioSerializer<androidx.datastore.preferences.core.Preferences> {
diff --git a/docs/onboarding.md b/docs/onboarding.md
index b3839f1..c536ac3 100644
--- a/docs/onboarding.md
+++ b/docs/onboarding.md
@@ -35,6 +35,9 @@
 export PATH=~/bin:$PATH
 ```
 
+> NOTE: When using quotes (`"~/bin"`), `~` does not expand and the path is
+> invalid. (Possibly `bash` only?)
+
 Next, add the following lines to `~/.zshrc` (or `~/.bash_profile` if using
 `bash`) aliasing the `repo` command to run with `python3`:
 
diff --git a/dynamicanimation/dynamicanimation/api/1.0.0.txt b/dynamicanimation/dynamicanimation/api/1.0.0.txt
index 13648f2..25f3c21 100644
--- a/dynamicanimation/dynamicanimation/api/1.0.0.txt
+++ b/dynamicanimation/dynamicanimation/api/1.0.0.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.dynamicanimation.animation {
 
   public abstract class DynamicAnimation<T extends androidx.dynamicanimation.animation.DynamicAnimation<T>> {
@@ -43,12 +43,12 @@
     method public void onAnimationUpdate(androidx.dynamicanimation.animation.DynamicAnimation!, float, float);
   }
 
-  public abstract static class DynamicAnimation.ViewProperty extends androidx.dynamicanimation.animation.FloatPropertyCompat<android.view.View> {
+  public abstract static class DynamicAnimation.ViewProperty extends androidx.dynamicanimation.animation.FloatPropertyCompat<android.view.View!> {
   }
 
-  public final class FlingAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.FlingAnimation> {
+  public final class FlingAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.FlingAnimation!> {
     ctor public FlingAnimation(androidx.dynamicanimation.animation.FloatValueHolder!);
-    ctor public FlingAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
+    ctor public <K> FlingAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
     method public float getFriction();
     method public androidx.dynamicanimation.animation.FlingAnimation! setFriction(@FloatRange(from=0.0, fromInclusive=false) float);
     method public androidx.dynamicanimation.animation.FlingAnimation! setMaxValue(float);
@@ -70,10 +70,10 @@
     method public void setValue(float);
   }
 
-  public final class SpringAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.SpringAnimation> {
+  public final class SpringAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.SpringAnimation!> {
     ctor public SpringAnimation(androidx.dynamicanimation.animation.FloatValueHolder!);
-    ctor public SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
-    ctor public SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!, float);
+    ctor public <K> SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
+    ctor public <K> SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!, float);
     method public void animateToFinalPosition(float);
     method public boolean canSkipToEnd();
     method public androidx.dynamicanimation.animation.SpringForce! getSpring();
diff --git a/dynamicanimation/dynamicanimation/api/restricted_1.0.0.txt b/dynamicanimation/dynamicanimation/api/restricted_1.0.0.txt
index 13648f2..25f3c21 100644
--- a/dynamicanimation/dynamicanimation/api/restricted_1.0.0.txt
+++ b/dynamicanimation/dynamicanimation/api/restricted_1.0.0.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.dynamicanimation.animation {
 
   public abstract class DynamicAnimation<T extends androidx.dynamicanimation.animation.DynamicAnimation<T>> {
@@ -43,12 +43,12 @@
     method public void onAnimationUpdate(androidx.dynamicanimation.animation.DynamicAnimation!, float, float);
   }
 
-  public abstract static class DynamicAnimation.ViewProperty extends androidx.dynamicanimation.animation.FloatPropertyCompat<android.view.View> {
+  public abstract static class DynamicAnimation.ViewProperty extends androidx.dynamicanimation.animation.FloatPropertyCompat<android.view.View!> {
   }
 
-  public final class FlingAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.FlingAnimation> {
+  public final class FlingAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.FlingAnimation!> {
     ctor public FlingAnimation(androidx.dynamicanimation.animation.FloatValueHolder!);
-    ctor public FlingAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
+    ctor public <K> FlingAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
     method public float getFriction();
     method public androidx.dynamicanimation.animation.FlingAnimation! setFriction(@FloatRange(from=0.0, fromInclusive=false) float);
     method public androidx.dynamicanimation.animation.FlingAnimation! setMaxValue(float);
@@ -70,10 +70,10 @@
     method public void setValue(float);
   }
 
-  public final class SpringAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.SpringAnimation> {
+  public final class SpringAnimation extends androidx.dynamicanimation.animation.DynamicAnimation<androidx.dynamicanimation.animation.SpringAnimation!> {
     ctor public SpringAnimation(androidx.dynamicanimation.animation.FloatValueHolder!);
-    ctor public SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
-    ctor public SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!, float);
+    ctor public <K> SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!);
+    ctor public <K> SpringAnimation(K!, androidx.dynamicanimation.animation.FloatPropertyCompat<K!>!, float);
     method public void animateToFinalPosition(float);
     method public boolean canSkipToEnd();
     method public androidx.dynamicanimation.animation.SpringForce! getSpring();
diff --git a/emoji2/emoji2/api/1.4.0-beta05.txt b/emoji2/emoji2/api/1.4.0-beta05.txt
index 42809f9..ff58c2c 100644
--- a/emoji2/emoji2/api/1.4.0-beta05.txt
+++ b/emoji2/emoji2/api/1.4.0-beta05.txt
@@ -82,10 +82,10 @@
     method @RequiresApi(19) public androidx.emoji2.text.EmojiSpan createSpan(androidx.emoji2.text.TypefaceEmojiRasterizer);
   }
 
-  public class EmojiCompatInitializer implements androidx.startup.Initializer<java.lang.Boolean> {
+  public class EmojiCompatInitializer implements androidx.startup.Initializer<java.lang.Boolean!> {
     ctor public EmojiCompatInitializer();
     method public Boolean create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
   @RequiresApi(19) public abstract class EmojiSpan extends android.text.style.ReplacementSpan {
diff --git a/emoji2/emoji2/api/restricted_1.4.0-beta05.txt b/emoji2/emoji2/api/restricted_1.4.0-beta05.txt
index 42809f9..ff58c2c 100644
--- a/emoji2/emoji2/api/restricted_1.4.0-beta05.txt
+++ b/emoji2/emoji2/api/restricted_1.4.0-beta05.txt
@@ -82,10 +82,10 @@
     method @RequiresApi(19) public androidx.emoji2.text.EmojiSpan createSpan(androidx.emoji2.text.TypefaceEmojiRasterizer);
   }
 
-  public class EmojiCompatInitializer implements androidx.startup.Initializer<java.lang.Boolean> {
+  public class EmojiCompatInitializer implements androidx.startup.Initializer<java.lang.Boolean!> {
     ctor public EmojiCompatInitializer();
     method public Boolean create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
   @RequiresApi(19) public abstract class EmojiSpan extends android.text.style.ReplacementSpan {
diff --git a/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/HealthConnectClientUpsideDownImplTest.kt b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/HealthConnectClientUpsideDownImplTest.kt
index aea9726..63bbd51 100644
--- a/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/HealthConnectClientUpsideDownImplTest.kt
+++ b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/HealthConnectClientUpsideDownImplTest.kt
@@ -26,6 +26,7 @@
 import androidx.health.connect.client.changes.UpsertionChange
 import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_PREFIX
 import androidx.health.connect.client.readRecord
+import androidx.health.connect.client.records.BloodPressureRecord
 import androidx.health.connect.client.records.HeartRateRecord
 import androidx.health.connect.client.records.NutritionRecord
 import androidx.health.connect.client.records.StepsRecord
@@ -40,6 +41,8 @@
 import androidx.health.connect.client.time.TimeRangeFilter
 import androidx.health.connect.client.units.Energy
 import androidx.health.connect.client.units.Mass
+import androidx.health.connect.client.units.grams
+import androidx.health.connect.client.units.millimetersOfMercury
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
@@ -405,19 +408,47 @@
                     startZoneOffset = ZoneOffset.UTC,
                     endTime = START_TIME + 1.minutes,
                     endZoneOffset = ZoneOffset.UTC,
-                    transFat = Mass.grams(0.5)
+                    transFat = 0.5.grams
+                ),
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 120.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
                 )
             )
         )
 
         val aggregateResponse = healthConnectClient.aggregate(
             AggregateRequest(
-                setOf(NutritionRecord.TRANS_FAT_TOTAL),
+                setOf(
+                    BloodPressureRecord.DIASTOLIC_AVG,
+                    BloodPressureRecord.DIASTOLIC_MAX,
+                    BloodPressureRecord.DIASTOLIC_MIN,
+                    BloodPressureRecord.SYSTOLIC_AVG,
+                    BloodPressureRecord.SYSTOLIC_MAX,
+                    BloodPressureRecord.SYSTOLIC_MIN,
+                    NutritionRecord.TRANS_FAT_TOTAL
+                ),
                 TimeRangeFilter.none()
             )
         )
 
-        assertThat(aggregateResponse[NutritionRecord.TRANS_FAT_TOTAL]).isEqualTo(Mass.grams(0.5))
+        assertEquals(
+            aggregateResponse[NutritionRecord.TRANS_FAT_TOTAL] to 0.5.grams,
+            aggregateResponse[BloodPressureRecord.SYSTOLIC_AVG] to
+                120.millimetersOfMercury,
+            aggregateResponse[BloodPressureRecord.SYSTOLIC_MAX] to
+                120.millimetersOfMercury,
+            aggregateResponse[BloodPressureRecord.SYSTOLIC_MIN] to
+                120.millimetersOfMercury,
+            aggregateResponse[BloodPressureRecord.DIASTOLIC_AVG] to
+                80.millimetersOfMercury,
+            aggregateResponse[BloodPressureRecord.DIASTOLIC_MAX] to
+                80.millimetersOfMercury,
+            aggregateResponse[BloodPressureRecord.DIASTOLIC_MIN] to
+                80.millimetersOfMercury,
+        )
     }
 
     @Ignore("b/314092270")
@@ -736,6 +767,10 @@
             .containsExactlyElementsIn(allHealthPermissions)
     }
 
+    private fun <A, E> assertEquals(vararg assertions: Pair<A, E>) {
+        assertions.forEach { (actual, expected) -> assertThat(actual).isEqualTo(expected) }
+    }
+
     private val Int.seconds: Duration
         get() = Duration.ofSeconds(this.toLong())
 
diff --git a/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/BloodPressureAggregationExtensionsTest.kt b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/BloodPressureAggregationExtensionsTest.kt
new file mode 100644
index 0000000..afb5722e
--- /dev/null
+++ b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/BloodPressureAggregationExtensionsTest.kt
@@ -0,0 +1,539 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.health.connect.client.impl.platform.aggregate
+
+import android.annotation.TargetApi
+import android.content.Context
+import android.os.Build
+import android.os.ext.SdkExtensions
+import androidx.health.connect.client.HealthConnectClient
+import androidx.health.connect.client.impl.HealthConnectClientUpsideDownImpl
+import androidx.health.connect.client.permission.HealthPermission
+import androidx.health.connect.client.records.BloodPressureRecord
+import androidx.health.connect.client.records.NutritionRecord
+import androidx.health.connect.client.records.metadata.DataOrigin
+import androidx.health.connect.client.time.TimeRangeFilter
+import androidx.health.connect.client.units.millimetersOfMercury
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.MediumTest
+import androidx.test.filters.SdkSuppress
+import androidx.test.rule.GrantPermissionRule
+import com.google.common.truth.Truth.assertThat
+import java.time.Duration
+import java.time.LocalDate
+import java.time.LocalDateTime
+import java.time.ZoneOffset
+import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.test.runTest
+import org.junit.After
+import org.junit.Assert.assertThrows
+import org.junit.Assume.assumeTrue
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+@MediumTest
+@TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+@SdkSuppress(minSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, codeName = "UpsideDownCake")
+class BloodPressureAggregationExtensionsTest {
+
+    private val context: Context = ApplicationProvider.getApplicationContext()
+    private val healthConnectClient: HealthConnectClient =
+        HealthConnectClientUpsideDownImpl(context)
+
+    private companion object {
+        private val START_TIME =
+            LocalDate.now().minusDays(5).atStartOfDay().toInstant(ZoneOffset.UTC)
+    }
+
+    @get:Rule
+    val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
+        HealthPermission.getWritePermission(BloodPressureRecord::class),
+        HealthPermission.getReadPermission(BloodPressureRecord::class)
+    )
+
+    @After
+    fun tearDown() = runTest {
+        healthConnectClient.deleteRecords(BloodPressureRecord::class, TimeRangeFilter.none())
+    }
+
+    @Test
+    fun aggregateBloodPressure_invalidMetrics() = runTest {
+        val metrics = setOf(
+            BloodPressureRecord.DIASTOLIC_AVG,
+            BloodPressureRecord.DIASTOLIC_MAX,
+            BloodPressureRecord.DIASTOLIC_MIN,
+            BloodPressureRecord.SYSTOLIC_AVG,
+            BloodPressureRecord.SYSTOLIC_MAX,
+            BloodPressureRecord.SYSTOLIC_MIN,
+            NutritionRecord.TRANS_FAT_TOTAL
+        )
+
+        assertThrows(IllegalStateException::class.java) {
+            runBlocking {
+                healthConnectClient.aggregateBloodPressure(
+                    metrics,
+                    TimeRangeFilter.none(),
+                    emptySet()
+                )
+            }
+        }
+    }
+
+    @Test
+    fun aggregateBloodPressure_noFiltersNoData() = runTest {
+        val metrics = setOf(
+            BloodPressureRecord.DIASTOLIC_AVG,
+            BloodPressureRecord.DIASTOLIC_MAX,
+            BloodPressureRecord.DIASTOLIC_MIN,
+            BloodPressureRecord.SYSTOLIC_AVG,
+            BloodPressureRecord.SYSTOLIC_MAX,
+            BloodPressureRecord.SYSTOLIC_MIN,
+        )
+
+        val aggregationResult =
+            healthConnectClient.aggregateBloodPressure(metrics, TimeRangeFilter.none(), emptySet())
+
+        metrics.forEach {
+            assertThat(it in aggregationResult).isFalse()
+        }
+        assertThat(aggregationResult.dataOrigins).isEmpty()
+    }
+
+    @Test
+    fun aggregateBloodPressure_noFilters() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 105.millimetersOfMercury,
+                    diastolic = 60.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 2.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 90.millimetersOfMercury,
+                    diastolic = 70.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 4.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 120.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 6.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 110.millimetersOfMercury,
+                    diastolic = 65.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 8.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 100.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                )
+            )
+        )
+
+        val aggregationResult =
+            healthConnectClient.aggregateBloodPressure(
+                setOf(BloodPressureRecord.SYSTOLIC_MAX),
+                TimeRangeFilter.none(), emptySet()
+            )
+
+        assertThat(aggregationResult[BloodPressureRecord.SYSTOLIC_MAX])
+            .isEqualTo(120.millimetersOfMercury)
+        assertThat(aggregationResult.dataOrigins)
+            .containsExactly(DataOrigin(context.packageName))
+    }
+
+    @Test
+    fun aggregateBloodPressure_noFilters_allMetrics() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME + 4.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 120.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 8.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 100.millimetersOfMercury,
+                    diastolic = 60.millimetersOfMercury
+                )
+            )
+        )
+
+        val aggregationResult =
+            healthConnectClient.aggregateBloodPressure(
+                setOf(
+                    BloodPressureRecord.DIASTOLIC_AVG,
+                    BloodPressureRecord.DIASTOLIC_MAX,
+                    BloodPressureRecord.DIASTOLIC_MIN,
+                    BloodPressureRecord.SYSTOLIC_AVG,
+                    BloodPressureRecord.SYSTOLIC_MAX,
+                    BloodPressureRecord.SYSTOLIC_MIN,
+                ),
+                TimeRangeFilter.none(), emptySet()
+            )
+
+        assertEquals(
+            aggregationResult[BloodPressureRecord.DIASTOLIC_AVG] to 70.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.DIASTOLIC_MAX] to 80.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.DIASTOLIC_MIN] to 60.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_AVG] to 110.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_MAX] to 120.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_MIN] to 100.millimetersOfMercury,
+        )
+        assertThat(aggregationResult.dataOrigins)
+            .containsExactly(DataOrigin(context.packageName))
+    }
+
+    @Test
+    fun aggregateBloodPressure_noFilters_someMetrics() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME + 4.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 120.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 8.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 100.millimetersOfMercury,
+                    diastolic = 60.millimetersOfMercury
+                )
+            )
+        )
+
+        val aggregationResult =
+            healthConnectClient.aggregateBloodPressure(
+                setOf(
+                    BloodPressureRecord.DIASTOLIC_AVG,
+                    BloodPressureRecord.SYSTOLIC_MAX,
+                    BloodPressureRecord.SYSTOLIC_MIN,
+                ),
+                TimeRangeFilter.none(), emptySet()
+            )
+
+        assertEquals(
+            aggregationResult[BloodPressureRecord.DIASTOLIC_AVG] to 70.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_MAX] to 120.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_MIN] to 100.millimetersOfMercury,
+        )
+        setOf(
+            BloodPressureRecord.DIASTOLIC_MAX,
+            BloodPressureRecord.DIASTOLIC_MIN,
+            BloodPressureRecord.SYSTOLIC_AVG
+        ).forEach { assertThat(it in aggregationResult).isFalse() }
+        assertThat(aggregationResult.dataOrigins)
+            .containsExactly(DataOrigin(context.packageName))
+    }
+
+    @Test
+    fun aggregateBloodPressure_noFilters_noMetrics() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 105.millimetersOfMercury,
+                    diastolic = 60.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 2.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 90.millimetersOfMercury,
+                    diastolic = 70.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 4.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 120.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 6.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 110.millimetersOfMercury,
+                    diastolic = 65.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 8.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 100.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                )
+            )
+        )
+
+        val aggregationResult =
+            healthConnectClient.aggregateBloodPressure(
+                emptySet(),
+                TimeRangeFilter.none(), emptySet()
+            )
+
+        setOf(
+            BloodPressureRecord.DIASTOLIC_AVG,
+            BloodPressureRecord.DIASTOLIC_MAX,
+            BloodPressureRecord.DIASTOLIC_MIN,
+            BloodPressureRecord.SYSTOLIC_AVG,
+            BloodPressureRecord.SYSTOLIC_MAX,
+            BloodPressureRecord.SYSTOLIC_MIN,
+        ).forEach {
+            assertThat(it in aggregationResult).isFalse()
+        }
+        assertThat(aggregationResult.dataOrigins).isEmpty()
+    }
+
+    @Test
+    fun aggregateBloodPressure_instantTimeRangeFilter() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 105.millimetersOfMercury,
+                    diastolic = 60.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 2.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 90.millimetersOfMercury,
+                    diastolic = 70.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 4.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 120.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 6.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 110.millimetersOfMercury,
+                    diastolic = 65.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 8.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 100.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                )
+            )
+        )
+
+        val aggregationResult = healthConnectClient.aggregateBloodPressure(
+            setOf(BloodPressureRecord.DIASTOLIC_MIN),
+            TimeRangeFilter.between(
+                START_TIME + 30.seconds,
+                START_TIME + 6.minutes + 45.seconds
+            ), emptySet()
+        )
+
+        assertThat(aggregationResult[BloodPressureRecord.DIASTOLIC_MIN])
+            .isEqualTo(65.millimetersOfMercury)
+        assertThat(aggregationResult.dataOrigins)
+            .containsExactly(DataOrigin(context.packageName))
+    }
+
+    @Test
+    fun aggregateBloodPressure_instantTimeRangeFilter_filterEndTime() =
+        runTest {
+            healthConnectClient.insertRecords(
+                listOf(
+                    BloodPressureRecord(
+                        time = START_TIME,
+                        zoneOffset = ZoneOffset.UTC,
+                        systolic = 110.millimetersOfMercury,
+                        diastolic = 65.millimetersOfMercury
+                    ),
+                    BloodPressureRecord(
+                        time = START_TIME + 2.minutes,
+                        zoneOffset = ZoneOffset.UTC,
+                        systolic = 100.millimetersOfMercury,
+                        diastolic = 80.millimetersOfMercury
+                    )
+                )
+            )
+
+            val aggregationResult = healthConnectClient.aggregateBloodPressure(
+                setOf(BloodPressureRecord.DIASTOLIC_AVG, BloodPressureRecord.SYSTOLIC_AVG),
+                TimeRangeFilter.between(
+                    START_TIME + 1.minutes,
+                    START_TIME + 1.minutes + 59.seconds
+                ), emptySet()
+            )
+
+            assertThat(BloodPressureRecord.DIASTOLIC_AVG in aggregationResult).isFalse()
+            assertThat(BloodPressureRecord.SYSTOLIC_AVG in aggregationResult).isFalse()
+            assertThat(aggregationResult.dataOrigins).isEmpty()
+        }
+
+    @Test
+    fun aggregateBloodPressure_localTimeRangeFilter() = runTest {
+        assumeTrue(SdkExtensions.getExtensionVersion(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) >= 10)
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 105.millimetersOfMercury,
+                    diastolic = 60.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 2.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 100.millimetersOfMercury,
+                    diastolic = 70.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 4.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 120.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 6.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 110.millimetersOfMercury,
+                    diastolic = 65.millimetersOfMercury
+                ),
+                BloodPressureRecord(
+                    time = START_TIME + 8.minutes,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 100.millimetersOfMercury,
+                    diastolic = 80.millimetersOfMercury
+                )
+            )
+        )
+
+        val aggregationResult = healthConnectClient.aggregateBloodPressure(
+            setOf(BloodPressureRecord.DIASTOLIC_MIN, BloodPressureRecord.SYSTOLIC_AVG),
+            TimeRangeFilter.between(
+                LocalDateTime.ofInstant(
+                    START_TIME + 2.hours + 30.seconds,
+                    ZoneOffset.ofHours(-2)
+                ),
+                LocalDateTime.ofInstant(
+                    START_TIME + 2.hours + 6.minutes + 45.seconds,
+                    ZoneOffset.ofHours(-2)
+                )
+            ), emptySet()
+        )
+
+        assertThat(aggregationResult[BloodPressureRecord.DIASTOLIC_MIN])
+            .isEqualTo(65.millimetersOfMercury)
+        assertThat(aggregationResult[BloodPressureRecord.SYSTOLIC_AVG])
+            .isEqualTo(110.millimetersOfMercury)
+        assertThat(aggregationResult.dataOrigins)
+            .containsExactly(DataOrigin(context.packageName))
+    }
+
+    // TODO(b/337195270): Test with data origins from multiple apps
+    @Test
+    fun aggregateBloodPressure_insertedDataOriginFilter() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 110.millimetersOfMercury,
+                    diastolic = 65.millimetersOfMercury
+                ),
+            )
+        )
+
+        val aggregationResult = healthConnectClient.aggregateBloodPressure(
+            setOf(BloodPressureRecord.SYSTOLIC_AVG),
+            TimeRangeFilter.none(),
+            setOf(DataOrigin(context.packageName))
+        )
+
+        assertThat(aggregationResult[BloodPressureRecord.SYSTOLIC_AVG])
+            .isEqualTo(110.millimetersOfMercury)
+        assertThat(aggregationResult.dataOrigins)
+            .containsExactly(DataOrigin(context.packageName))
+    }
+
+    @Test
+    fun aggregateBloodPressure_timeRangeFilterOutOfBounds() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 110.millimetersOfMercury,
+                    diastolic = 65.millimetersOfMercury
+                ),
+            )
+        )
+
+        val aggregationResult = healthConnectClient.aggregateBloodPressure(
+            setOf(BloodPressureRecord.SYSTOLIC_AVG),
+            TimeRangeFilter.after(START_TIME + 2.minutes),
+            emptySet()
+        )
+
+        assertThat(BloodPressureRecord.SYSTOLIC_AVG in aggregationResult).isFalse()
+        assertThat(aggregationResult.dataOrigins).isEmpty()
+    }
+
+    @Test
+    fun aggregateBloodPressure_nonExistingDataOriginFilter() = runTest {
+        healthConnectClient.insertRecords(
+            listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    systolic = 110.millimetersOfMercury,
+                    diastolic = 65.millimetersOfMercury
+                ),
+            )
+        )
+
+        val aggregationResult = healthConnectClient.aggregateBloodPressure(
+            setOf(BloodPressureRecord.SYSTOLIC_AVG),
+            TimeRangeFilter.none(),
+            setOf(DataOrigin("some random package name"))
+        )
+
+        assertThat(BloodPressureRecord.SYSTOLIC_AVG in aggregationResult).isFalse()
+        assertThat(aggregationResult.dataOrigins).isEmpty()
+    }
+
+    private fun <A, E> assertEquals(vararg assertions: Pair<A, E>) {
+        assertions.forEach { (actual, expected) -> assertThat(actual).isEqualTo(expected) }
+    }
+
+    private val Int.seconds: Duration
+        get() = Duration.ofSeconds(this.toLong())
+
+    private val Int.minutes: Duration
+        get() = Duration.ofMinutes(this.toLong())
+
+    private val Int.hours: Duration
+        get() = Duration.ofHours(this.toLong())
+}
diff --git a/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensionsTest.kt b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensionsTest.kt
index 78225d6..76952af 100644
--- a/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensionsTest.kt
+++ b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensionsTest.kt
@@ -23,12 +23,14 @@
 import androidx.health.connect.client.HealthConnectClient
 import androidx.health.connect.client.impl.HealthConnectClientUpsideDownImpl
 import androidx.health.connect.client.permission.HealthPermission
+import androidx.health.connect.client.records.BloodPressureRecord
 import androidx.health.connect.client.records.NutritionRecord
 import androidx.health.connect.client.records.StepsRecord
 import androidx.health.connect.client.records.metadata.DataOrigin
 import androidx.health.connect.client.request.AggregateRequest
 import androidx.health.connect.client.time.TimeRangeFilter
-import androidx.health.connect.client.units.Mass
+import androidx.health.connect.client.units.grams
+import androidx.health.connect.client.units.millimetersOfMercury
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
@@ -65,6 +67,8 @@
 
     @get:Rule
     val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
+        HealthPermission.getWritePermission(BloodPressureRecord::class),
+        HealthPermission.getReadPermission(BloodPressureRecord::class),
         HealthPermission.getWritePermission(NutritionRecord::class),
         HealthPermission.getReadPermission(NutritionRecord::class),
         HealthPermission.getWritePermission(StepsRecord::class),
@@ -83,11 +87,17 @@
 
         healthConnectClient.insertRecords(
             listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    diastolic = 70.millimetersOfMercury,
+                    systolic = 110.millimetersOfMercury
+                ),
                 NutritionRecord(
                     startTime = START_TIME,
                     endTime = START_TIME + 1.minutes,
-                    transFat = Mass.grams(0.3),
-                    calcium = Mass.grams(0.1),
+                    transFat = 0.3.grams,
+                    calcium = 0.1.grams,
                     startZoneOffset = ZoneOffset.UTC,
                     endZoneOffset = ZoneOffset.UTC
                 )
@@ -95,14 +105,30 @@
         )
 
         val aggregationResult =
-            healthConnectClient.aggregateFallback(AggregateRequest(
-                metrics = setOf(NutritionRecord.TRANS_FAT_TOTAL, NutritionRecord.CALCIUM_TOTAL),
-                timeRangeFilter = TimeRangeFilter.none()
-            ))
+            healthConnectClient.aggregateFallback(
+                AggregateRequest(
+                    metrics = setOf(
+                        BloodPressureRecord.DIASTOLIC_AVG,
+                        BloodPressureRecord.DIASTOLIC_MAX,
+                        BloodPressureRecord.DIASTOLIC_MIN,
+                        BloodPressureRecord.SYSTOLIC_AVG,
+                        BloodPressureRecord.SYSTOLIC_MAX,
+                        BloodPressureRecord.SYSTOLIC_MIN,
+                        NutritionRecord.TRANS_FAT_TOTAL,
+                        NutritionRecord.CALCIUM_TOTAL
+                    ),
+                    timeRangeFilter = TimeRangeFilter.none()
+                )
+            )
 
+        assertThat(BloodPressureRecord.DIASTOLIC_AVG in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.DIASTOLIC_MAX in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.DIASTOLIC_MIN in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.SYSTOLIC_AVG in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.SYSTOLIC_MAX in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.SYSTOLIC_MIN in aggregationResult).isFalse()
         assertThat(NutritionRecord.TRANS_FAT_TOTAL in aggregationResult).isFalse()
         assertThat(NutritionRecord.CALCIUM_TOTAL in aggregationResult).isFalse()
-
         assertThat(aggregationResult.dataOrigins).isEmpty()
     }
 
@@ -112,11 +138,17 @@
 
         healthConnectClient.insertRecords(
             listOf(
+                BloodPressureRecord(
+                    time = START_TIME,
+                    zoneOffset = ZoneOffset.UTC,
+                    diastolic = 70.millimetersOfMercury,
+                    systolic = 110.millimetersOfMercury
+                ),
                 NutritionRecord(
                     startTime = START_TIME,
                     endTime = START_TIME + 1.minutes,
-                    transFat = Mass.grams(0.3),
-                    calcium = Mass.grams(0.1),
+                    transFat = 0.3.grams,
+                    calcium = 0.1.grams,
                     startZoneOffset = ZoneOffset.UTC,
                     endZoneOffset = ZoneOffset.UTC
                 )
@@ -124,19 +156,69 @@
         )
 
         val aggregationResult =
-            healthConnectClient.aggregateFallback(AggregateRequest(
-                metrics = setOf(NutritionRecord.TRANS_FAT_TOTAL, NutritionRecord.CALCIUM_TOTAL),
-                timeRangeFilter = TimeRangeFilter.none()
-            ))
+            healthConnectClient.aggregateFallback(
+                AggregateRequest(
+                    metrics = setOf(
+                        NutritionRecord.TRANS_FAT_TOTAL,
+                        NutritionRecord.CALCIUM_TOTAL,
+                        BloodPressureRecord.DIASTOLIC_AVG,
+                        BloodPressureRecord.DIASTOLIC_MAX,
+                        BloodPressureRecord.DIASTOLIC_MIN,
+                        BloodPressureRecord.SYSTOLIC_AVG,
+                        BloodPressureRecord.SYSTOLIC_MAX,
+                        BloodPressureRecord.SYSTOLIC_MIN,
+                    ),
+                    timeRangeFilter = TimeRangeFilter.none()
+                )
+            )
 
-        assertThat(aggregationResult[NutritionRecord.TRANS_FAT_TOTAL]).isEqualTo(Mass.grams(0.3))
-        assertThat(NutritionRecord.CALCIUM_TOTAL in aggregationResult).isFalse()
-
+        assertEquals(
+            aggregationResult[BloodPressureRecord.DIASTOLIC_AVG] to 70.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.DIASTOLIC_MAX] to 70.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.DIASTOLIC_MIN] to 70.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_AVG] to 110.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_MAX] to 110.millimetersOfMercury,
+            aggregationResult[BloodPressureRecord.SYSTOLIC_MIN] to 110.millimetersOfMercury,
+            aggregationResult[NutritionRecord.TRANS_FAT_TOTAL] to 0.3.grams,
+            (NutritionRecord.CALCIUM_TOTAL in aggregationResult) to false,
+        )
         assertThat(aggregationResult.dataOrigins)
             .containsExactly(DataOrigin(context.packageName))
     }
 
     @Test
+    fun aggregateFallback_belowSdkExt10NoData() = runTest {
+        assumeFalse(SdkExtensions.getExtensionVersion(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) >= 10)
+
+        val aggregationResult =
+            healthConnectClient.aggregateFallback(
+                AggregateRequest(
+                    metrics = setOf(
+                        BloodPressureRecord.DIASTOLIC_AVG,
+                        BloodPressureRecord.DIASTOLIC_MAX,
+                        BloodPressureRecord.DIASTOLIC_MIN,
+                        BloodPressureRecord.SYSTOLIC_AVG,
+                        BloodPressureRecord.SYSTOLIC_MAX,
+                        BloodPressureRecord.SYSTOLIC_MIN,
+                        NutritionRecord.TRANS_FAT_TOTAL,
+                        NutritionRecord.CALCIUM_TOTAL
+                    ),
+                    timeRangeFilter = TimeRangeFilter.none()
+                )
+            )
+
+        assertThat(BloodPressureRecord.DIASTOLIC_AVG in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.DIASTOLIC_MAX in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.DIASTOLIC_MIN in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.SYSTOLIC_AVG in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.SYSTOLIC_MAX in aggregationResult).isFalse()
+        assertThat(BloodPressureRecord.SYSTOLIC_MIN in aggregationResult).isFalse()
+        assertThat(NutritionRecord.TRANS_FAT_TOTAL in aggregationResult).isFalse()
+        assertThat(NutritionRecord.CALCIUM_TOTAL in aggregationResult).isFalse()
+        assertThat(aggregationResult.dataOrigins).isEmpty()
+    }
+
+    @Test
     fun readRecordsFlow_noFilters_readsAllInsertedRecords() = runTest {
         insertManyStepsRecords()
 
@@ -214,6 +296,10 @@
         }
     }
 
+    private fun <A, E> assertEquals(vararg assertions: Pair<A, E>) {
+        assertions.forEach { (actual, expected) -> assertThat(actual).isEqualTo(expected) }
+    }
+
     private val Int.seconds: Duration
         get() = Duration.ofSeconds(this.toLong())
 
diff --git a/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/NutritionAggregationExtensionsTest.kt b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/NutritionAggregationExtensionsTest.kt
index db17e4f..27e1d07 100644
--- a/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/NutritionAggregationExtensionsTest.kt
+++ b/health/connect/connect-client/src/androidTest/java/androidx/health/connect/client/impl/platform/aggregate/NutritionAggregationExtensionsTest.kt
@@ -69,6 +69,15 @@
     }
 
     @Test
+    fun aggregateNutritionTransFatTotal_noData() = runTest {
+        val aggregationResult =
+            healthConnectClient.aggregateNutritionTransFatTotal(TimeRangeFilter.none(), emptySet())
+
+        assertThat(NutritionRecord.TRANS_FAT_TOTAL in aggregationResult).isFalse()
+        assertThat(aggregationResult.dataOrigins).isEmpty()
+    }
+
+    @Test
     fun aggregateNutritionTransFatTotal_noFilters() = runTest {
         healthConnectClient.insertRecords(
             listOf(
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/platform/aggregate/BloodPressureAggregationExtensions.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/platform/aggregate/BloodPressureAggregationExtensions.kt
new file mode 100644
index 0000000..d8181f5
--- /dev/null
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/platform/aggregate/BloodPressureAggregationExtensions.kt
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:RequiresApi(api = 34)
+
+package androidx.health.connect.client.impl.platform.aggregate
+
+import androidx.annotation.RequiresApi
+import androidx.health.connect.client.HealthConnectClient
+import androidx.health.connect.client.aggregate.AggregateMetric
+import androidx.health.connect.client.aggregate.AggregationResult
+import androidx.health.connect.client.records.BloodPressureRecord
+import androidx.health.connect.client.records.metadata.DataOrigin
+import androidx.health.connect.client.time.TimeRangeFilter
+import androidx.health.connect.client.units.Pressure
+import kotlin.math.max
+import kotlin.math.min
+
+private val BLOOD_PRESSURE_METRICS = setOf(
+    BloodPressureRecord.DIASTOLIC_AVG,
+    BloodPressureRecord.DIASTOLIC_MAX,
+    BloodPressureRecord.DIASTOLIC_MIN,
+    BloodPressureRecord.SYSTOLIC_AVG,
+    BloodPressureRecord.SYSTOLIC_MAX,
+    BloodPressureRecord.SYSTOLIC_MIN,
+)
+
+internal suspend fun HealthConnectClient.aggregateBloodPressure(
+    bloodPressureMetrics: Set<AggregateMetric<*>>,
+    timeRangeFilter: TimeRangeFilter,
+    dataOriginFilter: Set<DataOrigin>
+): AggregationResult {
+    check(BLOOD_PRESSURE_METRICS.containsAll(bloodPressureMetrics)) {
+        "Invalid set of blood pressure metrics $bloodPressureMetrics"
+    }
+
+    if (bloodPressureMetrics.isEmpty()) {
+        return emptyAggregationResult()
+    }
+
+    val readRecordsFlow = readRecordsFlow(
+        BloodPressureRecord::class,
+        timeRangeFilter,
+        dataOriginFilter
+    )
+
+    val avgDataMap = mutableMapOf<AggregateMetric<Pressure>, AvgData>()
+    val minMaxMap = mutableMapOf<AggregateMetric<Pressure>, Double?>()
+
+    for (metric in bloodPressureMetrics) {
+        when (metric) {
+            BloodPressureRecord.DIASTOLIC_AVG, BloodPressureRecord.SYSTOLIC_AVG ->
+                avgDataMap[metric] = AvgData()
+
+            BloodPressureRecord.DIASTOLIC_MAX, BloodPressureRecord.DIASTOLIC_MIN,
+            BloodPressureRecord.SYSTOLIC_MAX, BloodPressureRecord.SYSTOLIC_MIN ->
+                minMaxMap[metric] = null
+
+            else -> error("Invalid blood pressure fallback aggregation type ${metric.metricKey}")
+        }
+    }
+
+    val dataOrigins = mutableSetOf<DataOrigin>()
+
+    readRecordsFlow.collect { records ->
+        records.forEach {
+            val diastolic = it.diastolic.inMillimetersOfMercury
+            val systolic = it.systolic.inMillimetersOfMercury
+
+            for (metric in bloodPressureMetrics) {
+                when (metric) {
+                    BloodPressureRecord.DIASTOLIC_AVG -> avgDataMap[metric]!! += diastolic
+                    BloodPressureRecord.DIASTOLIC_MAX -> minMaxMap[metric] =
+                        max(minMaxMap[metric] ?: diastolic, diastolic)
+
+                    BloodPressureRecord.DIASTOLIC_MIN -> minMaxMap[metric] =
+                        min(minMaxMap[metric] ?: diastolic, diastolic)
+
+                    BloodPressureRecord.SYSTOLIC_AVG -> avgDataMap[metric]!! += systolic
+                    BloodPressureRecord.SYSTOLIC_MAX -> minMaxMap[metric] =
+                        max(minMaxMap[metric] ?: systolic, systolic)
+
+                    BloodPressureRecord.SYSTOLIC_MIN -> minMaxMap[metric] =
+                        min(minMaxMap[metric] ?: systolic, systolic)
+                }
+            }
+
+            dataOrigins += it.metadata.dataOrigin
+        }
+    }
+
+    if (dataOrigins.isEmpty()) {
+        return emptyAggregationResult()
+    }
+
+    val doubleValues = buildMap {
+        for (metric in bloodPressureMetrics) {
+            val aggregatedValue = when (metric) {
+                BloodPressureRecord.DIASTOLIC_AVG, BloodPressureRecord.SYSTOLIC_AVG ->
+                    avgDataMap[metric]!!.average()
+
+                BloodPressureRecord.DIASTOLIC_MAX, BloodPressureRecord.DIASTOLIC_MIN,
+                BloodPressureRecord.SYSTOLIC_MAX, BloodPressureRecord.SYSTOLIC_MIN ->
+                    minMaxMap[metric]!!
+
+                else ->
+                    error("Invalid blood pressure fallback aggregation type ${metric.metricKey}")
+            }
+
+            put(metric.metricKey, aggregatedValue)
+        }
+    }
+
+    return AggregationResult(
+        longValues = mapOf(),
+        doubleValues = doubleValues,
+        dataOrigins = dataOrigins
+    )
+}
+
+private data class AvgData(var count: Int = 0, var total: Double = 0.0) {
+    operator fun plusAssign(value: Double) {
+        count++
+        total += value
+    }
+
+    fun average() = total / count
+}
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensions.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensions.kt
index 5a45b8b..a659c1b 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensions.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/platform/aggregate/HealthConnectClientAggregationExtensions.kt
@@ -48,45 +48,55 @@
 // Max buffer to account for overlapping records that have startTime < timeRangeFilter.startTime
 val RECORD_START_TIME_BUFFER: Duration = Duration.ofDays(1)
 
+private val AGGREGATION_FALLBACK_RECORD_TYPES = setOf(
+    BloodPressureRecord::class,
+    CyclingPedalingCadenceRecord::class,
+    NutritionRecord::class,
+    SpeedRecord::class,
+    StepsCadenceRecord::class
+)
+
 internal suspend fun HealthConnectClient.aggregateFallback(request: AggregateRequest):
     AggregationResult {
-    return request.fallbackMetrics
-        .fold(emptyAggregationResult()) { currentAggregateResult, metric ->
-            currentAggregateResult + aggregate(
-                metric,
-                request.timeRangeFilter,
-                request.dataOriginFilter
-            )
-        }
+    var aggregationResult = emptyAggregationResult()
+
+    for (recordType in AGGREGATION_FALLBACK_RECORD_TYPES) {
+        aggregationResult += aggregate(
+            recordType,
+            request.fallbackMetrics,
+            request.timeRangeFilter,
+            request.dataOriginFilter
+        )
+    }
+
+    return aggregationResult
 }
 
-private suspend fun <T : Any> HealthConnectClient.aggregate(
-    metric: AggregateMetric<T>,
+private suspend fun <T : Record> HealthConnectClient.aggregate(
+    recordType: KClass<T>,
+    metrics: Set<AggregateMetric<*>>,
     timeRangeFilter: TimeRangeFilter,
     dataOriginFilter: Set<DataOrigin>
 ): AggregationResult {
-    return when (metric) {
-        NutritionRecord.TRANS_FAT_TOTAL -> aggregateNutritionTransFatTotal(
+    val dataTypeName = recordType.simpleName!!.replace("Record", "")
+    val recordTypeMetrics = metrics.filter { it.dataTypeName == dataTypeName }.toSet()
+
+    if (recordTypeMetrics.isEmpty()) {
+        return emptyAggregationResult()
+    }
+
+    return when (recordType) {
+        BloodPressureRecord::class -> aggregateBloodPressure(
+            recordTypeMetrics,
             timeRangeFilter,
             dataOriginFilter
         )
 
-        BloodPressureRecord.DIASTOLIC_AVG -> TODO(reason = "b/326414908")
-        BloodPressureRecord.DIASTOLIC_MAX -> TODO(reason = "b/326414908")
-        BloodPressureRecord.DIASTOLIC_MIN -> TODO(reason = "b/326414908")
-        BloodPressureRecord.SYSTOLIC_AVG -> TODO(reason = "b/326414908")
-        BloodPressureRecord.SYSTOLIC_MAX -> TODO(reason = "b/326414908")
-        BloodPressureRecord.SYSTOLIC_MIN -> TODO(reason = "b/326414908")
-        CyclingPedalingCadenceRecord.RPM_AVG -> TODO(reason = "b/326414908")
-        CyclingPedalingCadenceRecord.RPM_MAX -> TODO(reason = "b/326414908")
-        CyclingPedalingCadenceRecord.RPM_MIN -> TODO(reason = "b/326414908")
-        SpeedRecord.SPEED_AVG -> TODO(reason = "b/326414908")
-        SpeedRecord.SPEED_MAX -> TODO(reason = "b/326414908")
-        SpeedRecord.SPEED_MIN -> TODO(reason = "b/326414908")
-        StepsCadenceRecord.RATE_AVG -> TODO(reason = "b/326414908")
-        StepsCadenceRecord.RATE_MAX -> TODO(reason = "b/326414908")
-        StepsCadenceRecord.RATE_MIN -> TODO(reason = "b/326414908")
-        else -> error("Invalid fallback aggregation type ${metric.metricKey}")
+        CyclingPedalingCadenceRecord::class -> TODO(reason = "b/326414908")
+        NutritionRecord::class -> aggregateNutritionTransFatTotal(timeRangeFilter, dataOriginFilter)
+        SpeedRecord::class -> TODO(reason = "b/326414908")
+        StepsCadenceRecord::class -> TODO(reason = "b/326414908")
+        else -> error("Invalid record type for aggregation fallback: $recordType")
     }
 }
 
@@ -165,7 +175,7 @@
 internal fun emptyAggregationResult() =
     AggregationResult(longValues = mapOf(), doubleValues = mapOf(), dataOrigins = setOf())
 
-internal data class AggregatedData<T>(
+class AggregatedData<T>(
     var value: T,
     var dataOrigins: MutableSet<DataOrigin> = mutableSetOf()
 )
diff --git a/health/health-services-client/api/1.0.0-beta04.txt b/health/health-services-client/api/1.0.0-beta04.txt
index 92e1fab..b951dbb 100644
--- a/health/health-services-client/api/1.0.0-beta04.txt
+++ b/health/health-services-client/api/1.0.0-beta04.txt
@@ -2,7 +2,7 @@
 package androidx.health.services.client {
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface ExerciseClient {
-    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> addGoalToActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> addGoalToActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> clearUpdateCallbackAsync(androidx.health.services.client.ExerciseUpdateCallback callback);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> endExerciseAsync();
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> flushAsync();
@@ -13,7 +13,7 @@
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> overrideBatchingModesForActiveExerciseAsync(java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModes);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> pauseExerciseAsync();
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> prepareExerciseAsync(androidx.health.services.client.data.WarmUpConfig configuration);
-    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> removeGoalFromActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> removeGoalFromActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> resumeExerciseAsync();
     method public void setUpdateCallback(androidx.health.services.client.ExerciseUpdateCallback callback);
     method public void setUpdateCallback(java.util.concurrent.Executor executor, androidx.health.services.client.ExerciseUpdateCallback callback);
@@ -22,7 +22,7 @@
   }
 
   public final class ExerciseClientExtensionKt {
-    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? addGoalToActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
+    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? addGoalToActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? clearUpdateCallback(androidx.health.services.client.ExerciseClient, androidx.health.services.client.ExerciseUpdateCallback callback, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? endExercise(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? flush(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
@@ -33,14 +33,14 @@
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? overrideBatchingModesForActiveExercise(androidx.health.services.client.ExerciseClient, java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModes, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? pauseExercise(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? prepareExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.WarmUpConfig configuration, kotlin.coroutines.Continuation<? super kotlin.Unit>) throws androidx.health.services.client.HealthServicesException;
-    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? removeGoalFromActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
+    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? removeGoalFromActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? resumeExercise(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? startExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseConfig configuration, kotlin.coroutines.Continuation<? super kotlin.Unit>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? updateExerciseTypeConfig(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseTypeConfig exerciseTypeConfig, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
   }
 
   public interface ExerciseUpdateCallback {
-    method public void onAvailabilityChanged(androidx.health.services.client.data.DataType<?,?> dataType, androidx.health.services.client.data.Availability availability);
+    method public void onAvailabilityChanged(androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.data.Availability availability);
     method public void onExerciseUpdateReceived(androidx.health.services.client.data.ExerciseUpdate update);
     method public void onLapSummaryReceived(androidx.health.services.client.data.ExerciseLapSummary lapSummary);
     method public void onRegistered();
@@ -70,7 +70,7 @@
   }
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface MeasureCallback {
-    method public void onAvailabilityChanged(androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.data.Availability availability);
+    method public void onAvailabilityChanged(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.data.Availability availability);
     method public void onDataReceived(androidx.health.services.client.data.DataPointContainer data);
     method public default void onRegistered();
     method public default void onRegistrationFailed(Throwable throwable);
@@ -78,14 +78,14 @@
 
   public interface MeasureClient {
     method public com.google.common.util.concurrent.ListenableFuture<androidx.health.services.client.data.MeasureCapabilities> getCapabilitiesAsync();
-    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.MeasureCallback callback);
-    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<?,?> dataType, java.util.concurrent.Executor executor, androidx.health.services.client.MeasureCallback callback);
-    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> unregisterMeasureCallbackAsync(androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.MeasureCallback callback);
+    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.MeasureCallback callback);
+    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, java.util.concurrent.Executor executor, androidx.health.services.client.MeasureCallback callback);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> unregisterMeasureCallbackAsync(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.MeasureCallback callback);
   }
 
   public final class MeasureClientExtensionKt {
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? getCapabilities(androidx.health.services.client.MeasureClient, kotlin.coroutines.Continuation<? super androidx.health.services.client.data.MeasureCapabilities>) throws androidx.health.services.client.HealthServicesException;
-    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? unregisterMeasureCallback(androidx.health.services.client.MeasureClient, androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.MeasureCallback callback, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
+    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? unregisterMeasureCallback(androidx.health.services.client.MeasureClient, androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.MeasureCallback callback, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
   }
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface PassiveListenerCallback {
@@ -187,20 +187,20 @@
   }
 
   public final class DataPointContainer {
-    ctor public DataPointContainer(java.util.List<? extends androidx.health.services.client.data.DataPoint<?>> dataPointList);
-    ctor public DataPointContainer(java.util.Map<androidx.health.services.client.data.DataType<?,?>,? extends java.util.List<? extends androidx.health.services.client.data.DataPoint<?>>> dataPoints);
-    method public java.util.List<androidx.health.services.client.data.CumulativeDataPoint<?>> getCumulativeDataPoints();
+    ctor public DataPointContainer(java.util.List<? extends androidx.health.services.client.data.DataPoint<? extends java.lang.Object!>> dataPointList);
+    ctor public DataPointContainer(java.util.Map<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>,? extends java.util.List<? extends androidx.health.services.client.data.DataPoint<? extends java.lang.Object!>>> dataPoints);
+    method public java.util.List<androidx.health.services.client.data.CumulativeDataPoint<? extends java.lang.Object!>> getCumulativeDataPoints();
     method public <T extends java.lang.Number, D extends androidx.health.services.client.data.DataPoint<T>> D? getData(androidx.health.services.client.data.AggregateDataType<T,D> type);
     method public <T, D extends androidx.health.services.client.data.DataPoint<T>> java.util.List<D> getData(androidx.health.services.client.data.DeltaDataType<T,D> type);
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getDataTypes();
-    method public java.util.List<androidx.health.services.client.data.IntervalDataPoint<?>> getIntervalDataPoints();
-    method public java.util.List<androidx.health.services.client.data.SampleDataPoint<?>> getSampleDataPoints();
-    method public java.util.List<androidx.health.services.client.data.StatisticalDataPoint<?>> getStatisticalDataPoints();
-    property public final java.util.List<androidx.health.services.client.data.CumulativeDataPoint<?>> cumulativeDataPoints;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> dataTypes;
-    property public final java.util.List<androidx.health.services.client.data.IntervalDataPoint<?>> intervalDataPoints;
-    property public final java.util.List<androidx.health.services.client.data.SampleDataPoint<?>> sampleDataPoints;
-    property public final java.util.List<androidx.health.services.client.data.StatisticalDataPoint<?>> statisticalDataPoints;
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getDataTypes();
+    method public java.util.List<androidx.health.services.client.data.IntervalDataPoint<? extends java.lang.Object!>> getIntervalDataPoints();
+    method public java.util.List<androidx.health.services.client.data.SampleDataPoint<? extends java.lang.Object!>> getSampleDataPoints();
+    method public java.util.List<androidx.health.services.client.data.StatisticalDataPoint<? extends java.lang.Object!>> getStatisticalDataPoints();
+    property public final java.util.List<androidx.health.services.client.data.CumulativeDataPoint<? extends java.lang.Object!>> cumulativeDataPoints;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes;
+    property public final java.util.List<androidx.health.services.client.data.IntervalDataPoint<? extends java.lang.Object!>> intervalDataPoints;
+    property public final java.util.List<androidx.health.services.client.data.SampleDataPoint<? extends java.lang.Object!>> sampleDataPoints;
+    property public final java.util.List<androidx.health.services.client.data.StatisticalDataPoint<? extends java.lang.Object!>> statisticalDataPoints;
   }
 
   public abstract class DataType<T, D extends androidx.health.services.client.data.DataPoint<T>> {
@@ -331,13 +331,13 @@
   }
 
   public final class ExerciseConfig {
-    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters);
-    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig);
-    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig, optional java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides);
+    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters);
+    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig);
+    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig, optional java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides);
     method public static androidx.health.services.client.data.ExerciseConfig.Builder builder(androidx.health.services.client.data.ExerciseType exerciseType);
     method public java.util.Set<androidx.health.services.client.data.BatchingMode> getBatchingModeOverrides();
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getDataTypes();
-    method public java.util.List<androidx.health.services.client.data.ExerciseGoal<?>> getExerciseGoals();
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getDataTypes();
+    method public java.util.List<androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> getExerciseGoals();
     method public android.os.Bundle getExerciseParams();
     method public androidx.health.services.client.data.ExerciseType getExerciseType();
     method public androidx.health.services.client.data.ExerciseTypeConfig? getExerciseTypeConfig();
@@ -345,8 +345,8 @@
     method public boolean isAutoPauseAndResumeEnabled();
     method public boolean isGpsEnabled();
     property public final java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> dataTypes;
-    property public final java.util.List<androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes;
+    property public final java.util.List<androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals;
     property public final android.os.Bundle exerciseParams;
     property public final androidx.health.services.client.data.ExerciseType exerciseType;
     property public final androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig;
@@ -361,8 +361,8 @@
     ctor public ExerciseConfig.Builder(androidx.health.services.client.data.ExerciseType exerciseType);
     method public androidx.health.services.client.data.ExerciseConfig build();
     method public androidx.health.services.client.data.ExerciseConfig.Builder setBatchingModeOverrides(java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides);
-    method public androidx.health.services.client.data.ExerciseConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
-    method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseGoals(java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals);
+    method public androidx.health.services.client.data.ExerciseConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes);
+    method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseGoals(java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals);
     method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseParams(android.os.Bundle exerciseParams);
     method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseTypeConfig(androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig);
     method public androidx.health.services.client.data.ExerciseConfig.Builder setIsAutoPauseAndResumeEnabled(boolean isAutoPauseAndResumeEnabled);
@@ -375,25 +375,25 @@
   }
 
   public final class ExerciseGoal<T extends java.lang.Number> implements android.os.Parcelable {
-    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition, T period);
+    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition, T period);
     method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestoneGoalWithUpdatedThreshold(androidx.health.services.client.data.ExerciseGoal<T> goal, T newThreshold);
-    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition);
+    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition);
     method public int describeContents();
-    method public androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> getDataTypeCondition();
+    method public androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> getDataTypeCondition();
     method public androidx.health.services.client.data.ExerciseGoalType getExerciseGoalType();
     method public T? getPeriod();
     method public void writeToParcel(android.os.Parcel dest, int flags);
-    property public final androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> dataTypeCondition;
+    property public final androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> dataTypeCondition;
     property public final androidx.health.services.client.data.ExerciseGoalType exerciseGoalType;
     property public final T? period;
-    field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.ExerciseGoal<?>> CREATOR;
+    field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> CREATOR;
     field public static final androidx.health.services.client.data.ExerciseGoal.Companion Companion;
   }
 
   public static final class ExerciseGoal.Companion {
-    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition, T period);
+    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition, T period);
     method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestoneGoalWithUpdatedThreshold(androidx.health.services.client.data.ExerciseGoal<T> goal, T newThreshold);
-    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition);
+    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition);
   }
 
   public final class ExerciseGoalType {
@@ -576,14 +576,14 @@
   }
 
   public final class ExerciseTypeCapabilities {
-    ctor public ExerciseTypeCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> supportedDataTypes, java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals, java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones, boolean supportsAutoPauseAndResume);
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getSupportedDataTypes();
-    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedGoals();
-    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedMilestones();
+    ctor public ExerciseTypeCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypes, java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals, java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones, boolean supportsAutoPauseAndResume);
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypes();
+    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedGoals();
+    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedMilestones();
     method public boolean getSupportsAutoPauseAndResume();
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> supportedDataTypes;
-    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals;
-    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypes;
+    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals;
+    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones;
     property public final boolean supportsAutoPauseAndResume;
   }
 
@@ -595,8 +595,8 @@
   }
 
   public final class ExerciseUpdate {
-    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.IntervalDataPoint<?> dataPoint);
-    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.SampleDataPoint<?> dataPoint);
+    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.IntervalDataPoint<? extends java.lang.Object!> dataPoint);
+    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.SampleDataPoint<? extends java.lang.Object!> dataPoint);
     method public androidx.health.services.client.data.ExerciseUpdate.ActiveDurationCheckpoint? getActiveDurationCheckpoint();
     method public androidx.health.services.client.data.ExerciseConfig? getExerciseConfig();
     method public androidx.health.services.client.data.ExerciseStateInfo getExerciseStateInfo();
@@ -755,9 +755,9 @@
   }
 
   public final class MeasureCapabilities {
-    ctor public MeasureCapabilities(java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<?,?>> supportedDataTypesMeasure);
-    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> getSupportedDataTypesMeasure();
-    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> supportedDataTypesMeasure;
+    ctor public MeasureCapabilities(java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesMeasure);
+    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypesMeasure();
+    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesMeasure;
   }
 
   public final class MilestoneMarkerSummary {
@@ -775,20 +775,20 @@
   }
 
   public final class PassiveGoal {
-    ctor public PassiveGoal(androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,?>> dataTypeCondition);
-    method public androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,?>> getDataTypeCondition();
-    property public final androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,?>> dataTypeCondition;
+    ctor public PassiveGoal(androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,? extends java.lang.Object!>> dataTypeCondition);
+    method public androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,? extends java.lang.Object!>> getDataTypeCondition();
+    property public final androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,? extends java.lang.Object!>> dataTypeCondition;
   }
 
   public final class PassiveListenerConfig {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldUserActivityInfoBeRequested, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<?,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldUserActivityInfoBeRequested, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
     method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
-    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
+    method public java.util.Set<androidx.health.services.client.data.DataType<?,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
     method public boolean getShouldUserActivityInfoBeRequested();
     property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<?,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
     property public final boolean shouldUserActivityInfoBeRequested;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -798,7 +798,7 @@
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldUserActivityInfoBeRequested(boolean shouldUserActivityInfoBeRequested);
   }
@@ -808,13 +808,13 @@
   }
 
   public final class PassiveMonitoringCapabilities {
-    ctor public PassiveMonitoringCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveMonitoring, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> supportedHealthEventTypes, java.util.Set<androidx.health.services.client.data.UserActivityState> supportedUserActivityStates);
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getSupportedDataTypesPassiveGoals();
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getSupportedDataTypesPassiveMonitoring();
+    ctor public PassiveMonitoringCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveMonitoring, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> supportedHealthEventTypes, java.util.Set<androidx.health.services.client.data.UserActivityState> supportedUserActivityStates);
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypesPassiveGoals();
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypesPassiveMonitoring();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getSupportedHealthEventTypes();
     method public java.util.Set<androidx.health.services.client.data.UserActivityState> getSupportedUserActivityStates();
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveGoals;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveMonitoring;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveGoals;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveMonitoring;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> supportedHealthEventTypes;
     property public final java.util.Set<androidx.health.services.client.data.UserActivityState> supportedUserActivityStates;
   }
@@ -899,10 +899,10 @@
   }
 
   public final class WarmUpConfig {
-    ctor public WarmUpConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<?,?>> dataTypes);
-    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> getDataTypes();
+    ctor public WarmUpConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes);
+    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> getDataTypes();
     method public androidx.health.services.client.data.ExerciseType getExerciseType();
-    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> dataTypes;
+    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes;
     property public final androidx.health.services.client.data.ExerciseType exerciseType;
   }
 
diff --git a/health/health-services-client/api/restricted_1.0.0-beta04.txt b/health/health-services-client/api/restricted_1.0.0-beta04.txt
index 92e1fab..b951dbb 100644
--- a/health/health-services-client/api/restricted_1.0.0-beta04.txt
+++ b/health/health-services-client/api/restricted_1.0.0-beta04.txt
@@ -2,7 +2,7 @@
 package androidx.health.services.client {
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface ExerciseClient {
-    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> addGoalToActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> addGoalToActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> clearUpdateCallbackAsync(androidx.health.services.client.ExerciseUpdateCallback callback);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> endExerciseAsync();
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> flushAsync();
@@ -13,7 +13,7 @@
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> overrideBatchingModesForActiveExerciseAsync(java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModes);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> pauseExerciseAsync();
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> prepareExerciseAsync(androidx.health.services.client.data.WarmUpConfig configuration);
-    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> removeGoalFromActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> removeGoalFromActiveExerciseAsync(androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal);
     method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> resumeExerciseAsync();
     method public void setUpdateCallback(androidx.health.services.client.ExerciseUpdateCallback callback);
     method public void setUpdateCallback(java.util.concurrent.Executor executor, androidx.health.services.client.ExerciseUpdateCallback callback);
@@ -22,7 +22,7 @@
   }
 
   public final class ExerciseClientExtensionKt {
-    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? addGoalToActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
+    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? addGoalToActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? clearUpdateCallback(androidx.health.services.client.ExerciseClient, androidx.health.services.client.ExerciseUpdateCallback callback, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? endExercise(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? flush(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
@@ -33,14 +33,14 @@
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? overrideBatchingModesForActiveExercise(androidx.health.services.client.ExerciseClient, java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModes, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? pauseExercise(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? prepareExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.WarmUpConfig configuration, kotlin.coroutines.Continuation<? super kotlin.Unit>) throws androidx.health.services.client.HealthServicesException;
-    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? removeGoalFromActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<?> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
+    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? removeGoalFromActiveExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!> exerciseGoal, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? resumeExercise(androidx.health.services.client.ExerciseClient, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? startExercise(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseConfig configuration, kotlin.coroutines.Continuation<? super kotlin.Unit>) throws androidx.health.services.client.HealthServicesException;
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? updateExerciseTypeConfig(androidx.health.services.client.ExerciseClient, androidx.health.services.client.data.ExerciseTypeConfig exerciseTypeConfig, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
   }
 
   public interface ExerciseUpdateCallback {
-    method public void onAvailabilityChanged(androidx.health.services.client.data.DataType<?,?> dataType, androidx.health.services.client.data.Availability availability);
+    method public void onAvailabilityChanged(androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.data.Availability availability);
     method public void onExerciseUpdateReceived(androidx.health.services.client.data.ExerciseUpdate update);
     method public void onLapSummaryReceived(androidx.health.services.client.data.ExerciseLapSummary lapSummary);
     method public void onRegistered();
@@ -70,7 +70,7 @@
   }
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface MeasureCallback {
-    method public void onAvailabilityChanged(androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.data.Availability availability);
+    method public void onAvailabilityChanged(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.data.Availability availability);
     method public void onDataReceived(androidx.health.services.client.data.DataPointContainer data);
     method public default void onRegistered();
     method public default void onRegistrationFailed(Throwable throwable);
@@ -78,14 +78,14 @@
 
   public interface MeasureClient {
     method public com.google.common.util.concurrent.ListenableFuture<androidx.health.services.client.data.MeasureCapabilities> getCapabilitiesAsync();
-    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.MeasureCallback callback);
-    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<?,?> dataType, java.util.concurrent.Executor executor, androidx.health.services.client.MeasureCallback callback);
-    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> unregisterMeasureCallbackAsync(androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.MeasureCallback callback);
+    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.MeasureCallback callback);
+    method public void registerMeasureCallback(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, java.util.concurrent.Executor executor, androidx.health.services.client.MeasureCallback callback);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void> unregisterMeasureCallbackAsync(androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.MeasureCallback callback);
   }
 
   public final class MeasureClientExtensionKt {
     method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? getCapabilities(androidx.health.services.client.MeasureClient, kotlin.coroutines.Continuation<? super androidx.health.services.client.data.MeasureCapabilities>) throws androidx.health.services.client.HealthServicesException;
-    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? unregisterMeasureCallback(androidx.health.services.client.MeasureClient, androidx.health.services.client.data.DeltaDataType<?,?> dataType, androidx.health.services.client.MeasureCallback callback, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
+    method @kotlin.jvm.Throws(exceptionClasses=HealthServicesException::class) public static suspend Object? unregisterMeasureCallback(androidx.health.services.client.MeasureClient, androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!> dataType, androidx.health.services.client.MeasureCallback callback, kotlin.coroutines.Continuation<? super java.lang.Void>) throws androidx.health.services.client.HealthServicesException;
   }
 
   @kotlin.jvm.JvmDefaultWithCompatibility public interface PassiveListenerCallback {
@@ -187,20 +187,20 @@
   }
 
   public final class DataPointContainer {
-    ctor public DataPointContainer(java.util.List<? extends androidx.health.services.client.data.DataPoint<?>> dataPointList);
-    ctor public DataPointContainer(java.util.Map<androidx.health.services.client.data.DataType<?,?>,? extends java.util.List<? extends androidx.health.services.client.data.DataPoint<?>>> dataPoints);
-    method public java.util.List<androidx.health.services.client.data.CumulativeDataPoint<?>> getCumulativeDataPoints();
+    ctor public DataPointContainer(java.util.List<? extends androidx.health.services.client.data.DataPoint<? extends java.lang.Object!>> dataPointList);
+    ctor public DataPointContainer(java.util.Map<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>,? extends java.util.List<? extends androidx.health.services.client.data.DataPoint<? extends java.lang.Object!>>> dataPoints);
+    method public java.util.List<androidx.health.services.client.data.CumulativeDataPoint<? extends java.lang.Object!>> getCumulativeDataPoints();
     method public <T extends java.lang.Number, D extends androidx.health.services.client.data.DataPoint<T>> D? getData(androidx.health.services.client.data.AggregateDataType<T,D> type);
     method public <T, D extends androidx.health.services.client.data.DataPoint<T>> java.util.List<D> getData(androidx.health.services.client.data.DeltaDataType<T,D> type);
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getDataTypes();
-    method public java.util.List<androidx.health.services.client.data.IntervalDataPoint<?>> getIntervalDataPoints();
-    method public java.util.List<androidx.health.services.client.data.SampleDataPoint<?>> getSampleDataPoints();
-    method public java.util.List<androidx.health.services.client.data.StatisticalDataPoint<?>> getStatisticalDataPoints();
-    property public final java.util.List<androidx.health.services.client.data.CumulativeDataPoint<?>> cumulativeDataPoints;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> dataTypes;
-    property public final java.util.List<androidx.health.services.client.data.IntervalDataPoint<?>> intervalDataPoints;
-    property public final java.util.List<androidx.health.services.client.data.SampleDataPoint<?>> sampleDataPoints;
-    property public final java.util.List<androidx.health.services.client.data.StatisticalDataPoint<?>> statisticalDataPoints;
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getDataTypes();
+    method public java.util.List<androidx.health.services.client.data.IntervalDataPoint<? extends java.lang.Object!>> getIntervalDataPoints();
+    method public java.util.List<androidx.health.services.client.data.SampleDataPoint<? extends java.lang.Object!>> getSampleDataPoints();
+    method public java.util.List<androidx.health.services.client.data.StatisticalDataPoint<? extends java.lang.Object!>> getStatisticalDataPoints();
+    property public final java.util.List<androidx.health.services.client.data.CumulativeDataPoint<? extends java.lang.Object!>> cumulativeDataPoints;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes;
+    property public final java.util.List<androidx.health.services.client.data.IntervalDataPoint<? extends java.lang.Object!>> intervalDataPoints;
+    property public final java.util.List<androidx.health.services.client.data.SampleDataPoint<? extends java.lang.Object!>> sampleDataPoints;
+    property public final java.util.List<androidx.health.services.client.data.StatisticalDataPoint<? extends java.lang.Object!>> statisticalDataPoints;
   }
 
   public abstract class DataType<T, D extends androidx.health.services.client.data.DataPoint<T>> {
@@ -331,13 +331,13 @@
   }
 
   public final class ExerciseConfig {
-    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters);
-    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig);
-    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig, optional java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides);
+    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters);
+    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig);
+    ctor public ExerciseConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes, boolean isAutoPauseAndResumeEnabled, boolean isGpsEnabled, optional java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals, optional android.os.Bundle exerciseParams, optional @FloatRange(from=0.0) float swimmingPoolLengthMeters, optional androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig, optional java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides);
     method public static androidx.health.services.client.data.ExerciseConfig.Builder builder(androidx.health.services.client.data.ExerciseType exerciseType);
     method public java.util.Set<androidx.health.services.client.data.BatchingMode> getBatchingModeOverrides();
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getDataTypes();
-    method public java.util.List<androidx.health.services.client.data.ExerciseGoal<?>> getExerciseGoals();
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getDataTypes();
+    method public java.util.List<androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> getExerciseGoals();
     method public android.os.Bundle getExerciseParams();
     method public androidx.health.services.client.data.ExerciseType getExerciseType();
     method public androidx.health.services.client.data.ExerciseTypeConfig? getExerciseTypeConfig();
@@ -345,8 +345,8 @@
     method public boolean isAutoPauseAndResumeEnabled();
     method public boolean isGpsEnabled();
     property public final java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> dataTypes;
-    property public final java.util.List<androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes;
+    property public final java.util.List<androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals;
     property public final android.os.Bundle exerciseParams;
     property public final androidx.health.services.client.data.ExerciseType exerciseType;
     property public final androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig;
@@ -361,8 +361,8 @@
     ctor public ExerciseConfig.Builder(androidx.health.services.client.data.ExerciseType exerciseType);
     method public androidx.health.services.client.data.ExerciseConfig build();
     method public androidx.health.services.client.data.ExerciseConfig.Builder setBatchingModeOverrides(java.util.Set<androidx.health.services.client.data.BatchingMode> batchingModeOverrides);
-    method public androidx.health.services.client.data.ExerciseConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
-    method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseGoals(java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<?>> exerciseGoals);
+    method public androidx.health.services.client.data.ExerciseConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes);
+    method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseGoals(java.util.List<? extends androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> exerciseGoals);
     method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseParams(android.os.Bundle exerciseParams);
     method public androidx.health.services.client.data.ExerciseConfig.Builder setExerciseTypeConfig(androidx.health.services.client.data.ExerciseTypeConfig? exerciseTypeConfig);
     method public androidx.health.services.client.data.ExerciseConfig.Builder setIsAutoPauseAndResumeEnabled(boolean isAutoPauseAndResumeEnabled);
@@ -375,25 +375,25 @@
   }
 
   public final class ExerciseGoal<T extends java.lang.Number> implements android.os.Parcelable {
-    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition, T period);
+    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition, T period);
     method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestoneGoalWithUpdatedThreshold(androidx.health.services.client.data.ExerciseGoal<T> goal, T newThreshold);
-    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition);
+    method public static <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition);
     method public int describeContents();
-    method public androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> getDataTypeCondition();
+    method public androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> getDataTypeCondition();
     method public androidx.health.services.client.data.ExerciseGoalType getExerciseGoalType();
     method public T? getPeriod();
     method public void writeToParcel(android.os.Parcel dest, int flags);
-    property public final androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> dataTypeCondition;
+    property public final androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> dataTypeCondition;
     property public final androidx.health.services.client.data.ExerciseGoalType exerciseGoalType;
     property public final T? period;
-    field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.ExerciseGoal<?>> CREATOR;
+    field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.ExerciseGoal<? extends java.lang.Object!>> CREATOR;
     field public static final androidx.health.services.client.data.ExerciseGoal.Companion Companion;
   }
 
   public static final class ExerciseGoal.Companion {
-    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition, T period);
+    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestone(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition, T period);
     method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createMilestoneGoalWithUpdatedThreshold(androidx.health.services.client.data.ExerciseGoal<T> goal, T newThreshold);
-    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,?>> condition);
+    method public <T extends java.lang.Number> androidx.health.services.client.data.ExerciseGoal<T> createOneTimeGoal(androidx.health.services.client.data.DataTypeCondition<T,androidx.health.services.client.data.AggregateDataType<T,? extends java.lang.Object!>> condition);
   }
 
   public final class ExerciseGoalType {
@@ -576,14 +576,14 @@
   }
 
   public final class ExerciseTypeCapabilities {
-    ctor public ExerciseTypeCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> supportedDataTypes, java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals, java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones, boolean supportsAutoPauseAndResume);
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getSupportedDataTypes();
-    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedGoals();
-    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedMilestones();
+    ctor public ExerciseTypeCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypes, java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals, java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,? extends java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones, boolean supportsAutoPauseAndResume);
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypes();
+    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedGoals();
+    method public java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> getSupportedMilestones();
     method public boolean getSupportsAutoPauseAndResume();
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> supportedDataTypes;
-    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals;
-    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<?,?>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypes;
+    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedGoals;
+    property public final java.util.Map<androidx.health.services.client.data.AggregateDataType<? extends java.lang.Object!,? extends java.lang.Object!>,java.util.Set<androidx.health.services.client.data.ComparisonType>> supportedMilestones;
     property public final boolean supportsAutoPauseAndResume;
   }
 
@@ -595,8 +595,8 @@
   }
 
   public final class ExerciseUpdate {
-    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.IntervalDataPoint<?> dataPoint);
-    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.SampleDataPoint<?> dataPoint);
+    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.IntervalDataPoint<? extends java.lang.Object!> dataPoint);
+    method public java.time.Duration getActiveDurationAtDataPoint(androidx.health.services.client.data.SampleDataPoint<? extends java.lang.Object!> dataPoint);
     method public androidx.health.services.client.data.ExerciseUpdate.ActiveDurationCheckpoint? getActiveDurationCheckpoint();
     method public androidx.health.services.client.data.ExerciseConfig? getExerciseConfig();
     method public androidx.health.services.client.data.ExerciseStateInfo getExerciseStateInfo();
@@ -755,9 +755,9 @@
   }
 
   public final class MeasureCapabilities {
-    ctor public MeasureCapabilities(java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<?,?>> supportedDataTypesMeasure);
-    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> getSupportedDataTypesMeasure();
-    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> supportedDataTypesMeasure;
+    ctor public MeasureCapabilities(java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesMeasure);
+    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypesMeasure();
+    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesMeasure;
   }
 
   public final class MilestoneMarkerSummary {
@@ -775,20 +775,20 @@
   }
 
   public final class PassiveGoal {
-    ctor public PassiveGoal(androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,?>> dataTypeCondition);
-    method public androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,?>> getDataTypeCondition();
-    property public final androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,?>> dataTypeCondition;
+    ctor public PassiveGoal(androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,? extends java.lang.Object!>> dataTypeCondition);
+    method public androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,? extends java.lang.Object!>> getDataTypeCondition();
+    property public final androidx.health.services.client.data.DataTypeCondition<? extends java.lang.Number,? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Number,? extends java.lang.Object!>> dataTypeCondition;
   }
 
   public final class PassiveListenerConfig {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldUserActivityInfoBeRequested, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<?,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldUserActivityInfoBeRequested, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
     method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
-    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
+    method public java.util.Set<androidx.health.services.client.data.DataType<?,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
     method public boolean getShouldUserActivityInfoBeRequested();
     property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<?,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
     property public final boolean shouldUserActivityInfoBeRequested;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -798,7 +798,7 @@
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldUserActivityInfoBeRequested(boolean shouldUserActivityInfoBeRequested);
   }
@@ -808,13 +808,13 @@
   }
 
   public final class PassiveMonitoringCapabilities {
-    ctor public PassiveMonitoringCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveMonitoring, java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> supportedHealthEventTypes, java.util.Set<androidx.health.services.client.data.UserActivityState> supportedUserActivityStates);
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getSupportedDataTypesPassiveGoals();
-    method public java.util.Set<androidx.health.services.client.data.DataType<?,?>> getSupportedDataTypesPassiveMonitoring();
+    ctor public PassiveMonitoringCapabilities(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveMonitoring, java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> supportedHealthEventTypes, java.util.Set<androidx.health.services.client.data.UserActivityState> supportedUserActivityStates);
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypesPassiveGoals();
+    method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> getSupportedDataTypesPassiveMonitoring();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getSupportedHealthEventTypes();
     method public java.util.Set<androidx.health.services.client.data.UserActivityState> getSupportedUserActivityStates();
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveGoals;
-    property public final java.util.Set<androidx.health.services.client.data.DataType<?,?>> supportedDataTypesPassiveMonitoring;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveGoals;
+    property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object!,? extends java.lang.Object!>> supportedDataTypesPassiveMonitoring;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> supportedHealthEventTypes;
     property public final java.util.Set<androidx.health.services.client.data.UserActivityState> supportedUserActivityStates;
   }
@@ -899,10 +899,10 @@
   }
 
   public final class WarmUpConfig {
-    ctor public WarmUpConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<?,?>> dataTypes);
-    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> getDataTypes();
+    ctor public WarmUpConfig(androidx.health.services.client.data.ExerciseType exerciseType, java.util.Set<? extends androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes);
+    method public java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> getDataTypes();
     method public androidx.health.services.client.data.ExerciseType getExerciseType();
-    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<?,?>> dataTypes;
+    property public final java.util.Set<androidx.health.services.client.data.DeltaDataType<? extends java.lang.Object!,? extends java.lang.Object!>> dataTypes;
     property public final androidx.health.services.client.data.ExerciseType exerciseType;
   }
 
diff --git a/inspection/inspection/api/1.0.0-beta01.txt b/inspection/inspection/api/1.0.0-beta01.txt
index ef4a1f0..aa56b98 100644
--- a/inspection/inspection/api/1.0.0-beta01.txt
+++ b/inspection/inspection/api/1.0.0-beta01.txt
@@ -3,8 +3,8 @@
 
   public interface ArtTooling {
     method public <T> java.util.List<T!> findInstances(Class<T!>);
-    method public void registerEntryHook(Class<?>, String, androidx.inspection.ArtTooling.EntryHook);
-    method public <T> void registerExitHook(Class<?>, String, androidx.inspection.ArtTooling.ExitHook<T!>);
+    method public void registerEntryHook(Class<? extends java.lang.Object!>, String, androidx.inspection.ArtTooling.EntryHook);
+    method public <T> void registerExitHook(Class<? extends java.lang.Object!>, String, androidx.inspection.ArtTooling.ExitHook<T!>);
   }
 
   public static interface ArtTooling.EntryHook {
diff --git a/inspection/inspection/api/restricted_1.0.0-beta01.txt b/inspection/inspection/api/restricted_1.0.0-beta01.txt
index ef4a1f0..aa56b98 100644
--- a/inspection/inspection/api/restricted_1.0.0-beta01.txt
+++ b/inspection/inspection/api/restricted_1.0.0-beta01.txt
@@ -3,8 +3,8 @@
 
   public interface ArtTooling {
     method public <T> java.util.List<T!> findInstances(Class<T!>);
-    method public void registerEntryHook(Class<?>, String, androidx.inspection.ArtTooling.EntryHook);
-    method public <T> void registerExitHook(Class<?>, String, androidx.inspection.ArtTooling.ExitHook<T!>);
+    method public void registerEntryHook(Class<? extends java.lang.Object!>, String, androidx.inspection.ArtTooling.EntryHook);
+    method public <T> void registerExitHook(Class<? extends java.lang.Object!>, String, androidx.inspection.ArtTooling.ExitHook<T!>);
   }
 
   public static interface ArtTooling.EntryHook {
diff --git a/libraryversions.toml b/libraryversions.toml
index 3b1e422..86a1ff5 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -153,8 +153,8 @@
 VIEWPAGER = "1.1.0-alpha02"
 VIEWPAGER2 = "1.2.0-alpha01"
 WEAR = "1.4.0-alpha01"
-WEAR_COMPOSE = "1.4.0-beta01"
-WEAR_COMPOSE_MATERIAL3 = "1.0.0-alpha23"
+WEAR_COMPOSE = "1.4.0-beta02"
+WEAR_COMPOSE_MATERIAL3 = "1.0.0-alpha24"
 WEAR_CORE = "1.0.0-alpha01"
 WEAR_INPUT = "1.2.0-alpha03"
 WEAR_INPUT_TESTING = "1.2.0-alpha03"
diff --git a/lifecycle/lifecycle-process/api/2.8.0-beta01.txt b/lifecycle/lifecycle-process/api/2.8.0-beta01.txt
index 891c9c6..07d5eec 100644
--- a/lifecycle/lifecycle-process/api/2.8.0-beta01.txt
+++ b/lifecycle/lifecycle-process/api/2.8.0-beta01.txt
@@ -4,7 +4,7 @@
   public final class ProcessLifecycleInitializer implements androidx.startup.Initializer<androidx.lifecycle.LifecycleOwner> {
     ctor public ProcessLifecycleInitializer();
     method public androidx.lifecycle.LifecycleOwner create(android.content.Context context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>>> dependencies();
   }
 
   public final class ProcessLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
diff --git a/lifecycle/lifecycle-process/api/restricted_2.8.0-beta01.txt b/lifecycle/lifecycle-process/api/restricted_2.8.0-beta01.txt
index 891c9c6..07d5eec 100644
--- a/lifecycle/lifecycle-process/api/restricted_2.8.0-beta01.txt
+++ b/lifecycle/lifecycle-process/api/restricted_2.8.0-beta01.txt
@@ -4,7 +4,7 @@
   public final class ProcessLifecycleInitializer implements androidx.startup.Initializer<androidx.lifecycle.LifecycleOwner> {
     ctor public ProcessLifecycleInitializer();
     method public androidx.lifecycle.LifecycleOwner create(android.content.Context context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>>> dependencies();
   }
 
   public final class ProcessLifecycleOwner implements androidx.lifecycle.LifecycleOwner {
diff --git a/loader/loader/api/1.1.0-rc01.txt b/loader/loader/api/1.1.0-rc01.txt
index 2eaaa68..4e2b4ed 100644
--- a/loader/loader/api/1.1.0-rc01.txt
+++ b/loader/loader/api/1.1.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.loader.app {
 
   public abstract class LoaderManager {
@@ -24,7 +24,7 @@
 
 package androidx.loader.content {
 
-  public abstract class AsyncTaskLoader<D> extends androidx.loader.content.Loader<D> {
+  public abstract class AsyncTaskLoader<D> extends androidx.loader.content.Loader<D!> {
     ctor public AsyncTaskLoader(android.content.Context);
     method public void cancelLoadInBackground();
     method protected java.util.concurrent.Executor getExecutor();
@@ -35,7 +35,7 @@
     method public void setUpdateThrottle(long);
   }
 
-  public class CursorLoader extends androidx.loader.content.AsyncTaskLoader<android.database.Cursor> {
+  public class CursorLoader extends androidx.loader.content.AsyncTaskLoader<android.database.Cursor!> {
     ctor public CursorLoader(android.content.Context);
     ctor public CursorLoader(android.content.Context, android.net.Uri, String![]?, String?, String![]?, String?);
     method public void deliverResult(android.database.Cursor!);
diff --git a/loader/loader/api/restricted_1.1.0-rc01.txt b/loader/loader/api/restricted_1.1.0-rc01.txt
index 2eaaa68..4e2b4ed 100644
--- a/loader/loader/api/restricted_1.1.0-rc01.txt
+++ b/loader/loader/api/restricted_1.1.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.loader.app {
 
   public abstract class LoaderManager {
@@ -24,7 +24,7 @@
 
 package androidx.loader.content {
 
-  public abstract class AsyncTaskLoader<D> extends androidx.loader.content.Loader<D> {
+  public abstract class AsyncTaskLoader<D> extends androidx.loader.content.Loader<D!> {
     ctor public AsyncTaskLoader(android.content.Context);
     method public void cancelLoadInBackground();
     method protected java.util.concurrent.Executor getExecutor();
@@ -35,7 +35,7 @@
     method public void setUpdateThrottle(long);
   }
 
-  public class CursorLoader extends androidx.loader.content.AsyncTaskLoader<android.database.Cursor> {
+  public class CursorLoader extends androidx.loader.content.AsyncTaskLoader<android.database.Cursor!> {
     ctor public CursorLoader(android.content.Context);
     ctor public CursorLoader(android.content.Context, android.net.Uri, String![]?, String?, String![]?, String?);
     method public void deliverResult(android.database.Cursor!);
diff --git a/media/media/api/1.7.0-beta01.txt b/media/media/api/1.7.0-beta01.txt
index 2509d03..a5bfe27 100644
--- a/media/media/api/1.7.0-beta01.txt
+++ b/media/media/api/1.7.0-beta01.txt
@@ -49,7 +49,7 @@
     ctor public MediaBrowserCompat.MediaItem(android.support.v4.media.MediaDescriptionCompat, int);
     method public int describeContents();
     method public static android.support.v4.media.MediaBrowserCompat.MediaItem! fromMediaItem(Object!);
-    method public static java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem!>! fromMediaItemList(java.util.List<?>!);
+    method public static java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem!>! fromMediaItemList(java.util.List<? extends java.lang.Object!>!);
     method public android.support.v4.media.MediaDescriptionCompat getDescription();
     method public int getFlags();
     method public String? getMediaId();
@@ -385,7 +385,7 @@
     ctor public MediaSessionCompat.QueueItem(android.support.v4.media.MediaDescriptionCompat!, long);
     method public int describeContents();
     method public static android.support.v4.media.session.MediaSessionCompat.QueueItem! fromQueueItem(Object!);
-    method public static java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem!>! fromQueueItemList(java.util.List<?>!);
+    method public static java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem!>! fromQueueItemList(java.util.List<? extends java.lang.Object!>!);
     method public android.support.v4.media.MediaDescriptionCompat! getDescription();
     method public long getQueueId();
     method public Object! getQueueItem();
@@ -691,7 +691,7 @@
     method public androidx.media.app.NotificationCompat.MediaStyle! setCancelButtonIntent(android.app.PendingIntent!);
     method public androidx.media.app.NotificationCompat.MediaStyle! setMediaSession(android.support.v4.media.session.MediaSessionCompat.Token!);
     method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public androidx.media.app.NotificationCompat.MediaStyle setRemotePlaybackInfo(CharSequence, @DrawableRes int, android.app.PendingIntent?);
-    method public androidx.media.app.NotificationCompat.MediaStyle! setShowActionsInCompactView(int...);
+    method public androidx.media.app.NotificationCompat.MediaStyle! setShowActionsInCompactView(int...!);
     method public androidx.media.app.NotificationCompat.MediaStyle! setShowCancelButton(boolean);
   }
 
diff --git a/media/media/api/restricted_1.7.0-beta01.txt b/media/media/api/restricted_1.7.0-beta01.txt
index fa7d4db..f510ecd 100644
--- a/media/media/api/restricted_1.7.0-beta01.txt
+++ b/media/media/api/restricted_1.7.0-beta01.txt
@@ -50,7 +50,7 @@
     ctor public MediaBrowserCompat.MediaItem(android.support.v4.media.MediaDescriptionCompat, int);
     method public int describeContents();
     method public static android.support.v4.media.MediaBrowserCompat.MediaItem! fromMediaItem(Object!);
-    method public static java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem!>! fromMediaItemList(java.util.List<?>!);
+    method public static java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem!>! fromMediaItemList(java.util.List<? extends java.lang.Object!>!);
     method public android.support.v4.media.MediaDescriptionCompat getDescription();
     method public int getFlags();
     method public String? getMediaId();
@@ -392,7 +392,7 @@
     ctor public MediaSessionCompat.QueueItem(android.support.v4.media.MediaDescriptionCompat!, long);
     method public int describeContents();
     method public static android.support.v4.media.session.MediaSessionCompat.QueueItem! fromQueueItem(Object!);
-    method public static java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem!>! fromQueueItemList(java.util.List<?>!);
+    method public static java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem!>! fromQueueItemList(java.util.List<? extends java.lang.Object!>!);
     method public android.support.v4.media.MediaDescriptionCompat! getDescription();
     method public long getQueueId();
     method public Object! getQueueItem();
@@ -731,7 +731,7 @@
     method public androidx.media.app.NotificationCompat.MediaStyle! setCancelButtonIntent(android.app.PendingIntent!);
     method public androidx.media.app.NotificationCompat.MediaStyle! setMediaSession(android.support.v4.media.session.MediaSessionCompat.Token!);
     method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public androidx.media.app.NotificationCompat.MediaStyle setRemotePlaybackInfo(CharSequence, @DrawableRes int, android.app.PendingIntent?);
-    method public androidx.media.app.NotificationCompat.MediaStyle! setShowActionsInCompactView(int...);
+    method public androidx.media.app.NotificationCompat.MediaStyle! setShowActionsInCompactView(int...!);
     method public androidx.media.app.NotificationCompat.MediaStyle! setShowCancelButton(boolean);
   }
 
diff --git a/navigation/navigation-common/api/2.7.0-beta02.txt b/navigation/navigation-common/api/2.7.0-beta02.txt
index 95166e9..8b9aeb5 100644
--- a/navigation/navigation-common/api/2.7.0-beta02.txt
+++ b/navigation/navigation-common/api/2.7.0-beta02.txt
@@ -59,11 +59,11 @@
 
   @androidx.navigation.NavDestinationDsl public final class NavActionBuilder {
     ctor public NavActionBuilder();
-    method public java.util.Map<java.lang.String,java.lang.Object> getDefaultArguments();
+    method public java.util.Map<java.lang.String,java.lang.Object?> getDefaultArguments();
     method public int getDestinationId();
     method public void navOptions(kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> optionsBuilder);
     method public void setDestinationId(int);
-    property public final java.util.Map<java.lang.String,java.lang.Object> defaultArguments;
+    property public final java.util.Map<java.lang.String,java.lang.Object?> defaultArguments;
     property public final int destinationId;
   }
 
@@ -79,13 +79,13 @@
 
   public final class NavArgument {
     method public Object? getDefaultValue();
-    method public androidx.navigation.NavType<java.lang.Object> getType();
+    method public androidx.navigation.NavType<java.lang.Object?> getType();
     method public boolean isDefaultValuePresent();
     method public boolean isNullable();
     property public final Object? defaultValue;
     property public final boolean isDefaultValuePresent;
     property public final boolean isNullable;
-    property public final androidx.navigation.NavType<java.lang.Object> type;
+    property public final androidx.navigation.NavType<java.lang.Object?> type;
   }
 
   public static final class NavArgument.Builder {
@@ -217,7 +217,7 @@
     method public boolean hasDeepLink(android.net.Uri deepLink);
     method public boolean hasDeepLink(androidx.navigation.NavDeepLinkRequest deepLinkRequest);
     method @CallSuper public void onInflate(android.content.Context context, android.util.AttributeSet attrs);
-    method protected static final <C> Class<? extends C> parseClassFromName(android.content.Context context, String name, Class<? extends C> expectedClassType);
+    method protected static final <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
     method public final void putAction(@IdRes int actionId, androidx.navigation.NavAction action);
     method public final void putAction(@IdRes int actionId, @IdRes int destId);
     method public final void removeAction(@IdRes int actionId);
@@ -241,7 +241,7 @@
 
   public static final class NavDestination.Companion {
     method public kotlin.sequences.Sequence<androidx.navigation.NavDestination> getHierarchy(androidx.navigation.NavDestination);
-    method protected <C> Class<? extends C> parseClassFromName(android.content.Context context, String name, Class<? extends C> expectedClassType);
+    method protected <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
   }
 
   @androidx.navigation.NavDestinationDsl public class NavDestinationBuilder<D extends androidx.navigation.NavDestination> {
@@ -278,7 +278,7 @@
     method public final void addAll(androidx.navigation.NavGraph other);
     method public final void addDestination(androidx.navigation.NavDestination node);
     method public final void addDestinations(androidx.navigation.NavDestination... nodes);
-    method public final void addDestinations(java.util.Collection<? extends androidx.navigation.NavDestination> nodes);
+    method public final void addDestinations(java.util.Collection<? extends androidx.navigation.NavDestination?> nodes);
     method public final void clear();
     method public final androidx.navigation.NavDestination? findNode(@IdRes int resId);
     method public final androidx.navigation.NavDestination? findNode(String? route);
@@ -408,18 +408,18 @@
     method public String serializeAsValue(T value);
     property public boolean isNullableAllowed;
     property public String name;
-    field public static final androidx.navigation.NavType<boolean[]> BoolArrayType;
+    field public static final androidx.navigation.NavType<boolean[]?> BoolArrayType;
     field public static final androidx.navigation.NavType<java.lang.Boolean> BoolType;
     field public static final androidx.navigation.NavType.Companion Companion;
-    field public static final androidx.navigation.NavType<float[]> FloatArrayType;
+    field public static final androidx.navigation.NavType<float[]?> FloatArrayType;
     field public static final androidx.navigation.NavType<java.lang.Float> FloatType;
-    field public static final androidx.navigation.NavType<int[]> IntArrayType;
+    field public static final androidx.navigation.NavType<int[]?> IntArrayType;
     field public static final androidx.navigation.NavType<java.lang.Integer> IntType;
-    field public static final androidx.navigation.NavType<long[]> LongArrayType;
+    field public static final androidx.navigation.NavType<long[]?> LongArrayType;
     field public static final androidx.navigation.NavType<java.lang.Long> LongType;
     field public static final androidx.navigation.NavType<java.lang.Integer> ReferenceType;
-    field public static final androidx.navigation.NavType<java.lang.String[]> StringArrayType;
-    field public static final androidx.navigation.NavType<java.lang.String> StringType;
+    field public static final androidx.navigation.NavType<java.lang.String[]?> StringArrayType;
+    field public static final androidx.navigation.NavType<java.lang.String?> StringType;
   }
 
   public static final class NavType.Companion {
@@ -431,11 +431,11 @@
     property public String name;
   }
 
-  public static final class NavType.ParcelableArrayType<D extends android.os.Parcelable> extends androidx.navigation.NavType<D[]> {
+  public static final class NavType.ParcelableArrayType<D extends android.os.Parcelable> extends androidx.navigation.NavType<D[]?> {
     ctor public NavType.ParcelableArrayType(Class<D> type);
-    method public D![]? get(android.os.Bundle bundle, String key);
-    method public D![] parseValue(String value);
-    method public void put(android.os.Bundle bundle, String key, D![]? value);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
     property public String name;
   }
 
@@ -447,11 +447,11 @@
     property public String name;
   }
 
-  public static final class NavType.SerializableArrayType<D extends java.io.Serializable> extends androidx.navigation.NavType<D[]> {
+  public static final class NavType.SerializableArrayType<D extends java.io.Serializable> extends androidx.navigation.NavType<D[]?> {
     ctor public NavType.SerializableArrayType(Class<D> type);
-    method public D![]? get(android.os.Bundle bundle, String key);
-    method public D![] parseValue(String value);
-    method public void put(android.os.Bundle bundle, String key, D![]? value);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
     property public String name;
   }
 
diff --git a/navigation/navigation-common/api/restricted_2.7.0-beta02.txt b/navigation/navigation-common/api/restricted_2.7.0-beta02.txt
index 95166e9..8b9aeb5 100644
--- a/navigation/navigation-common/api/restricted_2.7.0-beta02.txt
+++ b/navigation/navigation-common/api/restricted_2.7.0-beta02.txt
@@ -59,11 +59,11 @@
 
   @androidx.navigation.NavDestinationDsl public final class NavActionBuilder {
     ctor public NavActionBuilder();
-    method public java.util.Map<java.lang.String,java.lang.Object> getDefaultArguments();
+    method public java.util.Map<java.lang.String,java.lang.Object?> getDefaultArguments();
     method public int getDestinationId();
     method public void navOptions(kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> optionsBuilder);
     method public void setDestinationId(int);
-    property public final java.util.Map<java.lang.String,java.lang.Object> defaultArguments;
+    property public final java.util.Map<java.lang.String,java.lang.Object?> defaultArguments;
     property public final int destinationId;
   }
 
@@ -79,13 +79,13 @@
 
   public final class NavArgument {
     method public Object? getDefaultValue();
-    method public androidx.navigation.NavType<java.lang.Object> getType();
+    method public androidx.navigation.NavType<java.lang.Object?> getType();
     method public boolean isDefaultValuePresent();
     method public boolean isNullable();
     property public final Object? defaultValue;
     property public final boolean isDefaultValuePresent;
     property public final boolean isNullable;
-    property public final androidx.navigation.NavType<java.lang.Object> type;
+    property public final androidx.navigation.NavType<java.lang.Object?> type;
   }
 
   public static final class NavArgument.Builder {
@@ -217,7 +217,7 @@
     method public boolean hasDeepLink(android.net.Uri deepLink);
     method public boolean hasDeepLink(androidx.navigation.NavDeepLinkRequest deepLinkRequest);
     method @CallSuper public void onInflate(android.content.Context context, android.util.AttributeSet attrs);
-    method protected static final <C> Class<? extends C> parseClassFromName(android.content.Context context, String name, Class<? extends C> expectedClassType);
+    method protected static final <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
     method public final void putAction(@IdRes int actionId, androidx.navigation.NavAction action);
     method public final void putAction(@IdRes int actionId, @IdRes int destId);
     method public final void removeAction(@IdRes int actionId);
@@ -241,7 +241,7 @@
 
   public static final class NavDestination.Companion {
     method public kotlin.sequences.Sequence<androidx.navigation.NavDestination> getHierarchy(androidx.navigation.NavDestination);
-    method protected <C> Class<? extends C> parseClassFromName(android.content.Context context, String name, Class<? extends C> expectedClassType);
+    method protected <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
   }
 
   @androidx.navigation.NavDestinationDsl public class NavDestinationBuilder<D extends androidx.navigation.NavDestination> {
@@ -278,7 +278,7 @@
     method public final void addAll(androidx.navigation.NavGraph other);
     method public final void addDestination(androidx.navigation.NavDestination node);
     method public final void addDestinations(androidx.navigation.NavDestination... nodes);
-    method public final void addDestinations(java.util.Collection<? extends androidx.navigation.NavDestination> nodes);
+    method public final void addDestinations(java.util.Collection<? extends androidx.navigation.NavDestination?> nodes);
     method public final void clear();
     method public final androidx.navigation.NavDestination? findNode(@IdRes int resId);
     method public final androidx.navigation.NavDestination? findNode(String? route);
@@ -408,18 +408,18 @@
     method public String serializeAsValue(T value);
     property public boolean isNullableAllowed;
     property public String name;
-    field public static final androidx.navigation.NavType<boolean[]> BoolArrayType;
+    field public static final androidx.navigation.NavType<boolean[]?> BoolArrayType;
     field public static final androidx.navigation.NavType<java.lang.Boolean> BoolType;
     field public static final androidx.navigation.NavType.Companion Companion;
-    field public static final androidx.navigation.NavType<float[]> FloatArrayType;
+    field public static final androidx.navigation.NavType<float[]?> FloatArrayType;
     field public static final androidx.navigation.NavType<java.lang.Float> FloatType;
-    field public static final androidx.navigation.NavType<int[]> IntArrayType;
+    field public static final androidx.navigation.NavType<int[]?> IntArrayType;
     field public static final androidx.navigation.NavType<java.lang.Integer> IntType;
-    field public static final androidx.navigation.NavType<long[]> LongArrayType;
+    field public static final androidx.navigation.NavType<long[]?> LongArrayType;
     field public static final androidx.navigation.NavType<java.lang.Long> LongType;
     field public static final androidx.navigation.NavType<java.lang.Integer> ReferenceType;
-    field public static final androidx.navigation.NavType<java.lang.String[]> StringArrayType;
-    field public static final androidx.navigation.NavType<java.lang.String> StringType;
+    field public static final androidx.navigation.NavType<java.lang.String[]?> StringArrayType;
+    field public static final androidx.navigation.NavType<java.lang.String?> StringType;
   }
 
   public static final class NavType.Companion {
@@ -431,11 +431,11 @@
     property public String name;
   }
 
-  public static final class NavType.ParcelableArrayType<D extends android.os.Parcelable> extends androidx.navigation.NavType<D[]> {
+  public static final class NavType.ParcelableArrayType<D extends android.os.Parcelable> extends androidx.navigation.NavType<D[]?> {
     ctor public NavType.ParcelableArrayType(Class<D> type);
-    method public D![]? get(android.os.Bundle bundle, String key);
-    method public D![] parseValue(String value);
-    method public void put(android.os.Bundle bundle, String key, D![]? value);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
     property public String name;
   }
 
@@ -447,11 +447,11 @@
     property public String name;
   }
 
-  public static final class NavType.SerializableArrayType<D extends java.io.Serializable> extends androidx.navigation.NavType<D[]> {
+  public static final class NavType.SerializableArrayType<D extends java.io.Serializable> extends androidx.navigation.NavType<D[]?> {
     ctor public NavType.SerializableArrayType(Class<D> type);
-    method public D![]? get(android.os.Bundle bundle, String key);
-    method public D![] parseValue(String value);
-    method public void put(android.os.Bundle bundle, String key, D![]? value);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
     property public String name;
   }
 
diff --git a/navigation/navigation-compose/api/2.7.0-beta02.txt b/navigation/navigation-compose/api/2.7.0-beta02.txt
index 6794d3e..b8f2e78 100644
--- a/navigation/navigation-compose/api/2.7.0-beta02.txt
+++ b/navigation/navigation-compose/api/2.7.0-beta02.txt
@@ -33,14 +33,14 @@
 
   public final class NavGraphBuilderKt {
     method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
-    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
     method public static void dialog(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
-    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
     method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
   }
 
   public final class NavHostControllerKt {
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
     method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberNavController(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>... navigators);
   }
 
diff --git a/navigation/navigation-compose/api/restricted_2.7.0-beta02.txt b/navigation/navigation-compose/api/restricted_2.7.0-beta02.txt
index 6794d3e..b8f2e78 100644
--- a/navigation/navigation-compose/api/restricted_2.7.0-beta02.txt
+++ b/navigation/navigation-compose/api/restricted_2.7.0-beta02.txt
@@ -33,14 +33,14 @@
 
   public final class NavGraphBuilderKt {
     method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
-    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
     method public static void dialog(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
-    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
     method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
   }
 
   public final class NavHostControllerKt {
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
     method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberNavController(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>... navigators);
   }
 
diff --git a/navigation/navigation-runtime/api/2.7.0-beta02.txt b/navigation/navigation-runtime/api/2.7.0-beta02.txt
index 52e2671..f3513c2 100644
--- a/navigation/navigation-runtime/api/2.7.0-beta02.txt
+++ b/navigation/navigation-runtime/api/2.7.0-beta02.txt
@@ -172,7 +172,7 @@
     method public androidx.core.app.TaskStackBuilder createTaskStackBuilder();
     method public androidx.navigation.NavDeepLinkBuilder setArguments(android.os.Bundle? args);
     method public androidx.navigation.NavDeepLinkBuilder setComponentName(android.content.ComponentName componentName);
-    method public androidx.navigation.NavDeepLinkBuilder setComponentName(Class<? extends android.app.Activity> activityClass);
+    method public androidx.navigation.NavDeepLinkBuilder setComponentName(Class<? extends android.app.Activity?> activityClass);
     method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId);
     method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId, optional android.os.Bundle? args);
     method public androidx.navigation.NavDeepLinkBuilder setDestination(String destRoute);
diff --git a/navigation/navigation-runtime/api/restricted_2.7.0-beta02.txt b/navigation/navigation-runtime/api/restricted_2.7.0-beta02.txt
index 52e2671..f3513c2 100644
--- a/navigation/navigation-runtime/api/restricted_2.7.0-beta02.txt
+++ b/navigation/navigation-runtime/api/restricted_2.7.0-beta02.txt
@@ -172,7 +172,7 @@
     method public androidx.core.app.TaskStackBuilder createTaskStackBuilder();
     method public androidx.navigation.NavDeepLinkBuilder setArguments(android.os.Bundle? args);
     method public androidx.navigation.NavDeepLinkBuilder setComponentName(android.content.ComponentName componentName);
-    method public androidx.navigation.NavDeepLinkBuilder setComponentName(Class<? extends android.app.Activity> activityClass);
+    method public androidx.navigation.NavDeepLinkBuilder setComponentName(Class<? extends android.app.Activity?> activityClass);
     method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId);
     method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId, optional android.os.Bundle? args);
     method public androidx.navigation.NavDeepLinkBuilder setDestination(String destRoute);
diff --git a/paging/paging-common/api/3.3.0-beta02.txt b/paging/paging-common/api/3.3.0-beta02.txt
index e372b42..3d1ee0d 100644
--- a/paging/paging-common/api/3.3.0-beta02.txt
+++ b/paging/paging-common/api/3.3.0-beta02.txt
@@ -200,7 +200,7 @@
     method @Deprecated public abstract void detach();
     method @Deprecated public T? get(int index);
     method @Deprecated public final androidx.paging.PagedList.Config getConfig();
-    method @Deprecated public final androidx.paging.DataSource<?,T> getDataSource();
+    method @Deprecated public final androidx.paging.DataSource<? extends java.lang.Object!,T> getDataSource();
     method @Deprecated public abstract Object? getLastKey();
     method @Deprecated public final int getLoadedCount();
     method @Deprecated public final int getPositionOffset();
@@ -213,7 +213,7 @@
     method @Deprecated public void retry();
     method @Deprecated public final java.util.List<T> snapshot();
     property @Deprecated public final androidx.paging.PagedList.Config config;
-    property @Deprecated public final androidx.paging.DataSource<?,T> dataSource;
+    property @Deprecated public final androidx.paging.DataSource<? extends java.lang.Object!,T> dataSource;
     property @Deprecated public abstract boolean isDetached;
     property @Deprecated public boolean isImmutable;
     property @Deprecated public abstract Object? lastKey;
@@ -402,18 +402,18 @@
 
   public final class PagingDataTransforms {
     method @CheckResult public static <T> androidx.paging.PagingData<T> filter(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> predicate);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T> androidx.paging.PagingData<T> filter(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Boolean>,?> predicate);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T> androidx.paging.PagingData<T> filter(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Boolean>,? extends java.lang.Object?> predicate);
     method @CheckResult public static <T, R> androidx.paging.PagingData<R> flatMap(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function1<? super T,? extends java.lang.Iterable<? extends R>> transform);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> flatMap(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Iterable<? extends R>>,?> transform);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> flatMap(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Iterable<? extends R>>,? extends java.lang.Object?> transform);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertFooterItem(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, T item);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertFooterItem(androidx.paging.PagingData<T>, T item);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertHeaderItem(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, T item);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertHeaderItem(androidx.paging.PagingData<T>, T item);
     method @CheckResult public static <R, T extends R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function2<? super T?,? super T?,? extends R?> generator);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, kotlin.jvm.functions.Function3<? super T?,? super T?,? super kotlin.coroutines.Continuation<? super R?>,?> generator);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, kotlin.jvm.functions.Function3<? super T?,? super T?,? super kotlin.coroutines.Continuation<? super R?>,? extends java.lang.Object?> generator);
     method @CheckResult public static <R, T extends R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function2<? super T?,? super T?,? extends R?> generator);
     method @CheckResult public static <T, R> androidx.paging.PagingData<R> map(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function1<? super T,? extends R> transform);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> map(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> transform);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> map(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,? extends java.lang.Object?> transform);
   }
 
   public abstract class PagingSource<Key, Value> {
diff --git a/paging/paging-common/api/restricted_3.3.0-beta02.txt b/paging/paging-common/api/restricted_3.3.0-beta02.txt
index e372b42..3d1ee0d 100644
--- a/paging/paging-common/api/restricted_3.3.0-beta02.txt
+++ b/paging/paging-common/api/restricted_3.3.0-beta02.txt
@@ -200,7 +200,7 @@
     method @Deprecated public abstract void detach();
     method @Deprecated public T? get(int index);
     method @Deprecated public final androidx.paging.PagedList.Config getConfig();
-    method @Deprecated public final androidx.paging.DataSource<?,T> getDataSource();
+    method @Deprecated public final androidx.paging.DataSource<? extends java.lang.Object!,T> getDataSource();
     method @Deprecated public abstract Object? getLastKey();
     method @Deprecated public final int getLoadedCount();
     method @Deprecated public final int getPositionOffset();
@@ -213,7 +213,7 @@
     method @Deprecated public void retry();
     method @Deprecated public final java.util.List<T> snapshot();
     property @Deprecated public final androidx.paging.PagedList.Config config;
-    property @Deprecated public final androidx.paging.DataSource<?,T> dataSource;
+    property @Deprecated public final androidx.paging.DataSource<? extends java.lang.Object!,T> dataSource;
     property @Deprecated public abstract boolean isDetached;
     property @Deprecated public boolean isImmutable;
     property @Deprecated public abstract Object? lastKey;
@@ -402,18 +402,18 @@
 
   public final class PagingDataTransforms {
     method @CheckResult public static <T> androidx.paging.PagingData<T> filter(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> predicate);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T> androidx.paging.PagingData<T> filter(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Boolean>,?> predicate);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T> androidx.paging.PagingData<T> filter(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Boolean>,? extends java.lang.Object?> predicate);
     method @CheckResult public static <T, R> androidx.paging.PagingData<R> flatMap(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function1<? super T,? extends java.lang.Iterable<? extends R>> transform);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> flatMap(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Iterable<? extends R>>,?> transform);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> flatMap(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super java.lang.Iterable<? extends R>>,? extends java.lang.Object?> transform);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertFooterItem(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, T item);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertFooterItem(androidx.paging.PagingData<T>, T item);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertHeaderItem(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, T item);
     method @CheckResult public static <T> androidx.paging.PagingData<T> insertHeaderItem(androidx.paging.PagingData<T>, T item);
     method @CheckResult public static <R, T extends R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function2<? super T?,? super T?,? extends R?> generator);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, kotlin.jvm.functions.Function3<? super T?,? super T?,? super kotlin.coroutines.Continuation<? super R?>,?> generator);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T extends R, R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, optional androidx.paging.TerminalSeparatorType terminalSeparatorType, kotlin.jvm.functions.Function3<? super T?,? super T?,? super kotlin.coroutines.Continuation<? super R?>,? extends java.lang.Object?> generator);
     method @CheckResult public static <R, T extends R> androidx.paging.PagingData<R> insertSeparators(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function2<? super T?,? super T?,? extends R?> generator);
     method @CheckResult public static <T, R> androidx.paging.PagingData<R> map(androidx.paging.PagingData<T>, java.util.concurrent.Executor executor, kotlin.jvm.functions.Function1<? super T,? extends R> transform);
-    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> map(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> transform);
+    method @CheckResult @kotlin.jvm.JvmSynthetic public static <T, R> androidx.paging.PagingData<R> map(androidx.paging.PagingData<T>, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,? extends java.lang.Object?> transform);
   }
 
   public abstract class PagingSource<Key, Value> {
diff --git a/paging/paging-runtime/api/3.3.0-beta02.txt b/paging/paging-runtime/api/3.3.0-beta02.txt
index 2392a1c..0f200ba 100644
--- a/paging/paging-runtime/api/3.3.0-beta02.txt
+++ b/paging/paging-runtime/api/3.3.0-beta02.txt
@@ -3,7 +3,7 @@
 
   @Deprecated public class AsyncPagedListDiffer<T> {
     ctor @Deprecated public AsyncPagedListDiffer(androidx.recyclerview.widget.ListUpdateCallback listUpdateCallback, androidx.recyclerview.widget.AsyncDifferConfig<T> config);
-    ctor @Deprecated public AsyncPagedListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter<?> adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback);
+    ctor @Deprecated public AsyncPagedListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter<? extends java.lang.Object!> adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback);
     method @Deprecated public void addLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
     method @Deprecated public void addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener<T> listener);
     method @Deprecated public final void addPagedListListener(kotlin.jvm.functions.Function2<? super androidx.paging.PagedList<T>?,? super androidx.paging.PagedList<T>?,kotlin.Unit> callback);
@@ -94,9 +94,9 @@
     method @Deprecated public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
     method @Deprecated public void submitList(androidx.paging.PagedList<T>? pagedList);
     method @Deprecated public void submitList(androidx.paging.PagedList<T>? pagedList, Runnable? commitCallback);
-    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<?> footer);
-    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<?> header);
-    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<?> header, androidx.paging.LoadStateAdapter<?> footer);
+    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
+    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header);
+    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header, androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
     property @Deprecated public androidx.paging.PagedList<T>? currentList;
   }
 
@@ -122,9 +122,9 @@
     method public final androidx.paging.ItemSnapshotList<T> snapshot();
     method public final void submitData(androidx.lifecycle.Lifecycle lifecycle, androidx.paging.PagingData<T> pagingData);
     method public final suspend Object? submitData(androidx.paging.PagingData<T> pagingData, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<?> footer);
-    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<?> header);
-    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<?> header, androidx.paging.LoadStateAdapter<?> footer);
+    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
+    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header);
+    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header, androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
     property public final kotlinx.coroutines.flow.Flow<androidx.paging.CombinedLoadStates> loadStateFlow;
     property public final kotlinx.coroutines.flow.Flow<kotlin.Unit> onPagesUpdatedFlow;
   }
diff --git a/paging/paging-runtime/api/restricted_3.3.0-beta02.txt b/paging/paging-runtime/api/restricted_3.3.0-beta02.txt
index 2392a1c..0f200ba 100644
--- a/paging/paging-runtime/api/restricted_3.3.0-beta02.txt
+++ b/paging/paging-runtime/api/restricted_3.3.0-beta02.txt
@@ -3,7 +3,7 @@
 
   @Deprecated public class AsyncPagedListDiffer<T> {
     ctor @Deprecated public AsyncPagedListDiffer(androidx.recyclerview.widget.ListUpdateCallback listUpdateCallback, androidx.recyclerview.widget.AsyncDifferConfig<T> config);
-    ctor @Deprecated public AsyncPagedListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter<?> adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback);
+    ctor @Deprecated public AsyncPagedListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter<? extends java.lang.Object!> adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T> diffCallback);
     method @Deprecated public void addLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
     method @Deprecated public void addPagedListListener(androidx.paging.AsyncPagedListDiffer.PagedListListener<T> listener);
     method @Deprecated public final void addPagedListListener(kotlin.jvm.functions.Function2<? super androidx.paging.PagedList<T>?,? super androidx.paging.PagedList<T>?,kotlin.Unit> callback);
@@ -94,9 +94,9 @@
     method @Deprecated public void removeLoadStateListener(kotlin.jvm.functions.Function2<? super androidx.paging.LoadType,? super androidx.paging.LoadState,kotlin.Unit> listener);
     method @Deprecated public void submitList(androidx.paging.PagedList<T>? pagedList);
     method @Deprecated public void submitList(androidx.paging.PagedList<T>? pagedList, Runnable? commitCallback);
-    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<?> footer);
-    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<?> header);
-    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<?> header, androidx.paging.LoadStateAdapter<?> footer);
+    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
+    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header);
+    method @Deprecated public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header, androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
     property @Deprecated public androidx.paging.PagedList<T>? currentList;
   }
 
@@ -122,9 +122,9 @@
     method public final androidx.paging.ItemSnapshotList<T> snapshot();
     method public final void submitData(androidx.lifecycle.Lifecycle lifecycle, androidx.paging.PagingData<T> pagingData);
     method public final suspend Object? submitData(androidx.paging.PagingData<T> pagingData, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<?> footer);
-    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<?> header);
-    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<?> header, androidx.paging.LoadStateAdapter<?> footer);
+    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
+    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeader(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header);
+    method public final androidx.recyclerview.widget.ConcatAdapter withLoadStateHeaderAndFooter(androidx.paging.LoadStateAdapter<? extends java.lang.Object!> header, androidx.paging.LoadStateAdapter<? extends java.lang.Object!> footer);
     property public final kotlinx.coroutines.flow.Flow<androidx.paging.CombinedLoadStates> loadStateFlow;
     property public final kotlinx.coroutines.flow.Flow<kotlin.Unit> onPagesUpdatedFlow;
   }
diff --git a/preference/preference/api/1.2.0-beta02.txt b/preference/preference/api/1.2.0-beta02.txt
index 7ece022..b2b39c8 100644
--- a/preference/preference/api/1.2.0-beta02.txt
+++ b/preference/preference/api/1.2.0-beta02.txt
@@ -2,17 +2,17 @@
 package androidx.preference {
 
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
+    ctor public CheckBoxPreference(android.content.Context);
+    ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?);
     ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?, int);
     ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?);
-    ctor public CheckBoxPreference(android.content.Context);
   }
 
   public abstract class DialogPreference extends androidx.preference.Preference {
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?);
     ctor public DialogPreference(android.content.Context);
+    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public android.graphics.drawable.Drawable? getDialogIcon();
     method public int getDialogLayoutResource();
     method public CharSequence? getDialogMessage();
@@ -22,14 +22,14 @@
     method public void setDialogIcon(android.graphics.drawable.Drawable?);
     method public void setDialogIcon(int);
     method public void setDialogLayoutResource(int);
-    method public void setDialogMessage(CharSequence?);
     method public void setDialogMessage(int);
-    method public void setDialogTitle(CharSequence?);
+    method public void setDialogMessage(CharSequence?);
     method public void setDialogTitle(int);
-    method public void setNegativeButtonText(CharSequence?);
+    method public void setDialogTitle(CharSequence?);
     method public void setNegativeButtonText(int);
-    method public void setPositiveButtonText(CharSequence?);
+    method public void setNegativeButtonText(CharSequence?);
     method public void setPositiveButtonText(int);
+    method public void setPositiveButtonText(CharSequence?);
   }
 
   public static interface DialogPreference.TargetFragment {
@@ -45,10 +45,10 @@
   }
 
   public class EditTextPreference extends androidx.preference.DialogPreference {
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?);
     ctor public EditTextPreference(android.content.Context);
+    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public String? getText();
     method public void setOnBindEditTextListener(androidx.preference.EditTextPreference.OnBindEditTextListener?);
     method public void setText(String?);
@@ -58,7 +58,7 @@
     method public void onBindEditText(android.widget.EditText);
   }
 
-  public static final class EditTextPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.EditTextPreference> {
+  public static final class EditTextPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.EditTextPreference!> {
     method public static androidx.preference.EditTextPreference.SimpleSummaryProvider getInstance();
     method public CharSequence? provideSummary(androidx.preference.EditTextPreference);
   }
@@ -77,24 +77,24 @@
   }
 
   public class ListPreference extends androidx.preference.DialogPreference {
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet?);
     ctor public ListPreference(android.content.Context);
+    ctor public ListPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public int findIndexOfValue(String!);
     method public CharSequence![]! getEntries();
     method public CharSequence? getEntry();
     method public CharSequence![]! getEntryValues();
     method public String! getValue();
-    method public void setEntries(CharSequence![]!);
     method public void setEntries(@ArrayRes int);
-    method public void setEntryValues(CharSequence![]!);
+    method public void setEntries(CharSequence![]!);
     method public void setEntryValues(@ArrayRes int);
+    method public void setEntryValues(CharSequence![]!);
     method public void setValue(String!);
     method public void setValueIndex(int);
   }
 
-  public static final class ListPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.ListPreference> {
+  public static final class ListPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.ListPreference!> {
     method public static androidx.preference.ListPreference.SimpleSummaryProvider getInstance();
     method public CharSequence? provideSummary(androidx.preference.ListPreference);
   }
@@ -113,19 +113,19 @@
   }
 
   public class MultiSelectListPreference extends androidx.preference.DialogPreference {
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?);
     ctor public MultiSelectListPreference(android.content.Context);
+    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public int findIndexOfValue(String!);
     method public CharSequence![]! getEntries();
     method public CharSequence![]! getEntryValues();
     method protected boolean[]! getSelectedItems();
     method public java.util.Set<java.lang.String!>! getValues();
-    method public void setEntries(CharSequence![]!);
     method public void setEntries(@ArrayRes int);
-    method public void setEntryValues(CharSequence![]!);
+    method public void setEntries(CharSequence![]!);
     method public void setEntryValues(@ArrayRes int);
+    method public void setEntryValues(CharSequence![]!);
     method public void setValues(java.util.Set<java.lang.String!>!);
   }
 
@@ -142,11 +142,11 @@
     method public void onDialogClosed(boolean);
   }
 
-  public class Preference implements java.lang.Comparable<androidx.preference.Preference> {
-    ctor public Preference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public Preference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public Preference(android.content.Context, android.util.AttributeSet?);
+  public class Preference implements java.lang.Comparable<androidx.preference.Preference!> {
     ctor public Preference(android.content.Context);
+    ctor public Preference(android.content.Context, android.util.AttributeSet?);
+    ctor public Preference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public Preference(android.content.Context, android.util.AttributeSet?, int, int);
     method public boolean callChangeListener(Object!);
     method public int compareTo(androidx.preference.Preference);
     method protected <T extends androidx.preference.Preference> T? findPreferenceInHierarchy(String);
@@ -230,11 +230,11 @@
     method public void setSelectable(boolean);
     method public void setShouldDisableView(boolean);
     method public void setSingleLineTitle(boolean);
-    method public void setSummary(CharSequence?);
     method public void setSummary(int);
+    method public void setSummary(CharSequence?);
     method public final void setSummaryProvider(androidx.preference.Preference.SummaryProvider?);
-    method public void setTitle(CharSequence?);
     method public void setTitle(int);
+    method public void setTitle(CharSequence?);
     method public void setViewId(int);
     method public final void setVisible(boolean);
     method public void setWidgetLayoutResource(int);
@@ -262,10 +262,10 @@
   }
 
   public class PreferenceCategory extends androidx.preference.PreferenceGroup {
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int);
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?);
     ctor public PreferenceCategory(android.content.Context);
+    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?);
+    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int);
+    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int, int);
   }
 
   public abstract class PreferenceDataStore {
@@ -331,8 +331,8 @@
     method @Deprecated public void onStart();
     method @Deprecated public void onStop();
     method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
-    method @Deprecated public void scrollToPreference(String);
     method @Deprecated public void scrollToPreference(androidx.preference.Preference);
+    method @Deprecated public void scrollToPreference(String);
     method @Deprecated public void setDivider(android.graphics.drawable.Drawable?);
     method @Deprecated public void setDividerHeight(int);
     method @Deprecated public void setPreferenceScreen(androidx.preference.PreferenceScreen!);
@@ -366,8 +366,8 @@
     method public void onDisplayPreferenceDialog(androidx.preference.Preference);
     method public void onNavigateToScreen(androidx.preference.PreferenceScreen);
     method public boolean onPreferenceTreeClick(androidx.preference.Preference);
-    method public void scrollToPreference(String);
     method public void scrollToPreference(androidx.preference.Preference);
+    method public void scrollToPreference(String);
     method public void setDivider(android.graphics.drawable.Drawable?);
     method public void setDividerHeight(int);
     method public void setPreferenceScreen(androidx.preference.PreferenceScreen!);
@@ -388,9 +388,9 @@
   }
 
   public abstract class PreferenceGroup extends androidx.preference.Preference {
-    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int);
     ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?);
+    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int);
+    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int, int);
     method public void addItemFromInflater(androidx.preference.Preference);
     method public boolean addPreference(androidx.preference.Preference);
     method protected void dispatchRestoreInstanceState(android.os.Bundle);
@@ -410,8 +410,8 @@
   }
 
   public static interface PreferenceGroup.PreferencePositionCallback {
-    method public int getPreferenceAdapterPosition(String);
     method public int getPreferenceAdapterPosition(androidx.preference.Preference);
+    method public int getPreferenceAdapterPosition(String);
   }
 
   public abstract class PreferenceHeaderFragmentCompat extends androidx.fragment.app.Fragment implements androidx.preference.PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
@@ -493,10 +493,10 @@
   }
 
   public class SeekBarPreference extends androidx.preference.Preference {
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?);
     ctor public SeekBarPreference(android.content.Context);
+    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public int getMax();
     method public int getMin();
     method public final int getSeekBarIncrement();
@@ -514,46 +514,46 @@
   }
 
   public class SwitchPreference extends androidx.preference.TwoStatePreference {
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?);
     ctor public SwitchPreference(android.content.Context);
+    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public CharSequence? getSwitchTextOff();
     method public CharSequence? getSwitchTextOn();
-    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOff(int);
-    method public void setSwitchTextOn(CharSequence?);
+    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOn(int);
+    method public void setSwitchTextOn(CharSequence?);
   }
 
   public class SwitchPreferenceCompat extends androidx.preference.TwoStatePreference {
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int);
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?);
     ctor public SwitchPreferenceCompat(android.content.Context);
+    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?);
+    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int);
+    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int, int);
     method public CharSequence? getSwitchTextOff();
     method public CharSequence? getSwitchTextOn();
-    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOff(int);
-    method public void setSwitchTextOn(CharSequence?);
+    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOn(int);
+    method public void setSwitchTextOn(CharSequence?);
   }
 
   public abstract class TwoStatePreference extends androidx.preference.Preference {
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?);
     ctor public TwoStatePreference(android.content.Context);
+    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?);
+    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public boolean getDisableDependentsState();
     method public CharSequence? getSummaryOff();
     method public CharSequence? getSummaryOn();
     method public boolean isChecked();
     method public void setChecked(boolean);
     method public void setDisableDependentsState(boolean);
-    method public void setSummaryOff(CharSequence?);
     method public void setSummaryOff(int);
-    method public void setSummaryOn(CharSequence?);
+    method public void setSummaryOff(CharSequence?);
     method public void setSummaryOn(int);
+    method public void setSummaryOn(CharSequence?);
     method protected void syncSummaryView(androidx.preference.PreferenceViewHolder);
     field protected boolean mChecked;
   }
diff --git a/preference/preference/api/restricted_1.2.0-beta02.txt b/preference/preference/api/restricted_1.2.0-beta02.txt
index 6d18c3a..17f8f417 100644
--- a/preference/preference/api/restricted_1.2.0-beta02.txt
+++ b/preference/preference/api/restricted_1.2.0-beta02.txt
@@ -2,17 +2,17 @@
 package androidx.preference {
 
   public class CheckBoxPreference extends androidx.preference.TwoStatePreference {
+    ctor public CheckBoxPreference(android.content.Context);
+    ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?);
     ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?, int);
     ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public CheckBoxPreference(android.content.Context, android.util.AttributeSet?);
-    ctor public CheckBoxPreference(android.content.Context);
   }
 
   public abstract class DialogPreference extends androidx.preference.Preference {
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?);
     ctor public DialogPreference(android.content.Context);
+    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public DialogPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public android.graphics.drawable.Drawable? getDialogIcon();
     method public int getDialogLayoutResource();
     method public CharSequence? getDialogMessage();
@@ -22,14 +22,14 @@
     method public void setDialogIcon(android.graphics.drawable.Drawable?);
     method public void setDialogIcon(int);
     method public void setDialogLayoutResource(int);
-    method public void setDialogMessage(CharSequence?);
     method public void setDialogMessage(int);
-    method public void setDialogTitle(CharSequence?);
+    method public void setDialogMessage(CharSequence?);
     method public void setDialogTitle(int);
-    method public void setNegativeButtonText(CharSequence?);
+    method public void setDialogTitle(CharSequence?);
     method public void setNegativeButtonText(int);
-    method public void setPositiveButtonText(CharSequence?);
+    method public void setNegativeButtonText(CharSequence?);
     method public void setPositiveButtonText(int);
+    method public void setPositiveButtonText(CharSequence?);
   }
 
   public static interface DialogPreference.TargetFragment {
@@ -45,10 +45,10 @@
   }
 
   public class EditTextPreference extends androidx.preference.DialogPreference {
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?);
     ctor public EditTextPreference(android.content.Context);
+    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public EditTextPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public String? getText();
     method public void setOnBindEditTextListener(androidx.preference.EditTextPreference.OnBindEditTextListener?);
     method public void setText(String?);
@@ -58,7 +58,7 @@
     method public void onBindEditText(android.widget.EditText);
   }
 
-  public static final class EditTextPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.EditTextPreference> {
+  public static final class EditTextPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.EditTextPreference!> {
     method public static androidx.preference.EditTextPreference.SimpleSummaryProvider getInstance();
     method public CharSequence? provideSummary(androidx.preference.EditTextPreference);
   }
@@ -77,24 +77,24 @@
   }
 
   public class ListPreference extends androidx.preference.DialogPreference {
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public ListPreference(android.content.Context, android.util.AttributeSet?);
     ctor public ListPreference(android.content.Context);
+    ctor public ListPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public ListPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public int findIndexOfValue(String!);
     method public CharSequence![]! getEntries();
     method public CharSequence? getEntry();
     method public CharSequence![]! getEntryValues();
     method public String! getValue();
-    method public void setEntries(CharSequence![]!);
     method public void setEntries(@ArrayRes int);
-    method public void setEntryValues(CharSequence![]!);
+    method public void setEntries(CharSequence![]!);
     method public void setEntryValues(@ArrayRes int);
+    method public void setEntryValues(CharSequence![]!);
     method public void setValue(String!);
     method public void setValueIndex(int);
   }
 
-  public static final class ListPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.ListPreference> {
+  public static final class ListPreference.SimpleSummaryProvider implements androidx.preference.Preference.SummaryProvider<androidx.preference.ListPreference!> {
     method public static androidx.preference.ListPreference.SimpleSummaryProvider getInstance();
     method public CharSequence? provideSummary(androidx.preference.ListPreference);
   }
@@ -113,19 +113,19 @@
   }
 
   public class MultiSelectListPreference extends androidx.preference.DialogPreference {
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?);
     ctor public MultiSelectListPreference(android.content.Context);
+    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public MultiSelectListPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public int findIndexOfValue(String!);
     method public CharSequence![]! getEntries();
     method public CharSequence![]! getEntryValues();
     method protected boolean[]! getSelectedItems();
     method public java.util.Set<java.lang.String!>! getValues();
-    method public void setEntries(CharSequence![]!);
     method public void setEntries(@ArrayRes int);
-    method public void setEntryValues(CharSequence![]!);
+    method public void setEntries(CharSequence![]!);
     method public void setEntryValues(@ArrayRes int);
+    method public void setEntryValues(CharSequence![]!);
     method public void setValues(java.util.Set<java.lang.String!>!);
   }
 
@@ -142,11 +142,11 @@
     method public void onDialogClosed(boolean);
   }
 
-  public class Preference implements java.lang.Comparable<androidx.preference.Preference> {
-    ctor public Preference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public Preference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public Preference(android.content.Context, android.util.AttributeSet?);
+  public class Preference implements java.lang.Comparable<androidx.preference.Preference!> {
     ctor public Preference(android.content.Context);
+    ctor public Preference(android.content.Context, android.util.AttributeSet?);
+    ctor public Preference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public Preference(android.content.Context, android.util.AttributeSet?, int, int);
     method public boolean callChangeListener(Object!);
     method public int compareTo(androidx.preference.Preference);
     method protected <T extends androidx.preference.Preference> T? findPreferenceInHierarchy(String);
@@ -204,8 +204,8 @@
     method @Deprecated protected void onSetInitialValue(boolean, Object!);
     method protected void onSetInitialValue(Object?);
     method public android.os.Bundle? peekExtras();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void performClick(android.view.View);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void performClick();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void performClick(android.view.View);
     method protected boolean persistBoolean(boolean);
     method protected boolean persistFloat(float);
     method protected boolean persistInt(int);
@@ -233,11 +233,11 @@
     method public void setSelectable(boolean);
     method public void setShouldDisableView(boolean);
     method public void setSingleLineTitle(boolean);
-    method public void setSummary(CharSequence?);
     method public void setSummary(int);
+    method public void setSummary(CharSequence?);
     method public final void setSummaryProvider(androidx.preference.Preference.SummaryProvider?);
-    method public void setTitle(CharSequence?);
     method public void setTitle(int);
+    method public void setTitle(CharSequence?);
     method public void setViewId(int);
     method public final void setVisible(boolean);
     method public void setWidgetLayoutResource(int);
@@ -265,10 +265,10 @@
   }
 
   public class PreferenceCategory extends androidx.preference.PreferenceGroup {
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int);
-    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?);
     ctor public PreferenceCategory(android.content.Context);
+    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?);
+    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int);
+    ctor public PreferenceCategory(android.content.Context, android.util.AttributeSet?, int, int);
   }
 
   public abstract class PreferenceDataStore {
@@ -334,8 +334,8 @@
     method @Deprecated public void onStart();
     method @Deprecated public void onStop();
     method @Deprecated public void onViewCreated(android.view.View, android.os.Bundle?);
-    method @Deprecated public void scrollToPreference(String);
     method @Deprecated public void scrollToPreference(androidx.preference.Preference);
+    method @Deprecated public void scrollToPreference(String);
     method @Deprecated public void setDivider(android.graphics.drawable.Drawable?);
     method @Deprecated public void setDividerHeight(int);
     method @Deprecated public void setPreferenceScreen(androidx.preference.PreferenceScreen!);
@@ -372,8 +372,8 @@
     method public void onNavigateToScreen(androidx.preference.PreferenceScreen);
     method public boolean onPreferenceTreeClick(androidx.preference.Preference);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void onUnbindPreferences();
-    method public void scrollToPreference(String);
     method public void scrollToPreference(androidx.preference.Preference);
+    method public void scrollToPreference(String);
     method public void setDivider(android.graphics.drawable.Drawable?);
     method public void setDividerHeight(int);
     method public void setPreferenceScreen(androidx.preference.PreferenceScreen!);
@@ -394,9 +394,9 @@
   }
 
   public abstract class PreferenceGroup extends androidx.preference.Preference {
-    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int);
     ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?);
+    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int);
+    ctor public PreferenceGroup(android.content.Context, android.util.AttributeSet?, int, int);
     method public void addItemFromInflater(androidx.preference.Preference);
     method public boolean addPreference(androidx.preference.Preference);
     method protected void dispatchRestoreInstanceState(android.os.Bundle);
@@ -422,16 +422,16 @@
   }
 
   public static interface PreferenceGroup.PreferencePositionCallback {
-    method public int getPreferenceAdapterPosition(String);
     method public int getPreferenceAdapterPosition(androidx.preference.Preference);
+    method public int getPreferenceAdapterPosition(String);
   }
 
-  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceGroupAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.preference.PreferenceViewHolder> implements androidx.preference.PreferenceGroup.PreferencePositionCallback {
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceGroupAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.preference.PreferenceViewHolder!> implements androidx.preference.PreferenceGroup.PreferencePositionCallback {
     ctor public PreferenceGroupAdapter(androidx.preference.PreferenceGroup);
     method public androidx.preference.Preference? getItem(int);
     method public int getItemCount();
-    method public int getPreferenceAdapterPosition(String);
     method public int getPreferenceAdapterPosition(androidx.preference.Preference);
+    method public int getPreferenceAdapterPosition(String);
     method public void onBindViewHolder(androidx.preference.PreferenceViewHolder, int);
     method public androidx.preference.PreferenceViewHolder onCreateViewHolder(android.view.ViewGroup, int);
     method public void onPreferenceChange(androidx.preference.Preference);
@@ -525,10 +525,10 @@
   }
 
   public class SeekBarPreference extends androidx.preference.Preference {
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?);
     ctor public SeekBarPreference(android.content.Context);
+    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public SeekBarPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public int getMax();
     method public int getMin();
     method public final int getSeekBarIncrement();
@@ -546,46 +546,46 @@
   }
 
   public class SwitchPreference extends androidx.preference.TwoStatePreference {
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?);
     ctor public SwitchPreference(android.content.Context);
+    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?);
+    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public SwitchPreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public CharSequence? getSwitchTextOff();
     method public CharSequence? getSwitchTextOn();
-    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOff(int);
-    method public void setSwitchTextOn(CharSequence?);
+    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOn(int);
+    method public void setSwitchTextOn(CharSequence?);
   }
 
   public class SwitchPreferenceCompat extends androidx.preference.TwoStatePreference {
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int);
-    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?);
     ctor public SwitchPreferenceCompat(android.content.Context);
+    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?);
+    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int);
+    ctor public SwitchPreferenceCompat(android.content.Context, android.util.AttributeSet?, int, int);
     method public CharSequence? getSwitchTextOff();
     method public CharSequence? getSwitchTextOn();
-    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOff(int);
-    method public void setSwitchTextOn(CharSequence?);
+    method public void setSwitchTextOff(CharSequence?);
     method public void setSwitchTextOn(int);
+    method public void setSwitchTextOn(CharSequence?);
   }
 
   public abstract class TwoStatePreference extends androidx.preference.Preference {
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int, int);
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int);
-    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?);
     ctor public TwoStatePreference(android.content.Context);
+    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?);
+    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int);
+    ctor public TwoStatePreference(android.content.Context, android.util.AttributeSet?, int, int);
     method public boolean getDisableDependentsState();
     method public CharSequence? getSummaryOff();
     method public CharSequence? getSummaryOn();
     method public boolean isChecked();
     method public void setChecked(boolean);
     method public void setDisableDependentsState(boolean);
-    method public void setSummaryOff(CharSequence?);
     method public void setSummaryOff(int);
-    method public void setSummaryOn(CharSequence?);
+    method public void setSummaryOff(CharSequence?);
     method public void setSummaryOn(int);
+    method public void setSummaryOn(CharSequence?);
     method protected void syncSummaryView(androidx.preference.PreferenceViewHolder);
     field protected boolean mChecked;
   }
@@ -597,7 +597,7 @@
 
 }
 
-package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) androidx.preference.internal {
+package @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY}) androidx.preference.internal {
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class PreferenceImageView extends android.widget.ImageView {
     ctor public PreferenceImageView(android.content.Context);
diff --git a/profileinstaller/profileinstaller/api/1.3.0-beta02.txt b/profileinstaller/profileinstaller/api/1.3.0-beta02.txt
index e7da088..e920bfa 100644
--- a/profileinstaller/profileinstaller/api/1.3.0-beta02.txt
+++ b/profileinstaller/profileinstaller/api/1.3.0-beta02.txt
@@ -41,10 +41,10 @@
     method public void onResultReceived(int, Object?);
   }
 
-  public class ProfileInstallerInitializer implements androidx.startup.Initializer<androidx.profileinstaller.ProfileInstallerInitializer.Result> {
+  public class ProfileInstallerInitializer implements androidx.startup.Initializer<androidx.profileinstaller.ProfileInstallerInitializer.Result!> {
     ctor public ProfileInstallerInitializer();
     method public androidx.profileinstaller.ProfileInstallerInitializer.Result create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
   public static class ProfileInstallerInitializer.Result {
diff --git a/profileinstaller/profileinstaller/api/restricted_1.3.0-beta02.txt b/profileinstaller/profileinstaller/api/restricted_1.3.0-beta02.txt
index e7da088..e920bfa 100644
--- a/profileinstaller/profileinstaller/api/restricted_1.3.0-beta02.txt
+++ b/profileinstaller/profileinstaller/api/restricted_1.3.0-beta02.txt
@@ -41,10 +41,10 @@
     method public void onResultReceived(int, Object?);
   }
 
-  public class ProfileInstallerInitializer implements androidx.startup.Initializer<androidx.profileinstaller.ProfileInstallerInitializer.Result> {
+  public class ProfileInstallerInitializer implements androidx.startup.Initializer<androidx.profileinstaller.ProfileInstallerInitializer.Result!> {
     ctor public ProfileInstallerInitializer();
     method public androidx.profileinstaller.ProfileInstallerInitializer.Result create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
   public static class ProfileInstallerInitializer.Result {
diff --git a/recyclerview/recyclerview-selection/api/1.1.0-rc01.txt b/recyclerview/recyclerview-selection/api/1.1.0-rc01.txt
index f80bfd39..a24ca33 100644
--- a/recyclerview/recyclerview-selection/api/1.1.0-rc01.txt
+++ b/recyclerview/recyclerview-selection/api/1.1.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.recyclerview.selection {
 
   public abstract class BandPredicate {
@@ -12,7 +12,7 @@
   }
 
   public static final class BandPredicate.NonDraggableArea extends androidx.recyclerview.selection.BandPredicate {
-    ctor public BandPredicate.NonDraggableArea(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.selection.ItemDetailsLookup<?>);
+    ctor public BandPredicate.NonDraggableArea(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.selection.ItemDetailsLookup<? extends java.lang.Object!>);
     method public boolean canInitiate(android.view.MotionEvent);
   }
 
@@ -49,7 +49,7 @@
   @IntDef({androidx.recyclerview.selection.ItemKeyProvider.SCOPE_MAPPED, androidx.recyclerview.selection.ItemKeyProvider.SCOPE_CACHED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ItemKeyProvider.Scope {
   }
 
-  public final class MutableSelection<K> extends androidx.recyclerview.selection.Selection<K> {
+  public final class MutableSelection<K> extends androidx.recyclerview.selection.Selection<K!> {
     ctor public MutableSelection();
     method public boolean add(K);
     method public void clear();
@@ -80,7 +80,7 @@
     method public void onChanged();
   }
 
-  public class Selection<K> implements java.lang.Iterable<K> {
+  public class Selection<K> implements java.lang.Iterable<K!> {
     method public boolean contains(K?);
     method public boolean isEmpty();
     method public java.util.Iterator<K!> iterator();
@@ -139,7 +139,7 @@
     method public abstract boolean canSetStateForKey(K, boolean);
   }
 
-  public final class StableIdKeyProvider extends androidx.recyclerview.selection.ItemKeyProvider<java.lang.Long> {
+  public final class StableIdKeyProvider extends androidx.recyclerview.selection.ItemKeyProvider<java.lang.Long!> {
     ctor public StableIdKeyProvider(androidx.recyclerview.widget.RecyclerView);
     method public Long? getKey(int);
     method public int getPosition(Long);
diff --git a/recyclerview/recyclerview-selection/api/restricted_1.1.0-rc01.txt b/recyclerview/recyclerview-selection/api/restricted_1.1.0-rc01.txt
index f80bfd39..a24ca33 100644
--- a/recyclerview/recyclerview-selection/api/restricted_1.1.0-rc01.txt
+++ b/recyclerview/recyclerview-selection/api/restricted_1.1.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.recyclerview.selection {
 
   public abstract class BandPredicate {
@@ -12,7 +12,7 @@
   }
 
   public static final class BandPredicate.NonDraggableArea extends androidx.recyclerview.selection.BandPredicate {
-    ctor public BandPredicate.NonDraggableArea(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.selection.ItemDetailsLookup<?>);
+    ctor public BandPredicate.NonDraggableArea(androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.selection.ItemDetailsLookup<? extends java.lang.Object!>);
     method public boolean canInitiate(android.view.MotionEvent);
   }
 
@@ -49,7 +49,7 @@
   @IntDef({androidx.recyclerview.selection.ItemKeyProvider.SCOPE_MAPPED, androidx.recyclerview.selection.ItemKeyProvider.SCOPE_CACHED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ItemKeyProvider.Scope {
   }
 
-  public final class MutableSelection<K> extends androidx.recyclerview.selection.Selection<K> {
+  public final class MutableSelection<K> extends androidx.recyclerview.selection.Selection<K!> {
     ctor public MutableSelection();
     method public boolean add(K);
     method public void clear();
@@ -80,7 +80,7 @@
     method public void onChanged();
   }
 
-  public class Selection<K> implements java.lang.Iterable<K> {
+  public class Selection<K> implements java.lang.Iterable<K!> {
     method public boolean contains(K?);
     method public boolean isEmpty();
     method public java.util.Iterator<K!> iterator();
@@ -139,7 +139,7 @@
     method public abstract boolean canSetStateForKey(K, boolean);
   }
 
-  public final class StableIdKeyProvider extends androidx.recyclerview.selection.ItemKeyProvider<java.lang.Long> {
+  public final class StableIdKeyProvider extends androidx.recyclerview.selection.ItemKeyProvider<java.lang.Long!> {
     ctor public StableIdKeyProvider(androidx.recyclerview.widget.RecyclerView);
     method public Long? getKey(int);
     method public int getPosition(Long);
diff --git a/recyclerview/recyclerview/api/1.3.0-beta03.txt b/recyclerview/recyclerview/api/1.3.0-beta03.txt
index 7e45fbb..8fe115e 100644
--- a/recyclerview/recyclerview/api/1.3.0-beta03.txt
+++ b/recyclerview/recyclerview/api/1.3.0-beta03.txt
@@ -21,8 +21,8 @@
   }
 
   public class AsyncListDiffer<T> {
-    ctor public AsyncListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
     ctor public AsyncListDiffer(androidx.recyclerview.widget.ListUpdateCallback, androidx.recyclerview.widget.AsyncDifferConfig<T!>);
+    ctor public AsyncListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
     method public void addListListener(androidx.recyclerview.widget.AsyncListDiffer.ListListener<T!>);
     method public java.util.List<T!> getCurrentList();
     method public void removeListListener(androidx.recyclerview.widget.AsyncListDiffer.ListListener<T!>);
@@ -70,23 +70,23 @@
     method public void onRemoved(int, int);
   }
 
-  public final class ConcatAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.recyclerview.widget.RecyclerView.ViewHolder> {
-    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>!...);
-    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>!...);
-    ctor public ConcatAdapter(java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>>);
-    ctor public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>>);
-    method public boolean addAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
-    method public boolean addAdapter(int, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
-    method public java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>> getAdapters();
+  public final class ConcatAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.recyclerview.widget.RecyclerView.ViewHolder!> {
+    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!...);
+    ctor public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!>);
+    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!...);
+    ctor public ConcatAdapter(java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!>);
+    method public boolean addAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>);
+    method public boolean addAdapter(int, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>);
+    method public java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!> getAdapters();
     method public int getItemCount();
-    method public android.util.Pair<androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>!,java.lang.Integer!> getWrappedAdapterAndPosition(int);
+    method public android.util.Pair<androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!,java.lang.Integer!> getWrappedAdapterAndPosition(int);
     method public void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
     method public androidx.recyclerview.widget.RecyclerView.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
     method public boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder);
     method public void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
     method public void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public boolean removeAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
+    method public boolean removeAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>);
   }
 
   public static final class ConcatAdapter.Config {
@@ -137,8 +137,8 @@
   public static class DiffUtil.DiffResult {
     method public int convertNewPositionToOld(@IntRange(from=0) int);
     method public int convertOldPositionToNew(@IntRange(from=0) int);
-    method public void dispatchUpdatesTo(androidx.recyclerview.widget.RecyclerView.Adapter);
     method public void dispatchUpdatesTo(androidx.recyclerview.widget.ListUpdateCallback);
+    method public void dispatchUpdatesTo(androidx.recyclerview.widget.RecyclerView.Adapter);
     field public static final int NO_POSITION = -1; // 0xffffffff
   }
 
@@ -178,10 +178,10 @@
 
   public static class GridLayoutManager.LayoutParams extends androidx.recyclerview.widget.RecyclerView.LayoutParams {
     ctor public GridLayoutManager.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public GridLayoutManager.LayoutParams(int, int);
-    ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public GridLayoutManager.LayoutParams(androidx.recyclerview.widget.RecyclerView.LayoutParams!);
+    ctor public GridLayoutManager.LayoutParams(int, int);
     method public int getSpanIndex();
     method public int getSpanSize();
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
@@ -273,8 +273,8 @@
 
   public class LinearLayoutManager extends androidx.recyclerview.widget.RecyclerView.LayoutManager implements androidx.recyclerview.widget.ItemTouchHelper.ViewDropHandler androidx.recyclerview.widget.RecyclerView.SmoothScroller.ScrollVectorProvider {
     ctor public LinearLayoutManager(android.content.Context!);
-    ctor public LinearLayoutManager(android.content.Context!, int, boolean);
     ctor public LinearLayoutManager(android.content.Context!, android.util.AttributeSet!, int, int);
+    ctor public LinearLayoutManager(android.content.Context!, int, boolean);
     method protected void calculateExtraLayoutSpace(androidx.recyclerview.widget.RecyclerView.State, int[]);
     method public android.graphics.PointF! computeScrollVectorForPosition(int);
     method public int findFirstCompletelyVisibleItemPosition();
@@ -343,9 +343,9 @@
     method public int findTargetSnapPosition(androidx.recyclerview.widget.RecyclerView.LayoutManager!, int, int);
   }
 
-  public abstract class ListAdapter<T, VH extends androidx.recyclerview.widget.RecyclerView.ViewHolder> extends androidx.recyclerview.widget.RecyclerView.Adapter<VH> {
-    ctor protected ListAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
+  public abstract class ListAdapter<T, VH extends androidx.recyclerview.widget.RecyclerView.ViewHolder> extends androidx.recyclerview.widget.RecyclerView.Adapter<VH!> {
     ctor protected ListAdapter(androidx.recyclerview.widget.AsyncDifferConfig<T!>);
+    ctor protected ListAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
     method public java.util.List<T!> getCurrentList();
     method protected T! getItem(int);
     method public int getItemCount();
@@ -399,8 +399,8 @@
     ctor public RecyclerView(android.content.Context);
     ctor public RecyclerView(android.content.Context, android.util.AttributeSet?);
     ctor public RecyclerView(android.content.Context, android.util.AttributeSet?, int);
-    method public void addItemDecoration(androidx.recyclerview.widget.RecyclerView.ItemDecoration, int);
     method public void addItemDecoration(androidx.recyclerview.widget.RecyclerView.ItemDecoration);
+    method public void addItemDecoration(androidx.recyclerview.widget.RecyclerView.ItemDecoration, int);
     method public void addOnChildAttachStateChangeListener(androidx.recyclerview.widget.RecyclerView.OnChildAttachStateChangeListener);
     method public void addOnItemTouchListener(androidx.recyclerview.widget.RecyclerView.OnItemTouchListener);
     method public void addOnScrollListener(androidx.recyclerview.widget.RecyclerView.OnScrollListener);
@@ -510,7 +510,7 @@
     ctor public RecyclerView.Adapter();
     method public final void bindViewHolder(VH, int);
     method public final VH createViewHolder(android.view.ViewGroup, int);
-    method public int findRelativeAdapterPositionIn(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>, androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
+    method public int findRelativeAdapterPositionIn(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>, androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
     method public abstract int getItemCount();
     method public long getItemId(int);
     method public int getItemViewType(int);
@@ -631,12 +631,12 @@
 
   public abstract static class RecyclerView.ItemDecoration {
     ctor public RecyclerView.ItemDecoration();
-    method @Deprecated public void getItemOffsets(android.graphics.Rect, int, androidx.recyclerview.widget.RecyclerView);
     method public void getItemOffsets(android.graphics.Rect, android.view.View, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
-    method public void onDraw(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
+    method @Deprecated public void getItemOffsets(android.graphics.Rect, int, androidx.recyclerview.widget.RecyclerView);
     method @Deprecated public void onDraw(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView);
-    method public void onDrawOver(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
+    method public void onDraw(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
     method @Deprecated public void onDrawOver(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView);
+    method public void onDrawOver(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
   }
 
   public abstract static class RecyclerView.LayoutManager {
@@ -647,9 +647,9 @@
     method public void addView(android.view.View!, int);
     method public void assertInLayoutOrScroll(String!);
     method public void assertNotInLayoutOrScroll(String!);
-    method public void attachView(android.view.View, int, androidx.recyclerview.widget.RecyclerView.LayoutParams!);
-    method public void attachView(android.view.View, int);
     method public void attachView(android.view.View);
+    method public void attachView(android.view.View, int);
+    method public void attachView(android.view.View, int, androidx.recyclerview.widget.RecyclerView.LayoutParams!);
     method public void calculateItemDecorationsForChild(android.view.View, android.graphics.Rect);
     method public boolean canScrollHorizontally();
     method public boolean canScrollVertically();
@@ -672,8 +672,8 @@
     method public android.view.View? findContainingItemView(android.view.View);
     method public android.view.View? findViewByPosition(int);
     method public abstract androidx.recyclerview.widget.RecyclerView.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.recyclerview.widget.RecyclerView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
     method public androidx.recyclerview.widget.RecyclerView.LayoutParams! generateLayoutParams(android.content.Context!, android.util.AttributeSet!);
+    method public androidx.recyclerview.widget.RecyclerView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
     method public int getBaseline();
     method public int getBottomDecorationHeight(android.view.View);
     method public android.view.View? getChildAt(int);
@@ -798,10 +798,10 @@
 
   public static class RecyclerView.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
     ctor public RecyclerView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public RecyclerView.LayoutParams(int, int);
-    ctor public RecyclerView.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public RecyclerView.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public RecyclerView.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public RecyclerView.LayoutParams(androidx.recyclerview.widget.RecyclerView.LayoutParams!);
+    ctor public RecyclerView.LayoutParams(int, int);
     method public int getAbsoluteAdapterPosition();
     method public int getBindingAdapterPosition();
     method @Deprecated public int getViewAdapterPosition();
@@ -934,7 +934,7 @@
     ctor public RecyclerView.ViewHolder(android.view.View);
     method public final int getAbsoluteAdapterPosition();
     method @Deprecated public final int getAdapterPosition();
-    method public final androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>? getBindingAdapter();
+    method public final androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>? getBindingAdapter();
     method public final int getBindingAdapterPosition();
     method public final long getItemId();
     method public final int getItemViewType();
@@ -1001,9 +1001,9 @@
     ctor public SortedList(Class<T!>, androidx.recyclerview.widget.SortedList.Callback<T!>);
     ctor public SortedList(Class<T!>, androidx.recyclerview.widget.SortedList.Callback<T!>, int);
     method public int add(T!);
-    method public void addAll(T![], boolean);
-    method public void addAll(T!...);
     method public void addAll(java.util.Collection<T!>);
+    method public void addAll(T!...);
+    method public void addAll(T![], boolean);
     method public void beginBatchedUpdates();
     method public void clear();
     method public void endBatchedUpdates();
@@ -1012,15 +1012,15 @@
     method public void recalculatePositionOfItemAt(int);
     method public boolean remove(T!);
     method public T! removeItemAt(int);
-    method public void replaceAll(T![], boolean);
-    method public void replaceAll(T!...);
     method public void replaceAll(java.util.Collection<T!>);
+    method public void replaceAll(T!...);
+    method public void replaceAll(T![], boolean);
     method public int size();
     method public void updateItemAt(int, T!);
     field public static final int INVALID_POSITION = -1; // 0xffffffff
   }
 
-  public static class SortedList.BatchedCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2> {
+  public static class SortedList.BatchedCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2!> {
     ctor public SortedList.BatchedCallback(androidx.recyclerview.widget.SortedList.Callback<T2!>!);
     method public boolean areContentsTheSame(T2!, T2!);
     method public boolean areItemsTheSame(T2!, T2!);
@@ -1032,7 +1032,7 @@
     method public void onRemoved(int, int);
   }
 
-  public abstract static class SortedList.Callback<T2> implements java.util.Comparator<T2> androidx.recyclerview.widget.ListUpdateCallback {
+  public abstract static class SortedList.Callback<T2> implements java.util.Comparator<T2!> androidx.recyclerview.widget.ListUpdateCallback {
     ctor public SortedList.Callback();
     method public abstract boolean areContentsTheSame(T2!, T2!);
     method public abstract boolean areItemsTheSame(T2!, T2!);
@@ -1042,8 +1042,8 @@
     method public void onChanged(int, int, Object!);
   }
 
-  public abstract class SortedListAdapterCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2> {
-    ctor public SortedListAdapterCallback(androidx.recyclerview.widget.RecyclerView.Adapter<?>!);
+  public abstract class SortedListAdapterCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2!> {
+    ctor public SortedListAdapterCallback(androidx.recyclerview.widget.RecyclerView.Adapter<? extends java.lang.Object!>!);
     method public void onChanged(int, int);
     method public void onInserted(int, int);
     method public void onMoved(int, int);
@@ -1078,10 +1078,10 @@
 
   public static class StaggeredGridLayoutManager.LayoutParams extends androidx.recyclerview.widget.RecyclerView.LayoutParams {
     ctor public StaggeredGridLayoutManager.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public StaggeredGridLayoutManager.LayoutParams(int, int);
-    ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public StaggeredGridLayoutManager.LayoutParams(androidx.recyclerview.widget.RecyclerView.LayoutParams!);
+    ctor public StaggeredGridLayoutManager.LayoutParams(int, int);
     method public final int getSpanIndex();
     method public boolean isFullSpan();
     method public void setFullSpan(boolean);
diff --git a/recyclerview/recyclerview/api/restricted_1.3.0-beta03.txt b/recyclerview/recyclerview/api/restricted_1.3.0-beta03.txt
index ac7b64b..b9cbdc3 100644
--- a/recyclerview/recyclerview/api/restricted_1.3.0-beta03.txt
+++ b/recyclerview/recyclerview/api/restricted_1.3.0-beta03.txt
@@ -21,8 +21,8 @@
   }
 
   public class AsyncListDiffer<T> {
-    ctor public AsyncListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
     ctor public AsyncListDiffer(androidx.recyclerview.widget.ListUpdateCallback, androidx.recyclerview.widget.AsyncDifferConfig<T!>);
+    ctor public AsyncListDiffer(androidx.recyclerview.widget.RecyclerView.Adapter, androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
     method public void addListListener(androidx.recyclerview.widget.AsyncListDiffer.ListListener<T!>);
     method public java.util.List<T!> getCurrentList();
     method public void removeListListener(androidx.recyclerview.widget.AsyncListDiffer.ListListener<T!>);
@@ -70,23 +70,23 @@
     method public void onRemoved(int, int);
   }
 
-  public final class ConcatAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.recyclerview.widget.RecyclerView.ViewHolder> {
-    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>!...);
-    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>!...);
-    ctor public ConcatAdapter(java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>>);
-    ctor public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>>);
-    method public boolean addAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
-    method public boolean addAdapter(int, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
-    method public java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>> getAdapters();
+  public final class ConcatAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter<androidx.recyclerview.widget.RecyclerView.ViewHolder!> {
+    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!...);
+    ctor public ConcatAdapter(androidx.recyclerview.widget.ConcatAdapter.Config, java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!>);
+    ctor @java.lang.SafeVarargs public ConcatAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!...);
+    ctor public ConcatAdapter(java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!>);
+    method public boolean addAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>);
+    method public boolean addAdapter(int, androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>);
+    method public java.util.List<? extends androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!> getAdapters();
     method public int getItemCount();
-    method public android.util.Pair<androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>!,java.lang.Integer!> getWrappedAdapterAndPosition(int);
+    method public android.util.Pair<androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>!,java.lang.Integer!> getWrappedAdapterAndPosition(int);
     method public void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
     method public androidx.recyclerview.widget.RecyclerView.ViewHolder onCreateViewHolder(android.view.ViewGroup, int);
     method public boolean onFailedToRecycleView(androidx.recyclerview.widget.RecyclerView.ViewHolder);
     method public void onViewAttachedToWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
     method public void onViewDetachedFromWindow(androidx.recyclerview.widget.RecyclerView.ViewHolder);
     method public void onViewRecycled(androidx.recyclerview.widget.RecyclerView.ViewHolder);
-    method public boolean removeAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>);
+    method public boolean removeAdapter(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>);
   }
 
   public static final class ConcatAdapter.Config {
@@ -137,8 +137,8 @@
   public static class DiffUtil.DiffResult {
     method public int convertNewPositionToOld(@IntRange(from=0) int);
     method public int convertOldPositionToNew(@IntRange(from=0) int);
-    method public void dispatchUpdatesTo(androidx.recyclerview.widget.RecyclerView.Adapter);
     method public void dispatchUpdatesTo(androidx.recyclerview.widget.ListUpdateCallback);
+    method public void dispatchUpdatesTo(androidx.recyclerview.widget.RecyclerView.Adapter);
     field public static final int NO_POSITION = -1; // 0xffffffff
   }
 
@@ -178,10 +178,10 @@
 
   public static class GridLayoutManager.LayoutParams extends androidx.recyclerview.widget.RecyclerView.LayoutParams {
     ctor public GridLayoutManager.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public GridLayoutManager.LayoutParams(int, int);
-    ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public GridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public GridLayoutManager.LayoutParams(androidx.recyclerview.widget.RecyclerView.LayoutParams!);
+    ctor public GridLayoutManager.LayoutParams(int, int);
     method public int getSpanIndex();
     method public int getSpanSize();
     field public static final int INVALID_SPAN_ID = -1; // 0xffffffff
@@ -273,8 +273,8 @@
 
   public class LinearLayoutManager extends androidx.recyclerview.widget.RecyclerView.LayoutManager implements androidx.recyclerview.widget.ItemTouchHelper.ViewDropHandler androidx.recyclerview.widget.RecyclerView.SmoothScroller.ScrollVectorProvider {
     ctor public LinearLayoutManager(android.content.Context!);
-    ctor public LinearLayoutManager(android.content.Context!, @androidx.recyclerview.widget.RecyclerView.Orientation int, boolean);
     ctor public LinearLayoutManager(android.content.Context!, android.util.AttributeSet!, int, int);
+    ctor public LinearLayoutManager(android.content.Context!, @androidx.recyclerview.widget.RecyclerView.Orientation int, boolean);
     method protected void calculateExtraLayoutSpace(androidx.recyclerview.widget.RecyclerView.State, int[]);
     method public android.graphics.PointF! computeScrollVectorForPosition(int);
     method public int findFirstCompletelyVisibleItemPosition();
@@ -343,9 +343,9 @@
     method public int findTargetSnapPosition(androidx.recyclerview.widget.RecyclerView.LayoutManager!, int, int);
   }
 
-  public abstract class ListAdapter<T, VH extends androidx.recyclerview.widget.RecyclerView.ViewHolder> extends androidx.recyclerview.widget.RecyclerView.Adapter<VH> {
-    ctor protected ListAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
+  public abstract class ListAdapter<T, VH extends androidx.recyclerview.widget.RecyclerView.ViewHolder> extends androidx.recyclerview.widget.RecyclerView.Adapter<VH!> {
     ctor protected ListAdapter(androidx.recyclerview.widget.AsyncDifferConfig<T!>);
+    ctor protected ListAdapter(androidx.recyclerview.widget.DiffUtil.ItemCallback<T!>);
     method public java.util.List<T!> getCurrentList();
     method protected T! getItem(int);
     method public int getItemCount();
@@ -399,8 +399,8 @@
     ctor public RecyclerView(android.content.Context);
     ctor public RecyclerView(android.content.Context, android.util.AttributeSet?);
     ctor public RecyclerView(android.content.Context, android.util.AttributeSet?, int);
-    method public void addItemDecoration(androidx.recyclerview.widget.RecyclerView.ItemDecoration, int);
     method public void addItemDecoration(androidx.recyclerview.widget.RecyclerView.ItemDecoration);
+    method public void addItemDecoration(androidx.recyclerview.widget.RecyclerView.ItemDecoration, int);
     method public void addOnChildAttachStateChangeListener(androidx.recyclerview.widget.RecyclerView.OnChildAttachStateChangeListener);
     method public void addOnItemTouchListener(androidx.recyclerview.widget.RecyclerView.OnItemTouchListener);
     method public void addOnScrollListener(androidx.recyclerview.widget.RecyclerView.OnScrollListener);
@@ -510,7 +510,7 @@
     ctor public RecyclerView.Adapter();
     method public final void bindViewHolder(VH, int);
     method public final VH createViewHolder(android.view.ViewGroup, int);
-    method public int findRelativeAdapterPositionIn(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>, androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
+    method public int findRelativeAdapterPositionIn(androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>, androidx.recyclerview.widget.RecyclerView.ViewHolder, int);
     method public abstract int getItemCount();
     method public long getItemId(int);
     method public int getItemViewType(int);
@@ -631,12 +631,12 @@
 
   public abstract static class RecyclerView.ItemDecoration {
     ctor public RecyclerView.ItemDecoration();
-    method @Deprecated public void getItemOffsets(android.graphics.Rect, int, androidx.recyclerview.widget.RecyclerView);
     method public void getItemOffsets(android.graphics.Rect, android.view.View, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
-    method public void onDraw(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
+    method @Deprecated public void getItemOffsets(android.graphics.Rect, int, androidx.recyclerview.widget.RecyclerView);
     method @Deprecated public void onDraw(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView);
-    method public void onDrawOver(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
+    method public void onDraw(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
     method @Deprecated public void onDrawOver(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView);
+    method public void onDrawOver(android.graphics.Canvas, androidx.recyclerview.widget.RecyclerView, androidx.recyclerview.widget.RecyclerView.State);
   }
 
   public abstract static class RecyclerView.LayoutManager {
@@ -647,9 +647,9 @@
     method public void addView(android.view.View!, int);
     method public void assertInLayoutOrScroll(String!);
     method public void assertNotInLayoutOrScroll(String!);
-    method public void attachView(android.view.View, int, androidx.recyclerview.widget.RecyclerView.LayoutParams!);
-    method public void attachView(android.view.View, int);
     method public void attachView(android.view.View);
+    method public void attachView(android.view.View, int);
+    method public void attachView(android.view.View, int, androidx.recyclerview.widget.RecyclerView.LayoutParams!);
     method public void calculateItemDecorationsForChild(android.view.View, android.graphics.Rect);
     method public boolean canScrollHorizontally();
     method public boolean canScrollVertically();
@@ -672,8 +672,8 @@
     method public android.view.View? findContainingItemView(android.view.View);
     method public android.view.View? findViewByPosition(int);
     method public abstract androidx.recyclerview.widget.RecyclerView.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.recyclerview.widget.RecyclerView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
     method public androidx.recyclerview.widget.RecyclerView.LayoutParams! generateLayoutParams(android.content.Context!, android.util.AttributeSet!);
+    method public androidx.recyclerview.widget.RecyclerView.LayoutParams! generateLayoutParams(android.view.ViewGroup.LayoutParams!);
     method public int getBaseline();
     method public int getBottomDecorationHeight(android.view.View);
     method public android.view.View? getChildAt(int);
@@ -798,10 +798,10 @@
 
   public static class RecyclerView.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
     ctor public RecyclerView.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public RecyclerView.LayoutParams(int, int);
-    ctor public RecyclerView.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public RecyclerView.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public RecyclerView.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public RecyclerView.LayoutParams(androidx.recyclerview.widget.RecyclerView.LayoutParams!);
+    ctor public RecyclerView.LayoutParams(int, int);
     method public int getAbsoluteAdapterPosition();
     method public int getBindingAdapterPosition();
     method @Deprecated public int getViewAdapterPosition();
@@ -937,7 +937,7 @@
     ctor public RecyclerView.ViewHolder(android.view.View);
     method public final int getAbsoluteAdapterPosition();
     method @Deprecated public final int getAdapterPosition();
-    method public final androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder>? getBindingAdapter();
+    method public final androidx.recyclerview.widget.RecyclerView.Adapter<? extends androidx.recyclerview.widget.RecyclerView.ViewHolder!>? getBindingAdapter();
     method public final int getBindingAdapterPosition();
     method public final long getItemId();
     method public final int getItemViewType();
@@ -1004,9 +1004,9 @@
     ctor public SortedList(Class<T!>, androidx.recyclerview.widget.SortedList.Callback<T!>);
     ctor public SortedList(Class<T!>, androidx.recyclerview.widget.SortedList.Callback<T!>, int);
     method public int add(T!);
-    method public void addAll(T![], boolean);
-    method public void addAll(T!...);
     method public void addAll(java.util.Collection<T!>);
+    method public void addAll(T!...);
+    method public void addAll(T![], boolean);
     method public void beginBatchedUpdates();
     method public void clear();
     method public void endBatchedUpdates();
@@ -1015,15 +1015,15 @@
     method public void recalculatePositionOfItemAt(int);
     method public boolean remove(T!);
     method public T! removeItemAt(int);
-    method public void replaceAll(T![], boolean);
-    method public void replaceAll(T!...);
     method public void replaceAll(java.util.Collection<T!>);
+    method public void replaceAll(T!...);
+    method public void replaceAll(T![], boolean);
     method public int size();
     method public void updateItemAt(int, T!);
     field public static final int INVALID_POSITION = -1; // 0xffffffff
   }
 
-  public static class SortedList.BatchedCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2> {
+  public static class SortedList.BatchedCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2!> {
     ctor public SortedList.BatchedCallback(androidx.recyclerview.widget.SortedList.Callback<T2!>!);
     method public boolean areContentsTheSame(T2!, T2!);
     method public boolean areItemsTheSame(T2!, T2!);
@@ -1035,7 +1035,7 @@
     method public void onRemoved(int, int);
   }
 
-  public abstract static class SortedList.Callback<T2> implements java.util.Comparator<T2> androidx.recyclerview.widget.ListUpdateCallback {
+  public abstract static class SortedList.Callback<T2> implements java.util.Comparator<T2!> androidx.recyclerview.widget.ListUpdateCallback {
     ctor public SortedList.Callback();
     method public abstract boolean areContentsTheSame(T2!, T2!);
     method public abstract boolean areItemsTheSame(T2!, T2!);
@@ -1045,8 +1045,8 @@
     method public void onChanged(int, int, Object!);
   }
 
-  public abstract class SortedListAdapterCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2> {
-    ctor public SortedListAdapterCallback(androidx.recyclerview.widget.RecyclerView.Adapter<?>!);
+  public abstract class SortedListAdapterCallback<T2> extends androidx.recyclerview.widget.SortedList.Callback<T2!> {
+    ctor public SortedListAdapterCallback(androidx.recyclerview.widget.RecyclerView.Adapter<? extends java.lang.Object!>!);
     method public void onChanged(int, int);
     method public void onInserted(int, int);
     method public void onMoved(int, int);
@@ -1081,10 +1081,10 @@
 
   public static class StaggeredGridLayoutManager.LayoutParams extends androidx.recyclerview.widget.RecyclerView.LayoutParams {
     ctor public StaggeredGridLayoutManager.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public StaggeredGridLayoutManager.LayoutParams(int, int);
-    ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.LayoutParams!);
+    ctor public StaggeredGridLayoutManager.LayoutParams(android.view.ViewGroup.MarginLayoutParams!);
     ctor public StaggeredGridLayoutManager.LayoutParams(androidx.recyclerview.widget.RecyclerView.LayoutParams!);
+    ctor public StaggeredGridLayoutManager.LayoutParams(int, int);
     method public final int getSpanIndex();
     method public boolean isFullSpan();
     method public void setFullSpan(boolean);
diff --git a/room/room-common/api/2.6.0-beta02.txt b/room/room-common/api/2.6.0-beta02.txt
index a00c4db..29179ae 100644
--- a/room/room-common/api/2.6.0-beta02.txt
+++ b/room/room-common/api/2.6.0-beta02.txt
@@ -3,10 +3,10 @@
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface AutoMigration {
     method public abstract int from();
-    method public abstract Class<?> spec() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> spec() default java.lang.Object;
     method public abstract int to();
     property public abstract int from;
-    property public abstract Class<?> spec;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> spec;
     property public abstract int to;
   }
 
@@ -20,8 +20,6 @@
   }
 
   public enum BuiltInTypeConverters.State {
-    method public static androidx.room.BuiltInTypeConverters.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.BuiltInTypeConverters.State[] values();
     enum_constant public static final androidx.room.BuiltInTypeConverters.State DISABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State ENABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State INHERITED;
@@ -54,7 +52,7 @@
     field public static final String VALUE_UNSPECIFIED = "[value-unspecified]";
   }
 
-  @IntDef({UNSPECIFIED, BINARY, NOCASE, RTRIM, LOCALIZED, UNICODE}) @RequiresApi(21) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.Collate {
+  @IntDef({androidx.room.ColumnInfo.UNSPECIFIED, androidx.room.ColumnInfo.BINARY, androidx.room.ColumnInfo.NOCASE, androidx.room.ColumnInfo.RTRIM, androidx.room.ColumnInfo.LOCALIZED, androidx.room.ColumnInfo.UNICODE}) @RequiresApi(21) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.Collate {
   }
 
   public static final class ColumnInfo.Companion {
@@ -73,7 +71,7 @@
     field public static final String VALUE_UNSPECIFIED = "[value-unspecified]";
   }
 
-  @IntDef({UNDEFINED, TEXT, INTEGER, REAL, BLOB}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.SQLiteTypeAffinity {
+  @IntDef({androidx.room.ColumnInfo.UNDEFINED, androidx.room.ColumnInfo.TEXT, androidx.room.ColumnInfo.INTEGER, androidx.room.ColumnInfo.REAL, androidx.room.ColumnInfo.BLOB}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.SQLiteTypeAffinity {
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface Dao {
@@ -81,15 +79,15 @@
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface Database {
     method public abstract androidx.room.AutoMigration[] autoMigrations();
-    method public abstract Class<?>[] entities();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] entities();
     method public abstract boolean exportSchema() default true;
     method public abstract int version();
-    method public abstract Class<?>[] views();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] views();
     property public abstract androidx.room.AutoMigration[] autoMigrations;
-    property public abstract Class<?>[] entities;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] entities;
     property public abstract boolean exportSchema;
     property public abstract int version;
-    property public abstract Class<?>[] views;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] views;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface DatabaseView {
@@ -100,8 +98,8 @@
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Delete {
-    method public abstract Class<?> entity() default java.lang.Object;
-    property public abstract Class<?> entity;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
   }
 
   @java.lang.annotation.Repeatable(DeleteColumn.Entries::class) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface DeleteColumn {
@@ -149,13 +147,13 @@
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={}) public @interface ForeignKey {
     method public abstract String[] childColumns();
     method public abstract boolean deferred() default false;
-    method public abstract Class<?> entity();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity();
     method @androidx.room.ForeignKey.Action public abstract int onDelete() default androidx.room.ForeignKey.NO_ACTION;
     method @androidx.room.ForeignKey.Action public abstract int onUpdate() default androidx.room.ForeignKey.NO_ACTION;
     method public abstract String[] parentColumns();
     property public abstract String[] childColumns;
     property public abstract boolean deferred;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property @androidx.room.ForeignKey.Action public abstract int onDelete;
     property @androidx.room.ForeignKey.Action public abstract int onUpdate;
     property public abstract String[] parentColumns;
@@ -167,7 +165,7 @@
     field public static final int SET_NULL = 3; // 0x3
   }
 
-  @IntDef({NO_ACTION, RESTRICT, SET_NULL, SET_DEFAULT, CASCADE}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ForeignKey.Action {
+  @IntDef({androidx.room.ForeignKey.NO_ACTION, androidx.room.ForeignKey.RESTRICT, androidx.room.ForeignKey.SET_NULL, androidx.room.ForeignKey.SET_DEFAULT, androidx.room.ForeignKey.CASCADE}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ForeignKey.Action {
   }
 
   public static final class ForeignKey.Companion {
@@ -186,7 +184,7 @@
   }
 
   @RequiresApi(16) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface Fts4 {
-    method public abstract Class<?> contentEntity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> contentEntity() default java.lang.Object;
     method public abstract String languageId() default "";
     method public abstract androidx.room.FtsOptions.MatchInfo matchInfo() default androidx.room.FtsOptions.MatchInfo.FTS4;
     method public abstract String[] notIndexed();
@@ -194,7 +192,7 @@
     method public abstract int[] prefix();
     method public abstract String tokenizer() default androidx.room.FtsOptions.TOKENIZER_SIMPLE;
     method public abstract String[] tokenizerArgs();
-    property public abstract Class<?> contentEntity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> contentEntity;
     property public abstract String languageId;
     property public abstract androidx.room.FtsOptions.MatchInfo matchInfo;
     property public abstract String[] notIndexed;
@@ -213,15 +211,11 @@
   }
 
   public enum FtsOptions.MatchInfo {
-    method public static androidx.room.FtsOptions.MatchInfo valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.MatchInfo[] values();
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS3;
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS4;
   }
 
   public enum FtsOptions.Order {
-    method public static androidx.room.FtsOptions.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.Order[] values();
     enum_constant public static final androidx.room.FtsOptions.Order ASC;
     enum_constant public static final androidx.room.FtsOptions.Order DESC;
   }
@@ -241,26 +235,24 @@
   }
 
   public enum Index.Order {
-    method public static androidx.room.Index.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.Index.Order[] values();
     enum_constant public static final androidx.room.Index.Order ASC;
     enum_constant public static final androidx.room.Index.Order DESC;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Insert {
-    method public abstract Class<?> entity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
     method @androidx.room.OnConflictStrategy public abstract int onConflict() default androidx.room.OnConflictStrategy.ABORT;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property @androidx.room.OnConflictStrategy public abstract int onConflict;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={}) public @interface Junction {
     method public abstract String entityColumn() default "";
     method public abstract String parentColumn() default "";
-    method public abstract Class<?> value();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> value();
     property public abstract String entityColumn;
     property public abstract String parentColumn;
-    property public abstract Class<?> value;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> value;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.TYPE) public @interface MapColumn {
@@ -292,6 +284,10 @@
   }
 
   public static final class OnConflictStrategy.Companion {
+    method @Deprecated public int getFAIL();
+    method @Deprecated public int getROLLBACK();
+    property @Deprecated public int FAIL;
+    property @Deprecated public int ROLLBACK;
     field public static final int ABORT = 3; // 0x3
     field @Deprecated public static final int FAIL = 4; // 0x4
     field public static final int IGNORE = 5; // 0x5
@@ -317,18 +313,18 @@
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface RawQuery {
-    method public abstract Class<?>[] observedEntities();
-    property public abstract Class<?>[] observedEntities;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] observedEntities();
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] observedEntities;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.FIELD, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface Relation {
     method public abstract androidx.room.Junction associateBy() default androidx.room.Junction(java.lang.Object);
-    method public abstract Class<?> entity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
     method public abstract String entityColumn();
     method public abstract String parentColumn();
     method public abstract String[] projection();
     property public abstract androidx.room.Junction associateBy;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property public abstract String entityColumn;
     property public abstract String parentColumn;
     property public abstract String[] projection;
@@ -401,21 +397,21 @@
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.FUNCTION, kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.FIELD, kotlin.annotation.AnnotationTarget.CLASS}) public @interface TypeConverters {
     method public abstract androidx.room.BuiltInTypeConverters builtInTypeConverters() default androidx.room.BuiltInTypeConverters();
-    method public abstract Class<?>[] value();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] value();
     property public abstract androidx.room.BuiltInTypeConverters builtInTypeConverters;
-    property public abstract Class<?>[] value;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] value;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Update {
-    method public abstract Class<?> entity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
     method @androidx.room.OnConflictStrategy public abstract int onConflict() default androidx.room.OnConflictStrategy.ABORT;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property @androidx.room.OnConflictStrategy public abstract int onConflict;
   }
 
   @RequiresApi(16) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Upsert {
-    method public abstract Class<?> entity() default java.lang.Object;
-    property public abstract Class<?> entity;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
   }
 
 }
diff --git a/room/room-common/api/restricted_2.6.0-beta02.txt b/room/room-common/api/restricted_2.6.0-beta02.txt
index 4512daa..30f0da8 100644
--- a/room/room-common/api/restricted_2.6.0-beta02.txt
+++ b/room/room-common/api/restricted_2.6.0-beta02.txt
@@ -3,10 +3,10 @@
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface AutoMigration {
     method public abstract int from();
-    method public abstract Class<?> spec() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> spec() default java.lang.Object;
     method public abstract int to();
     property public abstract int from;
-    property public abstract Class<?> spec;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> spec;
     property public abstract int to;
   }
 
@@ -20,8 +20,6 @@
   }
 
   public enum BuiltInTypeConverters.State {
-    method public static androidx.room.BuiltInTypeConverters.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.BuiltInTypeConverters.State[] values();
     enum_constant public static final androidx.room.BuiltInTypeConverters.State DISABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State ENABLED;
     enum_constant public static final androidx.room.BuiltInTypeConverters.State INHERITED;
@@ -54,7 +52,7 @@
     field public static final String VALUE_UNSPECIFIED = "[value-unspecified]";
   }
 
-  @IntDef({UNSPECIFIED, BINARY, NOCASE, RTRIM, LOCALIZED, UNICODE}) @RequiresApi(21) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.Collate {
+  @IntDef({androidx.room.ColumnInfo.UNSPECIFIED, androidx.room.ColumnInfo.BINARY, androidx.room.ColumnInfo.NOCASE, androidx.room.ColumnInfo.RTRIM, androidx.room.ColumnInfo.LOCALIZED, androidx.room.ColumnInfo.UNICODE}) @RequiresApi(21) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.Collate {
   }
 
   public static final class ColumnInfo.Companion {
@@ -73,7 +71,7 @@
     field public static final String VALUE_UNSPECIFIED = "[value-unspecified]";
   }
 
-  @IntDef({UNDEFINED, TEXT, INTEGER, REAL, BLOB}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.SQLiteTypeAffinity {
+  @IntDef({androidx.room.ColumnInfo.UNDEFINED, androidx.room.ColumnInfo.TEXT, androidx.room.ColumnInfo.INTEGER, androidx.room.ColumnInfo.REAL, androidx.room.ColumnInfo.BLOB}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ColumnInfo.SQLiteTypeAffinity {
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface Dao {
@@ -81,15 +79,15 @@
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface Database {
     method public abstract androidx.room.AutoMigration[] autoMigrations();
-    method public abstract Class<?>[] entities();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] entities();
     method public abstract boolean exportSchema() default true;
     method public abstract int version();
-    method public abstract Class<?>[] views();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] views();
     property public abstract androidx.room.AutoMigration[] autoMigrations;
-    property public abstract Class<?>[] entities;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] entities;
     property public abstract boolean exportSchema;
     property public abstract int version;
-    property public abstract Class<?>[] views;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] views;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface DatabaseView {
@@ -100,8 +98,8 @@
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Delete {
-    method public abstract Class<?> entity() default java.lang.Object;
-    property public abstract Class<?> entity;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
   }
 
   @java.lang.annotation.Repeatable(DeleteColumn.Entries::class) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface DeleteColumn {
@@ -149,13 +147,13 @@
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={}) public @interface ForeignKey {
     method public abstract String[] childColumns();
     method public abstract boolean deferred() default false;
-    method public abstract Class<?> entity();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity();
     method @androidx.room.ForeignKey.Action public abstract int onDelete() default androidx.room.ForeignKey.NO_ACTION;
     method @androidx.room.ForeignKey.Action public abstract int onUpdate() default androidx.room.ForeignKey.NO_ACTION;
     method public abstract String[] parentColumns();
     property public abstract String[] childColumns;
     property public abstract boolean deferred;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property @androidx.room.ForeignKey.Action public abstract int onDelete;
     property @androidx.room.ForeignKey.Action public abstract int onUpdate;
     property public abstract String[] parentColumns;
@@ -167,7 +165,7 @@
     field public static final int SET_NULL = 3; // 0x3
   }
 
-  @IntDef({NO_ACTION, RESTRICT, SET_NULL, SET_DEFAULT, CASCADE}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ForeignKey.Action {
+  @IntDef({androidx.room.ForeignKey.NO_ACTION, androidx.room.ForeignKey.RESTRICT, androidx.room.ForeignKey.SET_NULL, androidx.room.ForeignKey.SET_DEFAULT, androidx.room.ForeignKey.CASCADE}) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public static @interface ForeignKey.Action {
   }
 
   public static final class ForeignKey.Companion {
@@ -186,7 +184,7 @@
   }
 
   @RequiresApi(16) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.CLASS) public @interface Fts4 {
-    method public abstract Class<?> contentEntity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> contentEntity() default java.lang.Object;
     method public abstract String languageId() default "";
     method public abstract androidx.room.FtsOptions.MatchInfo matchInfo() default androidx.room.FtsOptions.MatchInfo.FTS4;
     method public abstract String[] notIndexed();
@@ -194,7 +192,7 @@
     method public abstract int[] prefix();
     method public abstract String tokenizer() default androidx.room.FtsOptions.TOKENIZER_SIMPLE;
     method public abstract String[] tokenizerArgs();
-    property public abstract Class<?> contentEntity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> contentEntity;
     property public abstract String languageId;
     property public abstract androidx.room.FtsOptions.MatchInfo matchInfo;
     property public abstract String[] notIndexed;
@@ -213,15 +211,11 @@
   }
 
   public enum FtsOptions.MatchInfo {
-    method public static androidx.room.FtsOptions.MatchInfo valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.MatchInfo[] values();
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS3;
     enum_constant public static final androidx.room.FtsOptions.MatchInfo FTS4;
   }
 
   public enum FtsOptions.Order {
-    method public static androidx.room.FtsOptions.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.FtsOptions.Order[] values();
     enum_constant public static final androidx.room.FtsOptions.Order ASC;
     enum_constant public static final androidx.room.FtsOptions.Order DESC;
   }
@@ -241,26 +235,24 @@
   }
 
   public enum Index.Order {
-    method public static androidx.room.Index.Order valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.Index.Order[] values();
     enum_constant public static final androidx.room.Index.Order ASC;
     enum_constant public static final androidx.room.Index.Order DESC;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Insert {
-    method public abstract Class<?> entity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
     method @androidx.room.OnConflictStrategy public abstract int onConflict() default androidx.room.OnConflictStrategy.ABORT;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property @androidx.room.OnConflictStrategy public abstract int onConflict;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={}) public @interface Junction {
     method public abstract String entityColumn() default "";
     method public abstract String parentColumn() default "";
-    method public abstract Class<?> value();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> value();
     property public abstract String entityColumn;
     property public abstract String parentColumn;
-    property public abstract Class<?> value;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> value;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.TYPE) public @interface MapColumn {
@@ -292,6 +284,10 @@
   }
 
   public static final class OnConflictStrategy.Companion {
+    method @Deprecated public int getFAIL();
+    method @Deprecated public int getROLLBACK();
+    property @Deprecated public int FAIL;
+    property @Deprecated public int ROLLBACK;
     field public static final int ABORT = 3; // 0x3
     field @Deprecated public static final int FAIL = 4; // 0x4
     field public static final int IGNORE = 5; // 0x5
@@ -317,18 +313,18 @@
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface RawQuery {
-    method public abstract Class<?>[] observedEntities();
-    property public abstract Class<?>[] observedEntities;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] observedEntities();
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] observedEntities;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.FIELD, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface Relation {
     method public abstract androidx.room.Junction associateBy() default androidx.room.Junction(java.lang.Object);
-    method public abstract Class<?> entity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
     method public abstract String entityColumn();
     method public abstract String parentColumn();
     method public abstract String[] projection();
     property public abstract androidx.room.Junction associateBy;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property public abstract String entityColumn;
     property public abstract String parentColumn;
     property public abstract String[] projection;
@@ -411,21 +407,21 @@
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.FUNCTION, kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.FIELD, kotlin.annotation.AnnotationTarget.CLASS}) public @interface TypeConverters {
     method public abstract androidx.room.BuiltInTypeConverters builtInTypeConverters() default androidx.room.BuiltInTypeConverters();
-    method public abstract Class<?>[] value();
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] value();
     property public abstract androidx.room.BuiltInTypeConverters builtInTypeConverters;
-    property public abstract Class<?>[] value;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!>[] value;
   }
 
   @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Update {
-    method public abstract Class<?> entity() default java.lang.Object;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
     method @androidx.room.OnConflictStrategy public abstract int onConflict() default androidx.room.OnConflictStrategy.ABORT;
-    property public abstract Class<?> entity;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
     property @androidx.room.OnConflictStrategy public abstract int onConflict;
   }
 
   @RequiresApi(16) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface Upsert {
-    method public abstract Class<?> entity() default java.lang.Object;
-    property public abstract Class<?> entity;
+    method public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity() default java.lang.Object;
+    property public abstract kotlin.reflect.KClass<? extends java.lang.Object!> entity;
   }
 
 }
diff --git a/room/room-ktx/api/2.6.0-beta02.txt b/room/room-ktx/api/2.6.0-beta02.txt
index 666ad72..ceaca54 100644
--- a/room/room-ktx/api/2.6.0-beta02.txt
+++ b/room/room-ktx/api/2.6.0-beta02.txt
@@ -2,7 +2,7 @@
 package androidx.room {
 
   public final class RoomDatabaseKt {
-    method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
+    method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String[] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
diff --git a/room/room-ktx/api/restricted_2.6.0-beta02.txt b/room/room-ktx/api/restricted_2.6.0-beta02.txt
index bfc510c..fc6c3c0 100644
--- a/room/room-ktx/api/restricted_2.6.0-beta02.txt
+++ b/room/room-ktx/api/restricted_2.6.0-beta02.txt
@@ -2,20 +2,20 @@
 package androidx.room {
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class CoroutinesRoom {
-    method public static <R> kotlinx.coroutines.flow.Flow<R> createFlow(androidx.room.RoomDatabase db, boolean inTransaction, String![] tableNames, java.util.concurrent.Callable<R> callable);
+    method public static <R> kotlinx.coroutines.flow.Flow<R> createFlow(androidx.room.RoomDatabase db, boolean inTransaction, String[] tableNames, java.util.concurrent.Callable<R> callable);
     method public static suspend <R> Object? execute(androidx.room.RoomDatabase db, boolean inTransaction, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Callable<R> callable, kotlin.coroutines.Continuation<? super R>);
     method public static suspend <R> Object? execute(androidx.room.RoomDatabase db, boolean inTransaction, java.util.concurrent.Callable<R> callable, kotlin.coroutines.Continuation<? super R>);
     field public static final androidx.room.CoroutinesRoom.Companion Companion;
   }
 
   public static final class CoroutinesRoom.Companion {
-    method public <R> kotlinx.coroutines.flow.Flow<R> createFlow(androidx.room.RoomDatabase db, boolean inTransaction, String![] tableNames, java.util.concurrent.Callable<R> callable);
+    method public <R> kotlinx.coroutines.flow.Flow<R> createFlow(androidx.room.RoomDatabase db, boolean inTransaction, String[] tableNames, java.util.concurrent.Callable<R> callable);
     method public suspend <R> Object? execute(androidx.room.RoomDatabase db, boolean inTransaction, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Callable<R> callable, kotlin.coroutines.Continuation<? super R>);
     method public suspend <R> Object? execute(androidx.room.RoomDatabase db, boolean inTransaction, java.util.concurrent.Callable<R> callable, kotlin.coroutines.Continuation<? super R>);
   }
 
   public final class RoomDatabaseKt {
-    method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
+    method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String[] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
diff --git a/room/room-runtime/api/2.6.0-beta02.txt b/room/room-runtime/api/2.6.0-beta02.txt
index e8034b4..6f60ecc 100644
--- a/room/room-runtime/api/2.6.0-beta02.txt
+++ b/room/room-runtime/api/2.6.0-beta02.txt
@@ -39,7 +39,7 @@
 
   public abstract static class InvalidationTracker.Observer {
     ctor protected InvalidationTracker.Observer(String firstTable, java.lang.String... rest);
-    ctor public InvalidationTracker.Observer(String![] tables);
+    ctor public InvalidationTracker.Observer(String[] tables);
     method public abstract void onInvalidated(java.util.Set<java.lang.String> tables);
   }
 
@@ -65,6 +65,7 @@
     method protected abstract androidx.sqlite.db.SupportSQLiteOpenHelper createOpenHelper(androidx.room.DatabaseConfiguration config);
     method @Deprecated public void endTransaction();
     method public androidx.room.InvalidationTracker getInvalidationTracker();
+    method @Deprecated @kotlin.jvm.Volatile protected androidx.sqlite.db.SupportSQLiteDatabase? getMDatabase();
     method public androidx.sqlite.db.SupportSQLiteOpenHelper getOpenHelper();
     method public java.util.concurrent.Executor getQueryExecutor();
     method public java.util.concurrent.Executor getTransactionExecutor();
@@ -75,12 +76,14 @@
     method public boolean isOpen();
     method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query);
     method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query, optional android.os.CancellationSignal? signal);
-    method public android.database.Cursor query(String query, Object![]? args);
+    method public android.database.Cursor query(String query, Object?[]? args);
     method public void runInTransaction(Runnable body);
     method public <V> V runInTransaction(java.util.concurrent.Callable<V> body);
+    method @Deprecated @kotlin.jvm.Volatile protected void setMDatabase(androidx.sqlite.db.SupportSQLiteDatabase?);
     method @Deprecated public void setTransactionSuccessful();
     property public androidx.room.InvalidationTracker invalidationTracker;
     property public boolean isOpen;
+    property @Deprecated @kotlin.jvm.Volatile protected androidx.sqlite.db.SupportSQLiteDatabase? mDatabase;
     property public androidx.sqlite.db.SupportSQLiteOpenHelper openHelper;
     property public java.util.concurrent.Executor queryExecutor;
     property public java.util.concurrent.Executor transactionExecutor;
@@ -125,8 +128,6 @@
   }
 
   public enum RoomDatabase.JournalMode {
-    method public static androidx.room.RoomDatabase.JournalMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.RoomDatabase.JournalMode[] values();
     enum_constant public static final androidx.room.RoomDatabase.JournalMode AUTOMATIC;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode TRUNCATE;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode WRITE_AHEAD_LOGGING;
@@ -147,7 +148,7 @@
   }
 
   public static fun interface RoomDatabase.QueryCallback {
-    method public void onQuery(String sqlQuery, java.util.List<?> bindArgs);
+    method public void onQuery(String sqlQuery, java.util.List<? extends java.lang.Object?> bindArgs);
   }
 
 }
diff --git a/room/room-runtime/api/current.ignore b/room/room-runtime/api/current.ignore
new file mode 100644
index 0000000..c45262d
--- /dev/null
+++ b/room/room-runtime/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+InvalidNullConversion: androidx.room.DatabaseConfiguration#sqliteOpenHelperFactory:
+    Attempted to change nullability of androidx.sqlite.db.SupportSQLiteOpenHelper.Factory (from NONNULL to NULLABLE) in field androidx.room.DatabaseConfiguration.sqliteOpenHelperFactory
diff --git a/room/room-runtime/api/restricted_2.6.0-beta02.txt b/room/room-runtime/api/restricted_2.6.0-beta02.txt
index 2b5d170..a6bb714 100644
--- a/room/room-runtime/api/restricted_2.6.0-beta02.txt
+++ b/room/room-runtime/api/restricted_2.6.0-beta02.txt
@@ -38,7 +38,7 @@
     method protected abstract void bind(androidx.sqlite.db.SupportSQLiteStatement statement, T entity);
     method public final int handle(T entity);
     method public final int handleMultiple(Iterable<? extends T> entities);
-    method public final int handleMultiple(T![] entities);
+    method public final int handleMultiple(T[] entities);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class EntityInsertionAdapter<T> extends androidx.room.SharedSQLiteStatement {
@@ -46,28 +46,28 @@
     method protected abstract void bind(androidx.sqlite.db.SupportSQLiteStatement statement, T entity);
     method public final void insert(Iterable<? extends T> entities);
     method public final void insert(T entity);
-    method public final void insert(T![] entities);
+    method public final void insert(T[] entities);
     method public final long insertAndReturnId(T entity);
     method public final long[] insertAndReturnIdsArray(java.util.Collection<? extends T> entities);
-    method public final long[] insertAndReturnIdsArray(T![] entities);
-    method public final Long![] insertAndReturnIdsArrayBox(java.util.Collection<? extends T> entities);
-    method public final Long![] insertAndReturnIdsArrayBox(T![] entities);
+    method public final long[] insertAndReturnIdsArray(T[] entities);
+    method public final Long[] insertAndReturnIdsArrayBox(java.util.Collection<? extends T> entities);
+    method public final Long[] insertAndReturnIdsArrayBox(T[] entities);
     method public final java.util.List<java.lang.Long> insertAndReturnIdsList(java.util.Collection<? extends T> entities);
-    method public final java.util.List<java.lang.Long> insertAndReturnIdsList(T![] entities);
+    method public final java.util.List<java.lang.Long> insertAndReturnIdsList(T[] entities);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class EntityUpsertionAdapter<T> {
     ctor public EntityUpsertionAdapter(androidx.room.EntityInsertionAdapter<T> insertionAdapter, androidx.room.EntityDeletionOrUpdateAdapter<T> updateAdapter);
     method public void upsert(Iterable<? extends T> entities);
     method public void upsert(T entity);
-    method public void upsert(T![] entities);
+    method public void upsert(T[] entities);
     method public long upsertAndReturnId(T entity);
     method public long[] upsertAndReturnIdsArray(java.util.Collection<? extends T> entities);
-    method public long[] upsertAndReturnIdsArray(T![] entities);
-    method public Long![] upsertAndReturnIdsArrayBox(java.util.Collection<? extends T> entities);
-    method public Long![] upsertAndReturnIdsArrayBox(T![] entities);
+    method public long[] upsertAndReturnIdsArray(T[] entities);
+    method public Long[] upsertAndReturnIdsArrayBox(java.util.Collection<? extends T> entities);
+    method public Long[] upsertAndReturnIdsArrayBox(T[] entities);
     method public java.util.List<java.lang.Long> upsertAndReturnIdsList(java.util.Collection<? extends T> entities);
-    method public java.util.List<java.lang.Long> upsertAndReturnIdsList(T![] entities);
+    method public java.util.List<java.lang.Long> upsertAndReturnIdsList(T[] entities);
   }
 
   @SuppressCompatibility @RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface ExperimentalRoomApi {
@@ -78,8 +78,8 @@
     ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public InvalidationTracker(androidx.room.RoomDatabase database, java.util.Map<java.lang.String,java.lang.String> shadowTablesMap, java.util.Map<java.lang.String,java.util.Set<java.lang.String>> viewTables, java.lang.String... tableNames);
     method @WorkerThread public void addObserver(androidx.room.InvalidationTracker.Observer observer);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addWeakObserver(androidx.room.InvalidationTracker.Observer observer);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T> androidx.lifecycle.LiveData<T> createLiveData(String![] tableNames, boolean inTransaction, java.util.concurrent.Callable<T> computeFunction);
-    method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T> androidx.lifecycle.LiveData<T> createLiveData(String![] tableNames, java.util.concurrent.Callable<T> computeFunction);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T> androidx.lifecycle.LiveData<T> createLiveData(String[] tableNames, boolean inTransaction, java.util.concurrent.Callable<T?> computeFunction);
+    method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T> androidx.lifecycle.LiveData<T> createLiveData(String[] tableNames, java.util.concurrent.Callable<T?> computeFunction);
     method public void refreshVersionsAsync();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @WorkerThread public void refreshVersionsSync();
     method @WorkerThread public void removeObserver(androidx.room.InvalidationTracker.Observer observer);
@@ -91,7 +91,7 @@
 
   public abstract static class InvalidationTracker.Observer {
     ctor protected InvalidationTracker.Observer(String firstTable, java.lang.String... rest);
-    ctor public InvalidationTracker.Observer(String![] tables);
+    ctor public InvalidationTracker.Observer(String[] tables);
     method public abstract void onInvalidated(java.util.Set<java.lang.String> tables);
   }
 
@@ -128,7 +128,7 @@
     method public boolean isOpen();
     method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query);
     method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query, optional android.os.CancellationSignal? signal);
-    method public android.database.Cursor query(String query, Object![]? args);
+    method public android.database.Cursor query(String query, Object?[]? args);
     method public void runInTransaction(Runnable body);
     method public <V> V runInTransaction(java.util.concurrent.Callable<V> body);
     method @Deprecated public void setTransactionSuccessful();
@@ -180,8 +180,6 @@
   }
 
   public enum RoomDatabase.JournalMode {
-    method public static androidx.room.RoomDatabase.JournalMode valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.room.RoomDatabase.JournalMode[] values();
     enum_constant public static final androidx.room.RoomDatabase.JournalMode AUTOMATIC;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode TRUNCATE;
     enum_constant public static final androidx.room.RoomDatabase.JournalMode WRITE_AHEAD_LOGGING;
@@ -202,7 +200,7 @@
   }
 
   public static fun interface RoomDatabase.QueryCallback {
-    method public void onQuery(String sqlQuery, java.util.List<?> bindArgs);
+    method public void onQuery(String sqlQuery, java.util.List<? extends java.lang.Object?> bindArgs);
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class RoomOpenHelper extends androidx.sqlite.db.SupportSQLiteOpenHelper.Callback {
@@ -258,11 +256,11 @@
     field public static final androidx.room.RoomSQLiteQuery.Companion Companion;
     field @VisibleForTesting public static final int DESIRED_POOL_SIZE = 10; // 0xa
     field @VisibleForTesting public static final int POOL_LIMIT = 15; // 0xf
-    field @VisibleForTesting public final byte[]![] blobBindings;
+    field @VisibleForTesting public final byte[]?[] blobBindings;
     field @VisibleForTesting public final double[] doubleBindings;
     field @VisibleForTesting public final long[] longBindings;
     field @VisibleForTesting public static final java.util.TreeMap<java.lang.Integer,androidx.room.RoomSQLiteQuery> queryPool;
-    field @VisibleForTesting public final String![] stringBindings;
+    field @VisibleForTesting public final String?[] stringBindings;
   }
 
   public static final class RoomSQLiteQuery.Companion {
@@ -313,11 +311,11 @@
 
   @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class CursorUtil {
     method public static android.database.Cursor copyAndClose(android.database.Cursor c);
-    method @VisibleForTesting public static int findColumnIndexBySuffix(String![] columnNames, String name);
+    method @VisibleForTesting public static int findColumnIndexBySuffix(String[] columnNames, String name);
     method public static int getColumnIndex(android.database.Cursor c, String name);
     method public static int getColumnIndexOrThrow(android.database.Cursor c, String name);
     method public static inline <R> R useCursor(android.database.Cursor, kotlin.jvm.functions.Function1<? super android.database.Cursor,? extends R> block);
-    method public static android.database.Cursor wrapMappedColumns(android.database.Cursor cursor, String![] columnNames, int[] mapping);
+    method public static android.database.Cursor wrapMappedColumns(android.database.Cursor cursor, String[] columnNames, int[] mapping);
   }
 
   @RestrictTo({androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public final class DBUtil {
@@ -360,7 +358,7 @@
     method public static String? joinIntoString(java.util.List<java.lang.Integer>? input);
     method public static StringBuilder newStringBuilder();
     method public static java.util.List<java.lang.Integer>? splitToIntList(String? input);
-    field public static final String![] EMPTY_STRING_ARRAY;
+    field public static final String?[] EMPTY_STRING_ARRAY;
   }
 
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TableInfo {
diff --git a/room/room-runtime/api/restricted_current.ignore b/room/room-runtime/api/restricted_current.ignore
index c105ab0..b6582e0 100644
--- a/room/room-runtime/api/restricted_current.ignore
+++ b/room/room-runtime/api/restricted_current.ignore
@@ -1,6 +1,6 @@
 // Baseline format: 1.0
-DefaultValueChange: androidx.room.util.TableInfo#TableInfo(String, java.util.Map<java.lang.String,androidx.room.util.TableInfo.Column>, java.util.Set<androidx.room.util.TableInfo.ForeignKey>, java.util.Set<androidx.room.util.TableInfo.Index>) parameter #3:
-    Attempted to remove default value from parameter indices in androidx.room.util.TableInfo
+InvalidNullConversion: androidx.room.DatabaseConfiguration#sqliteOpenHelperFactory:
+    Attempted to change nullability of androidx.sqlite.db.SupportSQLiteOpenHelper.Factory (from NONNULL to NULLABLE) in field androidx.room.DatabaseConfiguration.sqliteOpenHelperFactory
 
 
 RemovedMethod: androidx.room.util.FtsTableInfo#parseOptions(String):
diff --git a/room/room-rxjava2/api/2.6.0-beta02.txt b/room/room-rxjava2/api/2.6.0-beta02.txt
index 64b6fe4..73d416e 100644
--- a/room/room-rxjava2/api/2.6.0-beta02.txt
+++ b/room/room-rxjava2/api/2.6.0-beta02.txt
@@ -7,8 +7,8 @@
 
   public class RxRoom {
     ctor @Deprecated public RxRoom();
-    method public static io.reactivex.Flowable<java.lang.Object!>! createFlowable(androidx.room.RoomDatabase!, java.lang.String!...);
-    method public static io.reactivex.Observable<java.lang.Object!>! createObservable(androidx.room.RoomDatabase!, java.lang.String!...);
+    method public static io.reactivex.Flowable<java.lang.Object!>! createFlowable(androidx.room.RoomDatabase!, java.lang.String!...!);
+    method public static io.reactivex.Observable<java.lang.Object!>! createObservable(androidx.room.RoomDatabase!, java.lang.String!...!);
     field public static final Object! NOTHING;
   }
 
diff --git a/room/room-rxjava2/api/restricted_2.6.0-beta02.txt b/room/room-rxjava2/api/restricted_2.6.0-beta02.txt
index 8513625b..a3ecfa2 100644
--- a/room/room-rxjava2/api/restricted_2.6.0-beta02.txt
+++ b/room/room-rxjava2/api/restricted_2.6.0-beta02.txt
@@ -8,12 +8,12 @@
   public class RxRoom {
     ctor @Deprecated public RxRoom();
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.Flowable<T!>! createFlowable(androidx.room.RoomDatabase!, boolean, String![]!, java.util.concurrent.Callable<T!>!);
-    method public static io.reactivex.Flowable<java.lang.Object!>! createFlowable(androidx.room.RoomDatabase!, java.lang.String!...);
+    method public static io.reactivex.Flowable<java.lang.Object!>! createFlowable(androidx.room.RoomDatabase!, java.lang.String!...!);
     method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.Flowable<T!>! createFlowable(androidx.room.RoomDatabase!, String![]!, java.util.concurrent.Callable<T!>!);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.Observable<T!>! createObservable(androidx.room.RoomDatabase!, boolean, String![]!, java.util.concurrent.Callable<T!>!);
-    method public static io.reactivex.Observable<java.lang.Object!>! createObservable(androidx.room.RoomDatabase!, java.lang.String!...);
+    method public static io.reactivex.Observable<java.lang.Object!>! createObservable(androidx.room.RoomDatabase!, java.lang.String!...!);
     method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.Observable<T!>! createObservable(androidx.room.RoomDatabase!, String![]!, java.util.concurrent.Callable<T!>!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.Single<T!>! createSingle(java.util.concurrent.Callable<? extends T>!);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.Single<T!>! createSingle(java.util.concurrent.Callable<? extends T!>!);
     field public static final Object! NOTHING;
   }
 
diff --git a/room/room-rxjava3/api/restricted_2.6.0-beta02.txt b/room/room-rxjava3/api/restricted_2.6.0-beta02.txt
index 6ec5079..4fb4dbd 100644
--- a/room/room-rxjava3/api/restricted_2.6.0-beta02.txt
+++ b/room/room-rxjava3/api/restricted_2.6.0-beta02.txt
@@ -10,7 +10,7 @@
     method public static io.reactivex.rxjava3.core.Flowable<java.lang.Object!> createFlowable(androidx.room.RoomDatabase, java.lang.String!...);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Observable<T!> createObservable(androidx.room.RoomDatabase, boolean, String![], java.util.concurrent.Callable<T!>);
     method public static io.reactivex.rxjava3.core.Observable<java.lang.Object!> createObservable(androidx.room.RoomDatabase, java.lang.String!...);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Single<T!> createSingle(java.util.concurrent.Callable<? extends T>);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static <T> io.reactivex.rxjava3.core.Single<T!> createSingle(java.util.concurrent.Callable<? extends T!>);
     field public static final Object NOTHING;
   }
 
diff --git a/savedstate/savedstate-ktx/api/1.2.0-beta02.txt b/savedstate/savedstate-ktx/api/1.2.0-beta02.txt
index b01f511..4d70c58 100644
--- a/savedstate/savedstate-ktx/api/1.2.0-beta02.txt
+++ b/savedstate/savedstate-ktx/api/1.2.0-beta02.txt
@@ -2,7 +2,7 @@
 package androidx.savedstate {
 
   public final class ViewKt {
-    method @Deprecated public static androidx.savedstate.SavedStateRegistryOwner! findViewTreeSavedStateRegistryOwner(android.view.View);
+    method @Deprecated public static androidx.savedstate.SavedStateRegistryOwner? findViewTreeSavedStateRegistryOwner(android.view.View);
   }
 
 }
diff --git a/savedstate/savedstate-ktx/api/restricted_1.2.0-beta02.txt b/savedstate/savedstate-ktx/api/restricted_1.2.0-beta02.txt
index b01f511..4d70c58 100644
--- a/savedstate/savedstate-ktx/api/restricted_1.2.0-beta02.txt
+++ b/savedstate/savedstate-ktx/api/restricted_1.2.0-beta02.txt
@@ -2,7 +2,7 @@
 package androidx.savedstate {
 
   public final class ViewKt {
-    method @Deprecated public static androidx.savedstate.SavedStateRegistryOwner! findViewTreeSavedStateRegistryOwner(android.view.View);
+    method @Deprecated public static androidx.savedstate.SavedStateRegistryOwner? findViewTreeSavedStateRegistryOwner(android.view.View);
   }
 
 }
diff --git a/security/security-crypto/api/1.0.0-rc01.txt b/security/security-crypto/api/1.0.0-rc01.txt
index 3fb36a8..e332871 100644
--- a/security/security-crypto/api/1.0.0-rc01.txt
+++ b/security/security-crypto/api/1.0.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.security.crypto {
 
   public final class EncryptedFile {
@@ -21,7 +21,7 @@
     method public boolean contains(String?);
     method public static android.content.SharedPreferences create(String, String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme) throws java.security.GeneralSecurityException, java.io.IOException;
     method public android.content.SharedPreferences.Editor edit();
-    method public java.util.Map<java.lang.String!,?> getAll();
+    method public java.util.Map<java.lang.String!,? extends java.lang.Object!> getAll();
     method public boolean getBoolean(String?, boolean);
     method public float getFloat(String?, float);
     method public int getInt(String?, int);
diff --git a/security/security-crypto/api/restricted_1.0.0-rc01.txt b/security/security-crypto/api/restricted_1.0.0-rc01.txt
index 3fb36a8..e332871 100644
--- a/security/security-crypto/api/restricted_1.0.0-rc01.txt
+++ b/security/security-crypto/api/restricted_1.0.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.security.crypto {
 
   public final class EncryptedFile {
@@ -21,7 +21,7 @@
     method public boolean contains(String?);
     method public static android.content.SharedPreferences create(String, String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme) throws java.security.GeneralSecurityException, java.io.IOException;
     method public android.content.SharedPreferences.Editor edit();
-    method public java.util.Map<java.lang.String!,?> getAll();
+    method public java.util.Map<java.lang.String!,? extends java.lang.Object!> getAll();
     method public boolean getBoolean(String?, boolean);
     method public float getFloat(String?, float);
     method public int getInt(String?, int);
diff --git a/sharetarget/sharetarget/api/restricted_1.2.0-beta02.txt b/sharetarget/sharetarget/api/restricted_1.2.0-beta02.txt
index c2cb6a4..92d8c5e 100644
--- a/sharetarget/sharetarget/api/restricted_1.2.0-beta02.txt
+++ b/sharetarget/sharetarget/api/restricted_1.2.0-beta02.txt
@@ -6,7 +6,7 @@
     method public java.util.List<android.service.chooser.ChooserTarget!>! onGetChooserTargets(android.content.ComponentName!, android.content.IntentFilter!);
   }
 
-  @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaverImpl extends androidx.core.content.pm.ShortcutInfoCompatSaver<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> {
+  @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ShortcutInfoCompatSaverImpl extends androidx.core.content.pm.ShortcutInfoCompatSaver<com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>!> {
     method @AnyThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!>! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
     method @AnyThread public static androidx.sharetarget.ShortcutInfoCompatSaverImpl! getInstance(android.content.Context!);
     method @WorkerThread public androidx.core.graphics.drawable.IconCompat! getShortcutIcon(String!) throws java.lang.Exception;
diff --git a/sqlite/sqlite/api/2.4.0-beta02.txt b/sqlite/sqlite/api/2.4.0-beta02.txt
index 3e4733c..0361ca3 100644
--- a/sqlite/sqlite/api/2.4.0-beta02.txt
+++ b/sqlite/sqlite/api/2.4.0-beta02.txt
@@ -3,8 +3,8 @@
 
   public final class SimpleSQLiteQuery implements androidx.sqlite.db.SupportSQLiteQuery {
     ctor public SimpleSQLiteQuery(String query);
-    ctor public SimpleSQLiteQuery(String query, Object![]? bindArgs);
-    method public static void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object![]? bindArgs);
+    ctor public SimpleSQLiteQuery(String query, Object?[]? bindArgs);
+    method public static void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object?[]? bindArgs);
     method public void bindTo(androidx.sqlite.db.SupportSQLiteProgram statement);
     method public int getArgCount();
     method public String getSql();
@@ -14,7 +14,7 @@
   }
 
   public static final class SimpleSQLiteQuery.Companion {
-    method public void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object![]? bindArgs);
+    method public void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object?[]? bindArgs);
   }
 
   public interface SupportSQLiteDatabase extends java.io.Closeable {
@@ -23,13 +23,13 @@
     method public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener transactionListener);
     method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener transactionListener);
     method public androidx.sqlite.db.SupportSQLiteStatement compileStatement(String sql);
-    method public int delete(String table, String? whereClause, Object![]? whereArgs);
+    method public int delete(String table, String? whereClause, Object?[]? whereArgs);
     method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN) public void disableWriteAheadLogging();
     method public boolean enableWriteAheadLogging();
     method public void endTransaction();
-    method public default void execPerConnectionSQL(String sql, Object![]? bindArgs);
+    method public default void execPerConnectionSQL(String sql, Object?[]? bindArgs);
     method @kotlin.jvm.Throws(exceptionClasses=SQLException::class) public void execSQL(String sql) throws android.database.SQLException;
-    method @kotlin.jvm.Throws(exceptionClasses=SQLException::class) public void execSQL(String sql, Object![] bindArgs) throws android.database.SQLException;
+    method @kotlin.jvm.Throws(exceptionClasses=SQLException::class) public void execSQL(String sql, Object?[] bindArgs) throws android.database.SQLException;
     method public java.util.List<android.util.Pair<java.lang.String,java.lang.String>>? getAttachedDbs();
     method public long getMaximumSize();
     method public long getPageSize();
@@ -47,7 +47,7 @@
     method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query);
     method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN) public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query, android.os.CancellationSignal? cancellationSignal);
     method public android.database.Cursor query(String query);
-    method public android.database.Cursor query(String query, Object![] bindArgs);
+    method public android.database.Cursor query(String query, Object?[] bindArgs);
     method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN) public void setForeignKeyConstraintsEnabled(boolean enabled);
     method public void setLocale(java.util.Locale locale);
     method public void setMaxSqlCacheSize(int cacheSize);
@@ -55,7 +55,7 @@
     method public void setPageSize(long);
     method public void setTransactionSuccessful();
     method public void setVersion(int);
-    method public int update(String table, int conflictAlgorithm, android.content.ContentValues values, String? whereClause, Object![]? whereArgs);
+    method public int update(String table, int conflictAlgorithm, android.content.ContentValues values, String? whereClause, Object?[]? whereArgs);
     method public boolean yieldIfContendedSafely();
     method public boolean yieldIfContendedSafely(long sleepAfterYieldDelayMillis);
     property public abstract java.util.List<android.util.Pair<java.lang.String,java.lang.String>>? attachedDbs;
@@ -139,14 +139,14 @@
 
   public final class SupportSQLiteQueryBuilder {
     method public static androidx.sqlite.db.SupportSQLiteQueryBuilder builder(String tableName);
-    method public androidx.sqlite.db.SupportSQLiteQueryBuilder columns(String![]? columns);
+    method public androidx.sqlite.db.SupportSQLiteQueryBuilder columns(String[]? columns);
     method public androidx.sqlite.db.SupportSQLiteQuery create();
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder distinct();
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder groupBy(String? groupBy);
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder having(String? having);
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder limit(String limit);
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder orderBy(String? orderBy);
-    method public androidx.sqlite.db.SupportSQLiteQueryBuilder selection(String? selection, Object![]? bindArgs);
+    method public androidx.sqlite.db.SupportSQLiteQueryBuilder selection(String? selection, Object?[]? bindArgs);
     field public static final androidx.sqlite.db.SupportSQLiteQueryBuilder.Companion Companion;
   }
 
diff --git a/sqlite/sqlite/api/restricted_2.4.0-beta02.txt b/sqlite/sqlite/api/restricted_2.4.0-beta02.txt
index 3e4733c..0361ca3 100644
--- a/sqlite/sqlite/api/restricted_2.4.0-beta02.txt
+++ b/sqlite/sqlite/api/restricted_2.4.0-beta02.txt
@@ -3,8 +3,8 @@
 
   public final class SimpleSQLiteQuery implements androidx.sqlite.db.SupportSQLiteQuery {
     ctor public SimpleSQLiteQuery(String query);
-    ctor public SimpleSQLiteQuery(String query, Object![]? bindArgs);
-    method public static void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object![]? bindArgs);
+    ctor public SimpleSQLiteQuery(String query, Object?[]? bindArgs);
+    method public static void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object?[]? bindArgs);
     method public void bindTo(androidx.sqlite.db.SupportSQLiteProgram statement);
     method public int getArgCount();
     method public String getSql();
@@ -14,7 +14,7 @@
   }
 
   public static final class SimpleSQLiteQuery.Companion {
-    method public void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object![]? bindArgs);
+    method public void bind(androidx.sqlite.db.SupportSQLiteProgram statement, Object?[]? bindArgs);
   }
 
   public interface SupportSQLiteDatabase extends java.io.Closeable {
@@ -23,13 +23,13 @@
     method public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener transactionListener);
     method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener transactionListener);
     method public androidx.sqlite.db.SupportSQLiteStatement compileStatement(String sql);
-    method public int delete(String table, String? whereClause, Object![]? whereArgs);
+    method public int delete(String table, String? whereClause, Object?[]? whereArgs);
     method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN) public void disableWriteAheadLogging();
     method public boolean enableWriteAheadLogging();
     method public void endTransaction();
-    method public default void execPerConnectionSQL(String sql, Object![]? bindArgs);
+    method public default void execPerConnectionSQL(String sql, Object?[]? bindArgs);
     method @kotlin.jvm.Throws(exceptionClasses=SQLException::class) public void execSQL(String sql) throws android.database.SQLException;
-    method @kotlin.jvm.Throws(exceptionClasses=SQLException::class) public void execSQL(String sql, Object![] bindArgs) throws android.database.SQLException;
+    method @kotlin.jvm.Throws(exceptionClasses=SQLException::class) public void execSQL(String sql, Object?[] bindArgs) throws android.database.SQLException;
     method public java.util.List<android.util.Pair<java.lang.String,java.lang.String>>? getAttachedDbs();
     method public long getMaximumSize();
     method public long getPageSize();
@@ -47,7 +47,7 @@
     method public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query);
     method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN) public android.database.Cursor query(androidx.sqlite.db.SupportSQLiteQuery query, android.os.CancellationSignal? cancellationSignal);
     method public android.database.Cursor query(String query);
-    method public android.database.Cursor query(String query, Object![] bindArgs);
+    method public android.database.Cursor query(String query, Object?[] bindArgs);
     method @RequiresApi(api=android.os.Build.VERSION_CODES.JELLY_BEAN) public void setForeignKeyConstraintsEnabled(boolean enabled);
     method public void setLocale(java.util.Locale locale);
     method public void setMaxSqlCacheSize(int cacheSize);
@@ -55,7 +55,7 @@
     method public void setPageSize(long);
     method public void setTransactionSuccessful();
     method public void setVersion(int);
-    method public int update(String table, int conflictAlgorithm, android.content.ContentValues values, String? whereClause, Object![]? whereArgs);
+    method public int update(String table, int conflictAlgorithm, android.content.ContentValues values, String? whereClause, Object?[]? whereArgs);
     method public boolean yieldIfContendedSafely();
     method public boolean yieldIfContendedSafely(long sleepAfterYieldDelayMillis);
     property public abstract java.util.List<android.util.Pair<java.lang.String,java.lang.String>>? attachedDbs;
@@ -139,14 +139,14 @@
 
   public final class SupportSQLiteQueryBuilder {
     method public static androidx.sqlite.db.SupportSQLiteQueryBuilder builder(String tableName);
-    method public androidx.sqlite.db.SupportSQLiteQueryBuilder columns(String![]? columns);
+    method public androidx.sqlite.db.SupportSQLiteQueryBuilder columns(String[]? columns);
     method public androidx.sqlite.db.SupportSQLiteQuery create();
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder distinct();
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder groupBy(String? groupBy);
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder having(String? having);
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder limit(String limit);
     method public androidx.sqlite.db.SupportSQLiteQueryBuilder orderBy(String? orderBy);
-    method public androidx.sqlite.db.SupportSQLiteQueryBuilder selection(String? selection, Object![]? bindArgs);
+    method public androidx.sqlite.db.SupportSQLiteQueryBuilder selection(String? selection, Object?[]? bindArgs);
     field public static final androidx.sqlite.db.SupportSQLiteQueryBuilder.Companion Companion;
   }
 
diff --git a/startup/startup-runtime/api/1.1.0-beta02.txt b/startup/startup-runtime/api/1.1.0-beta02.txt
index 434ba26..430dc8c0 100644
--- a/startup/startup-runtime/api/1.1.0-beta02.txt
+++ b/startup/startup-runtime/api/1.1.0-beta02.txt
@@ -3,8 +3,8 @@
 
   public final class AppInitializer {
     method public static androidx.startup.AppInitializer getInstance(android.content.Context);
-    method public <T> T initializeComponent(Class<? extends androidx.startup.Initializer<T!>>);
-    method public boolean isEagerlyInitialized(Class<? extends androidx.startup.Initializer<?>>);
+    method public <T> T initializeComponent(Class<? extends androidx.startup.Initializer<T!>!>);
+    method public boolean isEagerlyInitialized(Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>);
   }
 
   public class InitializationProvider extends android.content.ContentProvider {
@@ -19,7 +19,7 @@
 
   public interface Initializer<T> {
     method public T create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
 }
diff --git a/startup/startup-runtime/api/restricted_1.1.0-beta02.txt b/startup/startup-runtime/api/restricted_1.1.0-beta02.txt
index 434ba26..430dc8c0 100644
--- a/startup/startup-runtime/api/restricted_1.1.0-beta02.txt
+++ b/startup/startup-runtime/api/restricted_1.1.0-beta02.txt
@@ -3,8 +3,8 @@
 
   public final class AppInitializer {
     method public static androidx.startup.AppInitializer getInstance(android.content.Context);
-    method public <T> T initializeComponent(Class<? extends androidx.startup.Initializer<T!>>);
-    method public boolean isEagerlyInitialized(Class<? extends androidx.startup.Initializer<?>>);
+    method public <T> T initializeComponent(Class<? extends androidx.startup.Initializer<T!>!>);
+    method public boolean isEagerlyInitialized(Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>);
   }
 
   public class InitializationProvider extends android.content.ContentProvider {
@@ -19,7 +19,7 @@
 
   public interface Initializer<T> {
     method public T create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
 }
diff --git a/swiperefreshlayout/swiperefreshlayout/api/1.1.0-rc01.txt b/swiperefreshlayout/swiperefreshlayout/api/1.1.0-rc01.txt
index 40ac939..c56a419 100644
--- a/swiperefreshlayout/swiperefreshlayout/api/1.1.0-rc01.txt
+++ b/swiperefreshlayout/swiperefreshlayout/api/1.1.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.swiperefreshlayout.widget {
 
   public class CircularProgressDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable {
@@ -42,8 +42,8 @@
     ctor public SwipeRefreshLayout(android.content.Context, android.util.AttributeSet?);
     method public boolean canChildScrollUp();
     method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
     method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
+    method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
     method public int getProgressCircleDiameter();
     method public int getProgressViewEndOffset();
     method public int getProgressViewStartOffset();
@@ -51,14 +51,14 @@
     method public boolean isRefreshing();
     method public void onMeasure(int, int);
     method public void onNestedPreScroll(android.view.View!, int, int, int[]!, int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
     method public void onNestedScroll(android.view.View!, int, int, int, int, int);
+    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
     method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
     method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
     method public void onStopNestedScroll(android.view.View!, int);
-    method @Deprecated public void setColorScheme(@ColorRes int...);
-    method public void setColorSchemeColors(@ColorInt int...);
-    method public void setColorSchemeResources(@ColorRes int...);
+    method @Deprecated public void setColorScheme(@ColorRes int...!);
+    method public void setColorSchemeColors(@ColorInt int...!);
+    method public void setColorSchemeResources(@ColorRes int...!);
     method public void setDistanceToTriggerSync(int);
     method @Deprecated public void setLegacyRequestDisallowInterceptTouchEventEnabled(boolean);
     method public void setOnChildScrollUpCallback(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnChildScrollUpCallback?);
diff --git a/swiperefreshlayout/swiperefreshlayout/api/restricted_1.1.0-rc01.txt b/swiperefreshlayout/swiperefreshlayout/api/restricted_1.1.0-rc01.txt
index f234294..ba08d54 100644
--- a/swiperefreshlayout/swiperefreshlayout/api/restricted_1.1.0-rc01.txt
+++ b/swiperefreshlayout/swiperefreshlayout/api/restricted_1.1.0-rc01.txt
@@ -1,4 +1,4 @@
-// Signature format: 3.0
+// Signature format: 4.0
 package androidx.swiperefreshlayout.widget {
 
   public class CircularProgressDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Animatable {
@@ -45,8 +45,8 @@
     ctor public SwipeRefreshLayout(android.content.Context, android.util.AttributeSet?);
     method public boolean canChildScrollUp();
     method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
-    method public void dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
     method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
+    method public void dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
     method public int getProgressCircleDiameter();
     method public int getProgressViewEndOffset();
     method public int getProgressViewStartOffset();
@@ -54,14 +54,14 @@
     method public boolean isRefreshing();
     method public void onMeasure(int, int);
     method public void onNestedPreScroll(android.view.View!, int, int, int[]!, int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
     method public void onNestedScroll(android.view.View!, int, int, int, int, int);
+    method public void onNestedScroll(android.view.View, int, int, int, int, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
     method public void onNestedScrollAccepted(android.view.View!, android.view.View!, int, int);
     method public boolean onStartNestedScroll(android.view.View!, android.view.View!, int, int);
     method public void onStopNestedScroll(android.view.View!, int);
-    method @Deprecated public void setColorScheme(@ColorRes int...);
-    method public void setColorSchemeColors(@ColorInt int...);
-    method public void setColorSchemeResources(@ColorRes int...);
+    method @Deprecated public void setColorScheme(@ColorRes int...!);
+    method public void setColorSchemeColors(@ColorInt int...!);
+    method public void setColorSchemeResources(@ColorRes int...!);
     method public void setDistanceToTriggerSync(int);
     method @Deprecated public void setLegacyRequestDisallowInterceptTouchEventEnabled(boolean);
     method public void setOnChildScrollUpCallback(androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnChildScrollUpCallback?);
diff --git a/test/uiautomator/uiautomator/api/2.3.0-beta01.txt b/test/uiautomator/uiautomator/api/2.3.0-beta01.txt
index e6772e0..89cf12f6 100644
--- a/test/uiautomator/uiautomator/api/2.3.0-beta01.txt
+++ b/test/uiautomator/uiautomator/api/2.3.0-beta01.txt
@@ -132,7 +132,7 @@
     method public void sendStatus(int, android.os.Bundle);
   }
 
-  public abstract class SearchCondition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.Searchable,U> {
+  public abstract class SearchCondition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.Searchable!,U!> {
     ctor public SearchCondition();
   }
 
@@ -356,7 +356,7 @@
     method public <U> U! wait(androidx.test.uiautomator.UiObject2Condition<U!>, long);
   }
 
-  public abstract class UiObject2Condition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.UiObject2,U> {
+  public abstract class UiObject2Condition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.UiObject2!,U!> {
     ctor public UiObject2Condition();
   }
 
diff --git a/test/uiautomator/uiautomator/api/restricted_2.3.0-beta01.txt b/test/uiautomator/uiautomator/api/restricted_2.3.0-beta01.txt
index e6772e0..89cf12f6 100644
--- a/test/uiautomator/uiautomator/api/restricted_2.3.0-beta01.txt
+++ b/test/uiautomator/uiautomator/api/restricted_2.3.0-beta01.txt
@@ -132,7 +132,7 @@
     method public void sendStatus(int, android.os.Bundle);
   }
 
-  public abstract class SearchCondition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.Searchable,U> {
+  public abstract class SearchCondition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.Searchable!,U!> {
     ctor public SearchCondition();
   }
 
@@ -356,7 +356,7 @@
     method public <U> U! wait(androidx.test.uiautomator.UiObject2Condition<U!>, long);
   }
 
-  public abstract class UiObject2Condition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.UiObject2,U> {
+  public abstract class UiObject2Condition<U> implements androidx.test.uiautomator.Condition<androidx.test.uiautomator.UiObject2!,U!> {
     ctor public UiObject2Condition();
   }
 
diff --git a/tracing/tracing-perfetto/api/1.0.0-beta03.txt b/tracing/tracing-perfetto/api/1.0.0-beta03.txt
index 17a19c5..0a74331 100644
--- a/tracing/tracing-perfetto/api/1.0.0-beta03.txt
+++ b/tracing/tracing-perfetto/api/1.0.0-beta03.txt
@@ -12,7 +12,7 @@
   public final class StartupTracingInitializer implements androidx.startup.Initializer<kotlin.Unit> {
     ctor public StartupTracingInitializer();
     method public void create(android.content.Context context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>>> dependencies();
   }
 
 }
diff --git a/tracing/tracing-perfetto/api/restricted_1.0.0-beta03.txt b/tracing/tracing-perfetto/api/restricted_1.0.0-beta03.txt
index 17a19c5..0a74331 100644
--- a/tracing/tracing-perfetto/api/restricted_1.0.0-beta03.txt
+++ b/tracing/tracing-perfetto/api/restricted_1.0.0-beta03.txt
@@ -12,7 +12,7 @@
   public final class StartupTracingInitializer implements androidx.startup.Initializer<kotlin.Unit> {
     ctor public StartupTracingInitializer();
     method public void create(android.content.Context context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>>> dependencies();
   }
 
 }
diff --git a/transition/transition/api/1.5.0-beta01.txt b/transition/transition/api/1.5.0-beta01.txt
index 6079dfe..7b3d1f53 100644
--- a/transition/transition/api/1.5.0-beta01.txt
+++ b/transition/transition/api/1.5.0-beta01.txt
@@ -126,7 +126,7 @@
     method public androidx.transition.Transition addListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.Transition addTarget(android.view.View);
     method public androidx.transition.Transition addTarget(@IdRes int);
-    method public androidx.transition.Transition addTarget(Class<?>);
+    method public androidx.transition.Transition addTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.Transition addTarget(String);
     method public abstract void captureEndValues(androidx.transition.TransitionValues);
     method public abstract void captureStartValues(androidx.transition.TransitionValues);
@@ -134,10 +134,10 @@
     method public android.animation.Animator? createAnimator(android.view.ViewGroup, androidx.transition.TransitionValues?, androidx.transition.TransitionValues?);
     method public androidx.transition.Transition excludeChildren(android.view.View, boolean);
     method public androidx.transition.Transition excludeChildren(@IdRes int, boolean);
-    method public androidx.transition.Transition excludeChildren(Class<?>, boolean);
+    method public androidx.transition.Transition excludeChildren(Class<? extends java.lang.Object!>, boolean);
     method public androidx.transition.Transition excludeTarget(android.view.View, boolean);
     method public androidx.transition.Transition excludeTarget(@IdRes int, boolean);
-    method public androidx.transition.Transition excludeTarget(Class<?>, boolean);
+    method public androidx.transition.Transition excludeTarget(Class<? extends java.lang.Object!>, boolean);
     method public androidx.transition.Transition excludeTarget(String, boolean);
     method public long getDuration();
     method public android.graphics.Rect? getEpicenter();
@@ -150,7 +150,7 @@
     method public long getStartDelay();
     method public java.util.List<java.lang.Integer!> getTargetIds();
     method public java.util.List<java.lang.String!>? getTargetNames();
-    method public java.util.List<java.lang.Class<?>!>? getTargetTypes();
+    method public java.util.List<java.lang.Class<? extends java.lang.Object!>!>? getTargetTypes();
     method public java.util.List<android.view.View!> getTargets();
     method public String![]? getTransitionProperties();
     method public androidx.transition.TransitionValues? getTransitionValues(android.view.View, boolean);
@@ -159,7 +159,7 @@
     method public androidx.transition.Transition removeListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.Transition removeTarget(android.view.View);
     method public androidx.transition.Transition removeTarget(@IdRes int);
-    method public androidx.transition.Transition removeTarget(Class<?>);
+    method public androidx.transition.Transition removeTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.Transition removeTarget(String);
     method public androidx.transition.Transition setDuration(long);
     method public void setEpicenterCallback(androidx.transition.Transition.EpicenterCallback?);
@@ -246,7 +246,7 @@
     method public androidx.transition.TransitionSet addListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.TransitionSet addTarget(android.view.View);
     method public androidx.transition.TransitionSet addTarget(@IdRes int);
-    method public androidx.transition.TransitionSet addTarget(Class<?>);
+    method public androidx.transition.TransitionSet addTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.TransitionSet addTarget(String);
     method public androidx.transition.TransitionSet addTransition(androidx.transition.Transition);
     method public void captureEndValues(androidx.transition.TransitionValues);
@@ -257,7 +257,7 @@
     method public androidx.transition.TransitionSet removeListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.TransitionSet removeTarget(android.view.View);
     method public androidx.transition.TransitionSet removeTarget(@IdRes int);
-    method public androidx.transition.TransitionSet removeTarget(Class<?>);
+    method public androidx.transition.TransitionSet removeTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.TransitionSet removeTarget(String);
     method public androidx.transition.TransitionSet removeTransition(androidx.transition.Transition);
     method public androidx.transition.TransitionSet setDuration(long);
diff --git a/transition/transition/api/restricted_1.5.0-beta01.txt b/transition/transition/api/restricted_1.5.0-beta01.txt
index 5c0984a..88d1007 100644
--- a/transition/transition/api/restricted_1.5.0-beta01.txt
+++ b/transition/transition/api/restricted_1.5.0-beta01.txt
@@ -149,7 +149,7 @@
     method public androidx.transition.Transition addListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.Transition addTarget(android.view.View);
     method public androidx.transition.Transition addTarget(@IdRes int);
-    method public androidx.transition.Transition addTarget(Class<?>);
+    method public androidx.transition.Transition addTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.Transition addTarget(String);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void animate(android.animation.Animator?);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void cancel();
@@ -160,10 +160,10 @@
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void end();
     method public androidx.transition.Transition excludeChildren(android.view.View, boolean);
     method public androidx.transition.Transition excludeChildren(@IdRes int, boolean);
-    method public androidx.transition.Transition excludeChildren(Class<?>, boolean);
+    method public androidx.transition.Transition excludeChildren(Class<? extends java.lang.Object!>, boolean);
     method public androidx.transition.Transition excludeTarget(android.view.View, boolean);
     method public androidx.transition.Transition excludeTarget(@IdRes int, boolean);
-    method public androidx.transition.Transition excludeTarget(Class<?>, boolean);
+    method public androidx.transition.Transition excludeTarget(Class<? extends java.lang.Object!>, boolean);
     method public androidx.transition.Transition excludeTarget(String, boolean);
     method public long getDuration();
     method public android.graphics.Rect? getEpicenter();
@@ -176,7 +176,7 @@
     method public long getStartDelay();
     method public java.util.List<java.lang.Integer!> getTargetIds();
     method public java.util.List<java.lang.String!>? getTargetNames();
-    method public java.util.List<java.lang.Class<?>!>? getTargetTypes();
+    method public java.util.List<java.lang.Class<? extends java.lang.Object!>!>? getTargetTypes();
     method public java.util.List<android.view.View!> getTargets();
     method public String![]? getTransitionProperties();
     method public androidx.transition.TransitionValues? getTransitionValues(android.view.View, boolean);
@@ -186,7 +186,7 @@
     method public androidx.transition.Transition removeListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.Transition removeTarget(android.view.View);
     method public androidx.transition.Transition removeTarget(@IdRes int);
-    method public androidx.transition.Transition removeTarget(Class<?>);
+    method public androidx.transition.Transition removeTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.Transition removeTarget(String);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void resume(android.view.View?);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void runAnimators();
@@ -279,7 +279,7 @@
     method public androidx.transition.TransitionSet addListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.TransitionSet addTarget(android.view.View);
     method public androidx.transition.TransitionSet addTarget(@IdRes int);
-    method public androidx.transition.TransitionSet addTarget(Class<?>);
+    method public androidx.transition.TransitionSet addTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.TransitionSet addTarget(String);
     method public androidx.transition.TransitionSet addTransition(androidx.transition.Transition);
     method public void captureEndValues(androidx.transition.TransitionValues);
@@ -290,7 +290,7 @@
     method public androidx.transition.TransitionSet removeListener(androidx.transition.Transition.TransitionListener);
     method public androidx.transition.TransitionSet removeTarget(android.view.View);
     method public androidx.transition.TransitionSet removeTarget(@IdRes int);
-    method public androidx.transition.TransitionSet removeTarget(Class<?>);
+    method public androidx.transition.TransitionSet removeTarget(Class<? extends java.lang.Object!>);
     method public androidx.transition.TransitionSet removeTarget(String);
     method public androidx.transition.TransitionSet removeTransition(androidx.transition.Transition);
     method public androidx.transition.TransitionSet setDuration(long);
diff --git a/versionedparcelable/versionedparcelable/api/1.2.0-beta01.txt b/versionedparcelable/versionedparcelable/api/1.2.0-beta01.txt
index 401fa9e..d33ba61 100644
--- a/versionedparcelable/versionedparcelable/api/1.2.0-beta01.txt
+++ b/versionedparcelable/versionedparcelable/api/1.2.0-beta01.txt
@@ -5,7 +5,7 @@
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> T? getVersionedParcelable(android.os.Bundle, String);
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> java.util.List<T!> getVersionedParcelableList(android.os.Bundle, String?);
     method public static void putVersionedParcelable(android.os.Bundle, String, androidx.versionedparcelable.VersionedParcelable?);
-    method public static void putVersionedParcelableList(android.os.Bundle, String, java.util.List<? extends androidx.versionedparcelable.VersionedParcelable>);
+    method public static void putVersionedParcelableList(android.os.Bundle, String, java.util.List<? extends androidx.versionedparcelable.VersionedParcelable!>);
   }
 
   public interface VersionedParcelable {
diff --git a/versionedparcelable/versionedparcelable/api/restricted_1.2.0-beta01.txt b/versionedparcelable/versionedparcelable/api/restricted_1.2.0-beta01.txt
index 6cb1356..7018742 100644
--- a/versionedparcelable/versionedparcelable/api/restricted_1.2.0-beta01.txt
+++ b/versionedparcelable/versionedparcelable/api/restricted_1.2.0-beta01.txt
@@ -21,7 +21,7 @@
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> T? getVersionedParcelable(android.os.Bundle, String);
     method public static <T extends androidx.versionedparcelable.VersionedParcelable> java.util.List<T!> getVersionedParcelableList(android.os.Bundle, String?);
     method public static void putVersionedParcelable(android.os.Bundle, String, androidx.versionedparcelable.VersionedParcelable?);
-    method public static void putVersionedParcelableList(android.os.Bundle, String, java.util.List<? extends androidx.versionedparcelable.VersionedParcelable>);
+    method public static void putVersionedParcelableList(android.os.Bundle, String, java.util.List<? extends androidx.versionedparcelable.VersionedParcelable!>);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void toOutputStream(androidx.versionedparcelable.VersionedParcelable?, java.io.OutputStream);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.os.Parcelable toParcelable(androidx.versionedparcelable.VersionedParcelable?);
   }
@@ -145,7 +145,7 @@
   @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target(java.lang.annotation.ElementType.TYPE) public @interface VersionedParcelize {
     method public abstract boolean allowSerialization() default false;
     method public abstract int[] deprecatedIds() default {};
-    method public abstract Class<?> factory() default void.class;
+    method public abstract Class<? extends java.lang.Object!> factory() default void.class;
     method public abstract boolean ignoreParcelables() default false;
     method public abstract boolean isCustom() default false;
     method public abstract String jetifyAs() default "";
diff --git a/wear/compose/compose-foundation/api/1.2.0-beta01.txt b/wear/compose/compose-foundation/api/1.2.0-beta01.txt
index 03d2707..5acf706 100644
--- a/wear/compose/compose-foundation/api/1.2.0-beta01.txt
+++ b/wear/compose/compose-foundation/api/1.2.0-beta01.txt
@@ -27,8 +27,8 @@
   }
 
   public final class CompositionLocalsKt {
-    method @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> getLocalReduceMotion();
-    property @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> LocalReduceMotion;
+    method @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> getLocalReduceMotion();
+    property @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> LocalReduceMotion;
   }
 
   public interface CurvedAlignment {
@@ -105,10 +105,10 @@
 
   public final class CurvedDrawKt {
     method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
-    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>![] colorStops, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
     method public static androidx.wear.compose.foundation.CurvedModifier background(androidx.wear.compose.foundation.CurvedModifier, long color, optional int cap);
     method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
-    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>![] colorStops, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
   }
 
   public final class CurvedLayoutKt {
@@ -134,7 +134,7 @@
   }
 
   public final class CurvedParentDataKt {
-    method public static androidx.wear.compose.foundation.CurvedModifier parentDataModifier(androidx.wear.compose.foundation.CurvedModifier, kotlin.jvm.functions.Function1<java.lang.Object,?> modifyParentData);
+    method public static androidx.wear.compose.foundation.CurvedModifier parentDataModifier(androidx.wear.compose.foundation.CurvedModifier, kotlin.jvm.functions.Function1<java.lang.Object?,?> modifyParentData);
     method public static androidx.wear.compose.foundation.CurvedModifier weight(androidx.wear.compose.foundation.CurvedModifier, float weight);
   }
 
@@ -200,26 +200,26 @@
     property public final boolean expanded;
   }
 
-  @kotlin.RequiresOptIn(message="This Wear Foundation API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearFoundationApi {
+  @SuppressCompatibility @kotlin.RequiresOptIn(message="This Wear Foundation API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearFoundationApi {
   }
 
   public final class HierarchicalFocusCoordinatorKt {
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void HierarchicalFocusCoordinator(kotlin.jvm.functions.Function0<java.lang.Boolean> requiresFocus, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void OnFocusChange(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super java.lang.Boolean,kotlin.Unit> onFocusChanged);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void RequestFocusWhenActive(androidx.compose.ui.focus.FocusRequester focusRequester);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.ui.focus.FocusRequester rememberActiveFocusRequester();
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void HierarchicalFocusCoordinator(kotlin.jvm.functions.Function0<java.lang.Boolean> requiresFocus, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void OnFocusChange(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super java.lang.Boolean,kotlin.Unit> onFocusChanged);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void RequestFocusWhenActive(androidx.compose.ui.focus.FocusRequester focusRequester);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.ui.focus.FocusRequester rememberActiveFocusRequester();
   }
 
-  @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public fun interface ReduceMotion {
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public fun interface ReduceMotion {
     method @androidx.compose.runtime.Composable public boolean enabled();
   }
 
-  @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public interface RevealScope {
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public interface RevealScope {
     method public float getRevealOffset();
     property public abstract float revealOffset;
   }
 
-  @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public final class RevealState {
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public final class RevealState {
     method public suspend Object? animateTo(int targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public int getCurrentValue();
     method public float getOffset();
@@ -234,7 +234,7 @@
     property public final int targetValue;
   }
 
-  @androidx.wear.compose.foundation.ExperimentalWearFoundationApi @kotlin.jvm.JvmInline public final value class RevealValue {
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi @kotlin.jvm.JvmInline public final value class RevealValue {
     method public int getValue();
     property public final int value;
     field public static final androidx.wear.compose.foundation.RevealValue.Companion Companion;
@@ -250,9 +250,9 @@
   }
 
   public final class SwipeToRevealKt {
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void SwipeToReveal(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> action, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.wear.compose.foundation.RevealState state, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? additionalAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoAction, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> createAnchors(optional float coveredAnchor, optional float revealingAnchor, optional float revealedAnchor);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.wear.compose.foundation.RevealState rememberRevealState(optional int initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealValue,java.lang.Boolean> confirmValueChange, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super java.lang.Float,java.lang.Float> positionalThreshold, optional java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> anchors);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void SwipeToReveal(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> action, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.wear.compose.foundation.RevealState state, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? additionalAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoAction, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> createAnchors(optional float coveredAnchor, optional float revealingAnchor, optional float revealedAnchor);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.wear.compose.foundation.RevealState rememberRevealState(optional int initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealValue,java.lang.Boolean> confirmValueChange, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super java.lang.Float,java.lang.Float> positionalThreshold, optional java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> anchors);
   }
 
 }
@@ -272,9 +272,9 @@
   public final class ScalingLazyColumnKt {
     method @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.foundation.lazy.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
     method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
-    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
@@ -347,14 +347,14 @@
 
   @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
     ctor public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
-    method public suspend Object? animateScrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public float dispatchRawDelta(float delta);
     method public int getCenterItemIndex();
     method public int getCenterItemScrollOffset();
     method public androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo getLayoutInfo();
     method public boolean isScrollInProgress();
     method public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method public suspend Object? scrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public boolean canScrollBackward;
     property public boolean canScrollForward;
     property public final int centerItemIndex;
diff --git a/wear/compose/compose-foundation/api/1.4.0-beta02.txt b/wear/compose/compose-foundation/api/1.4.0-beta02.txt
new file mode 100644
index 0000000..d2d5799
--- /dev/null
+++ b/wear/compose/compose-foundation/api/1.4.0-beta02.txt
@@ -0,0 +1,501 @@
+// Signature format: 4.0
+package androidx.wear.compose.foundation {
+
+  @kotlin.jvm.JvmInline public final value class AnchorType {
+    field public static final androidx.wear.compose.foundation.AnchorType.Companion Companion;
+  }
+
+  public static final class AnchorType.Companion {
+    method public float getCenter();
+    method public float getEnd();
+    method public float getStart();
+    property public final float Center;
+    property public final float End;
+    property public final float Start;
+  }
+
+  @androidx.compose.runtime.Stable public interface ArcPaddingValues {
+    method public float calculateAfterPadding(androidx.compose.ui.unit.LayoutDirection layoutDirection, int angularDirection);
+    method public float calculateBeforePadding(androidx.compose.ui.unit.LayoutDirection layoutDirection, int angularDirection);
+    method public float calculateInnerPadding(int radialDirection);
+    method public float calculateOuterPadding(int radialDirection);
+  }
+
+  public final class BasicCurvedTextKt {
+    method public static void basicCurvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow, optional kotlin.jvm.functions.Function0<androidx.wear.compose.foundation.CurvedTextStyle> style);
+    method public static void basicCurvedText(androidx.wear.compose.foundation.CurvedScope, String text, androidx.wear.compose.foundation.CurvedTextStyle style, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
+  }
+
+  public final class BasicSwipeToDismissBoxKt {
+    method @androidx.compose.runtime.Composable public static void BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional androidx.compose.ui.Modifier modifier, optional Object backgroundKey, optional Object contentKey, optional boolean userSwipeEnabled, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void BasicSwipeToDismissBox(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissed, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional Object backgroundKey, optional Object contentKey, optional boolean userSwipeEnabled, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method public static androidx.compose.ui.Modifier edgeSwipeToDismiss(androidx.compose.ui.Modifier, androidx.wear.compose.foundation.SwipeToDismissBoxState swipeToDismissBoxState, optional float edgeWidth);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.foundation.SwipeToDismissBoxState rememberSwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+  }
+
+  public final class CompositionLocalsKt {
+    method @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> getLocalReduceMotion();
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalSwipeToDismissBackgroundScrimColor();
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalSwipeToDismissContentScrimColor();
+    property @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> LocalReduceMotion;
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalSwipeToDismissBackgroundScrimColor;
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalSwipeToDismissContentScrimColor;
+  }
+
+  public interface CurvedAlignment {
+  }
+
+  @kotlin.jvm.JvmInline public static final value class CurvedAlignment.Angular {
+    field public static final androidx.wear.compose.foundation.CurvedAlignment.Angular.Companion Companion;
+  }
+
+  public static final class CurvedAlignment.Angular.Companion {
+    method public float Custom(float ratio);
+    method public float getCenter();
+    method public float getEnd();
+    method public float getStart();
+    property public final float Center;
+    property public final float End;
+    property public final float Start;
+  }
+
+  @kotlin.jvm.JvmInline public static final value class CurvedAlignment.Radial {
+    field public static final androidx.wear.compose.foundation.CurvedAlignment.Radial.Companion Companion;
+  }
+
+  public static final class CurvedAlignment.Radial.Companion {
+    method public float Custom(float ratio);
+    method public float getCenter();
+    method public float getInner();
+    method public float getOuter();
+    property public final float Center;
+    property public final float Inner;
+    property public final float Outer;
+  }
+
+  public final class CurvedBoxKt {
+    method public static void curvedBox(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedAlignment.Radial? radialAlignment, optional androidx.wear.compose.foundation.CurvedAlignment.Angular? angularAlignment, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  public final class CurvedColumnKt {
+    method public static void curvedColumn(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedDirection.Radial? radialDirection, optional androidx.wear.compose.foundation.CurvedAlignment.Angular? angularAlignment, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  public final class CurvedComposableKt {
+    method public static void curvedComposable(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional float radialAlignment, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  public interface CurvedDirection {
+  }
+
+  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public static final value class CurvedDirection.Angular {
+    field public static final androidx.wear.compose.foundation.CurvedDirection.Angular.Companion Companion;
+  }
+
+  public static final class CurvedDirection.Angular.Companion {
+    method public int getClockwise();
+    method public int getCounterClockwise();
+    method public int getNormal();
+    method public int getReversed();
+    property public final int Clockwise;
+    property public final int CounterClockwise;
+    property public final int Normal;
+    property public final int Reversed;
+  }
+
+  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public static final value class CurvedDirection.Radial {
+    field public static final androidx.wear.compose.foundation.CurvedDirection.Radial.Companion Companion;
+  }
+
+  public static final class CurvedDirection.Radial.Companion {
+    method public int getInsideOut();
+    method public int getOutsideIn();
+    property public final int InsideOut;
+    property public final int OutsideIn;
+  }
+
+  public final class CurvedDrawKt {
+    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier background(androidx.wear.compose.foundation.CurvedModifier, long color, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
+  }
+
+  public final class CurvedLayoutKt {
+    method @androidx.compose.runtime.Composable public static void CurvedLayout(optional androidx.compose.ui.Modifier modifier, optional float anchor, optional float anchorType, optional androidx.wear.compose.foundation.CurvedAlignment.Radial? radialAlignment, optional int angularDirection, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public sealed interface CurvedModifier {
+    method public default infix androidx.wear.compose.foundation.CurvedModifier then(androidx.wear.compose.foundation.CurvedModifier other);
+    field public static final androidx.wear.compose.foundation.CurvedModifier.Companion Companion;
+  }
+
+  public static final class CurvedModifier.Companion implements androidx.wear.compose.foundation.CurvedModifier {
+  }
+
+  public final class CurvedPaddingKt {
+    method public static androidx.wear.compose.foundation.ArcPaddingValues ArcPaddingValues(float all);
+    method public static androidx.wear.compose.foundation.ArcPaddingValues ArcPaddingValues(optional float radial, optional float angular);
+    method public static androidx.wear.compose.foundation.ArcPaddingValues ArcPaddingValues(optional float outer, optional float inner, optional float before, optional float after);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, androidx.wear.compose.foundation.ArcPaddingValues paddingValues);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, optional float all);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, optional float radial, optional float angular);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, float outer, float inner, float before, float after);
+  }
+
+  public final class CurvedParentDataKt {
+    method public static androidx.wear.compose.foundation.CurvedModifier parentDataModifier(androidx.wear.compose.foundation.CurvedModifier, kotlin.jvm.functions.Function1<java.lang.Object?,? extends java.lang.Object?> modifyParentData);
+    method public static androidx.wear.compose.foundation.CurvedModifier weight(androidx.wear.compose.foundation.CurvedModifier, @FloatRange(from=0.0, fromInclusive=false) float weight);
+  }
+
+  public final class CurvedRowKt {
+    method public static void curvedRow(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedAlignment.Radial? radialAlignment, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class CurvedScope {
+  }
+
+  public final class CurvedSizeKt {
+    method public static androidx.wear.compose.foundation.CurvedModifier angularSize(androidx.wear.compose.foundation.CurvedModifier, float sweepDegrees);
+    method public static androidx.wear.compose.foundation.CurvedModifier angularSizeDp(androidx.wear.compose.foundation.CurvedModifier, float angularWidth);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialSize(androidx.wear.compose.foundation.CurvedModifier, float thickness);
+    method public static androidx.wear.compose.foundation.CurvedModifier size(androidx.wear.compose.foundation.CurvedModifier, @FloatRange(from=0.0, to=360.0) float sweepDegrees, float thickness);
+    method public static androidx.wear.compose.foundation.CurvedModifier sizeIn(androidx.wear.compose.foundation.CurvedModifier, optional @FloatRange(from=0.0, to=360.0) float minSweepDegrees, optional @FloatRange(from=0.0, to=360.0) float maxSweepDegrees, optional float minThickness, optional float maxThickness);
+  }
+
+  public final class CurvedTextStyle {
+    ctor public CurvedTextStyle(androidx.compose.ui.text.TextStyle style);
+    ctor @Deprecated public CurvedTextStyle(optional long background, optional long color, optional long fontSize);
+    ctor public CurvedTextStyle(optional long background, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontSynthesis? fontSynthesis);
+    method @Deprecated public androidx.wear.compose.foundation.CurvedTextStyle copy(optional long background, optional long color, optional long fontSize);
+    method public androidx.wear.compose.foundation.CurvedTextStyle copy(optional long background, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontSynthesis? fontSynthesis);
+    method public long getBackground();
+    method public long getColor();
+    method public androidx.compose.ui.text.font.FontFamily? getFontFamily();
+    method public long getFontSize();
+    method public androidx.compose.ui.text.font.FontStyle? getFontStyle();
+    method public androidx.compose.ui.text.font.FontSynthesis? getFontSynthesis();
+    method public androidx.compose.ui.text.font.FontWeight? getFontWeight();
+    method public androidx.wear.compose.foundation.CurvedTextStyle merge(optional androidx.wear.compose.foundation.CurvedTextStyle? other);
+    method public operator androidx.wear.compose.foundation.CurvedTextStyle plus(androidx.wear.compose.foundation.CurvedTextStyle other);
+    property public final long background;
+    property public final long color;
+    property public final androidx.compose.ui.text.font.FontFamily? fontFamily;
+    property public final long fontSize;
+    property public final androidx.compose.ui.text.font.FontStyle? fontStyle;
+    property public final androidx.compose.ui.text.font.FontSynthesis? fontSynthesis;
+    property public final androidx.compose.ui.text.font.FontWeight? fontWeight;
+  }
+
+  public final class ExpandableItemsDefaults {
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getCollapseAnimationSpec();
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getExpandAnimationSpec();
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec;
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec;
+    field public static final androidx.wear.compose.foundation.ExpandableItemsDefaults INSTANCE;
+  }
+
+  public final class ExpandableKt {
+    method public static void expandableButton(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, androidx.wear.compose.foundation.ExpandableState state, optional Object? key, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method public static void expandableItem(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, androidx.wear.compose.foundation.ExpandableState state, optional Object? key, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> content);
+    method public static void expandableItems(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, androidx.wear.compose.foundation.ExpandableState state, int count, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Integer,kotlin.Unit> itemContent);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.foundation.ExpandableState rememberExpandableState(optional boolean initiallyExpanded, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static <T> androidx.wear.compose.foundation.ExpandableStateMapping<T> rememberExpandableStateMapping(optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> initiallyExpanded, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec);
+  }
+
+  public final class ExpandableState {
+    method public float getExpandProgress();
+    method public boolean isExpanded();
+    method public void setExpanded(boolean);
+    property public final float expandProgress;
+    property public final boolean expanded;
+    field public static final androidx.wear.compose.foundation.ExpandableState.Companion Companion;
+  }
+
+  public static final class ExpandableState.Companion {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.foundation.ExpandableState,java.lang.Boolean> saver(androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec, androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec);
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public final class ExpandableStateMapping<T> {
+    method public androidx.wear.compose.foundation.ExpandableState getOrPutNew(T key);
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(message="This Wear Foundation API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearFoundationApi {
+  }
+
+  public final class HierarchicalFocusCoordinatorKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void HierarchicalFocusCoordinator(kotlin.jvm.functions.Function0<java.lang.Boolean> requiresFocus, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void OnFocusChange(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super java.lang.Boolean,kotlin.Unit> onFocusChanged);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void RequestFocusWhenActive(androidx.compose.ui.focus.FocusRequester focusRequester);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.ui.focus.FocusRequester rememberActiveFocusRequester();
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public fun interface ReduceMotion {
+    method @androidx.compose.runtime.Composable public boolean enabled();
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi @kotlin.jvm.JvmInline public final value class RevealActionType {
+    method public int getValue();
+    property public final int value;
+    field public static final androidx.wear.compose.foundation.RevealActionType.Companion Companion;
+  }
+
+  public static final class RevealActionType.Companion {
+    method public int getNone();
+    method public int getPrimaryAction();
+    method public int getSecondaryAction();
+    method public int getUndoAction();
+    property public final int None;
+    property public final int PrimaryAction;
+    property public final int SecondaryAction;
+    property public final int UndoAction;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public interface RevealScope {
+    method public int getLastActionType();
+    method public float getRevealOffset();
+    property public abstract int lastActionType;
+    property public abstract float revealOffset;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public final class RevealState {
+    method public suspend Object? animateTo(int targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public int getCurrentValue();
+    method public int getLastActionType();
+    method public float getOffset();
+    method public java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> getSwipeAnchors();
+    method public int getTargetValue();
+    method public boolean isAnimationRunning();
+    method public void setLastActionType(int);
+    method public suspend Object? snapTo(int targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final int currentValue;
+    property public final boolean isAnimationRunning;
+    property public final int lastActionType;
+    property public final float offset;
+    property public final java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> swipeAnchors;
+    property public final int targetValue;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi @kotlin.jvm.JvmInline public final value class RevealValue {
+    method public int getValue();
+    property public final int value;
+    field public static final androidx.wear.compose.foundation.RevealValue.Companion Companion;
+  }
+
+  public static final class RevealValue.Companion {
+    method public int getCovered();
+    method public int getRevealed();
+    method public int getRevealing();
+    property public final int Covered;
+    property public final int Revealed;
+    property public final int Revealing;
+  }
+
+  public final class SwipeToDismissBoxDefaults {
+    method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
+    method public float getEdgeWidth();
+    property public final androidx.compose.animation.core.SpringSpec<java.lang.Float> AnimationSpec;
+    property public final float EdgeWidth;
+    field public static final androidx.wear.compose.foundation.SwipeToDismissBoxDefaults INSTANCE;
+  }
+
+  @androidx.compose.runtime.Stable public final class SwipeToDismissBoxState {
+    ctor public SwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+    method public androidx.wear.compose.foundation.SwipeToDismissValue getCurrentValue();
+    method public androidx.wear.compose.foundation.SwipeToDismissValue getTargetValue();
+    method public boolean isAnimationRunning();
+    method public suspend Object? snapTo(androidx.wear.compose.foundation.SwipeToDismissValue targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final androidx.wear.compose.foundation.SwipeToDismissValue currentValue;
+    property public final boolean isAnimationRunning;
+    property public final androidx.wear.compose.foundation.SwipeToDismissValue targetValue;
+  }
+
+  public enum SwipeToDismissKeys {
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Background;
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Content;
+  }
+
+  public enum SwipeToDismissValue {
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Default;
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Dismissed;
+  }
+
+  public final class SwipeToRevealKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void SwipeToReveal(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> primaryAction, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.wear.compose.foundation.RevealState state, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? secondaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoAction, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> createAnchors(optional float coveredAnchor, optional float revealingAnchor, optional float revealedAnchor);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.wear.compose.foundation.RevealState rememberRevealState(optional int initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealValue,java.lang.Boolean> confirmValueChange, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super java.lang.Float,java.lang.Float> positionalThreshold, optional java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> anchors);
+  }
+
+}
+
+package androidx.wear.compose.foundation.lazy {
+
+  @androidx.compose.runtime.Immutable public final class AutoCenteringParams {
+    ctor public AutoCenteringParams(optional int itemIndex, optional int itemOffset);
+  }
+
+  public final class ScalingLazyColumnDefaults {
+    method public androidx.wear.compose.foundation.lazy.ScalingParams scalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    method @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior snapFlingBehavior(androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional float snapOffset, optional androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> decay);
+    field public static final androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults INSTANCE;
+  }
+
+  public final class ScalingLazyColumnKt {
+    method @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.foundation.lazy.AutoCenteringParams? autoCentering, optional androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior? rotaryScrollableBehavior, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.foundation.lazy.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
+    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+  }
+
+  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
+    field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
+  }
+
+  public static final class ScalingLazyListAnchorType.Companion {
+    method public int getItemCenter();
+    method public int getItemStart();
+    property public final int ItemCenter;
+    property public final int ItemStart;
+  }
+
+  public sealed interface ScalingLazyListItemInfo {
+    method public float getAlpha();
+    method public int getIndex();
+    method public Object getKey();
+    method public int getOffset();
+    method public float getScale();
+    method public int getSize();
+    method public int getUnadjustedOffset();
+    method public int getUnadjustedSize();
+    property public abstract float alpha;
+    property public abstract int index;
+    property public abstract Object key;
+    property public abstract int offset;
+    property public abstract float scale;
+    property public abstract int size;
+    property public abstract int unadjustedOffset;
+    property public abstract int unadjustedSize;
+  }
+
+  @androidx.compose.runtime.Stable @androidx.wear.compose.foundation.lazy.ScalingLazyScopeMarker public sealed interface ScalingLazyListItemScope {
+    method public androidx.compose.ui.Modifier fillParentMaxHeight(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method public androidx.compose.ui.Modifier fillParentMaxSize(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method public androidx.compose.ui.Modifier fillParentMaxWidth(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+  }
+
+  public sealed interface ScalingLazyListLayoutInfo {
+    method public int getAfterAutoCenteringPadding();
+    method public int getAfterContentPadding();
+    method public int getAnchorType();
+    method public int getBeforeAutoCenteringPadding();
+    method public int getBeforeContentPadding();
+    method public androidx.compose.foundation.gestures.Orientation getOrientation();
+    method public boolean getReverseLayout();
+    method public int getTotalItemsCount();
+    method public int getViewportEndOffset();
+    method public long getViewportSize();
+    method public int getViewportStartOffset();
+    method public java.util.List<androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo> getVisibleItemsInfo();
+    property public abstract int afterAutoCenteringPadding;
+    property public abstract int afterContentPadding;
+    property public abstract int anchorType;
+    property public abstract int beforeAutoCenteringPadding;
+    property public abstract int beforeContentPadding;
+    property public abstract androidx.compose.foundation.gestures.Orientation orientation;
+    property public abstract boolean reverseLayout;
+    property public abstract int totalItemsCount;
+    property public abstract int viewportEndOffset;
+    property public abstract long viewportSize;
+    property public abstract int viewportStartOffset;
+    property public abstract java.util.List<androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo> visibleItemsInfo;
+  }
+
+  @androidx.wear.compose.foundation.lazy.ScalingLazyScopeMarker public sealed interface ScalingLazyListScope {
+    method public void item(optional Object? key, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,kotlin.Unit> content);
+    method public void items(int count, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,kotlin.Unit> itemContent);
+  }
+
+  @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
+    ctor public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+    method public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public float dispatchRawDelta(float delta);
+    method public int getCenterItemIndex();
+    method public int getCenterItemScrollOffset();
+    method public androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo getLayoutInfo();
+    method public boolean isScrollInProgress();
+    method public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public boolean canScrollBackward;
+    property public boolean canScrollForward;
+    property public final int centerItemIndex;
+    property public final int centerItemScrollOffset;
+    property public boolean isScrollInProgress;
+    property public final androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo layoutInfo;
+    field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListState.Companion Companion;
+  }
+
+  public static final class ScalingLazyListState.Companion {
+    method public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.foundation.lazy.ScalingLazyListState,java.lang.Object> getSaver();
+    property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.foundation.lazy.ScalingLazyListState,java.lang.Object> Saver;
+  }
+
+  public final class ScalingLazyListStateKt {
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.foundation.lazy.ScalingLazyListState rememberScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+  }
+
+  @kotlin.DslMarker public @interface ScalingLazyScopeMarker {
+  }
+
+  @androidx.compose.runtime.Stable public interface ScalingParams {
+    method @FloatRange(from=0.0, to=1.0) public float getEdgeAlpha();
+    method @FloatRange(from=0.0, to=1.0) public float getEdgeScale();
+    method @FloatRange(from=0.0, to=1.0) public float getMaxElementHeight();
+    method @FloatRange(from=0.0, to=1.0) public float getMaxTransitionArea();
+    method @FloatRange(from=0.0, to=1.0) public float getMinElementHeight();
+    method @FloatRange(from=0.0, to=1.0) public float getMinTransitionArea();
+    method public androidx.compose.animation.core.Easing getScaleInterpolator();
+    method public int resolveViewportVerticalOffset(long viewportConstraints);
+    property @FloatRange(from=0.0, to=1.0) public abstract float edgeAlpha;
+    property @FloatRange(from=0.0, to=1.0) public abstract float edgeScale;
+    property @FloatRange(from=0.0, to=1.0) public abstract float maxElementHeight;
+    property @FloatRange(from=0.0, to=1.0) public abstract float maxTransitionArea;
+    property @FloatRange(from=0.0, to=1.0) public abstract float minElementHeight;
+    property @FloatRange(from=0.0, to=1.0) public abstract float minTransitionArea;
+    property public abstract androidx.compose.animation.core.Easing scaleInterpolator;
+  }
+
+}
+
+package androidx.wear.compose.foundation.rotary {
+
+  public interface RotaryScrollableBehavior {
+    method public suspend Object? performScroll(kotlinx.coroutines.CoroutineScope, long timestampMillis, float delta, int inputDeviceId, androidx.compose.foundation.gestures.Orientation orientation, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+  }
+
+  public final class RotaryScrollableDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior behavior(androidx.compose.foundation.gestures.ScrollableState scrollableState, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean hapticFeedbackEnabled);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior snapBehavior(androidx.compose.foundation.gestures.ScrollableState scrollableState, androidx.wear.compose.foundation.rotary.RotarySnapLayoutInfoProvider layoutInfoProvider, optional float snapOffset, optional boolean hapticFeedbackEnabled);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior snapBehavior(androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollableState, optional float snapOffset, optional boolean hapticFeedbackEnabled);
+    field public static final androidx.wear.compose.foundation.rotary.RotaryScrollableDefaults INSTANCE;
+  }
+
+  public final class RotaryScrollableKt {
+    method public static androidx.compose.ui.Modifier rotaryScrollable(androidx.compose.ui.Modifier, androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior behavior, androidx.compose.ui.focus.FocusRequester focusRequester, optional boolean reverseDirection);
+  }
+
+  public interface RotarySnapLayoutInfoProvider {
+    method public float getAverageItemSize();
+    method public int getCurrentItemIndex();
+    method public float getCurrentItemOffset();
+    method public int getTotalItemCount();
+    property public abstract float averageItemSize;
+    property public abstract int currentItemIndex;
+    property public abstract float currentItemOffset;
+    property public abstract int totalItemCount;
+  }
+
+}
+
diff --git a/wear/compose/compose-foundation/api/res-1.4.0-beta02.txt b/wear/compose/compose-foundation/api/res-1.4.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/wear/compose/compose-foundation/api/res-1.4.0-beta02.txt
diff --git a/wear/compose/compose-foundation/api/restricted_1.2.0-beta01.txt b/wear/compose/compose-foundation/api/restricted_1.2.0-beta01.txt
index 91d6749..8308802 100644
--- a/wear/compose/compose-foundation/api/restricted_1.2.0-beta01.txt
+++ b/wear/compose/compose-foundation/api/restricted_1.2.0-beta01.txt
@@ -100,10 +100,10 @@
 
   public final class CurvedDrawKt {
     method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
-    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>![] colorStops, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
     method public static androidx.wear.compose.foundation.CurvedModifier background(androidx.wear.compose.foundation.CurvedModifier, long color, optional int cap);
     method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
-    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>![] colorStops, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
   }
 
   public final class CurvedLayoutKt {
@@ -129,7 +129,7 @@
   }
 
   public final class CurvedParentDataKt {
-    method public static androidx.wear.compose.foundation.CurvedModifier parentDataModifier(androidx.wear.compose.foundation.CurvedModifier, kotlin.jvm.functions.Function1<java.lang.Object,?> modifyParentData);
+    method public static androidx.wear.compose.foundation.CurvedModifier parentDataModifier(androidx.wear.compose.foundation.CurvedModifier, kotlin.jvm.functions.Function1<java.lang.Object?,?> modifyParentData);
     method public static androidx.wear.compose.foundation.CurvedModifier weight(androidx.wear.compose.foundation.CurvedModifier, float weight);
   }
 
@@ -195,8 +195,6 @@
     property public final boolean expanded;
   }
 
-}
-
 package androidx.wear.compose.foundation.lazy {
 
   @androidx.compose.runtime.Immutable public final class AutoCenteringParams {
@@ -212,9 +210,9 @@
   public final class ScalingLazyColumnKt {
     method @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.foundation.lazy.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
     method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
-    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
@@ -287,14 +285,14 @@
 
   @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
     ctor public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
-    method public suspend Object? animateScrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public float dispatchRawDelta(float delta);
     method public int getCenterItemIndex();
     method public int getCenterItemScrollOffset();
     method public androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo getLayoutInfo();
     method public boolean isScrollInProgress();
     method public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method public suspend Object? scrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public boolean canScrollBackward;
     property public boolean canScrollForward;
     property public final int centerItemIndex;
diff --git a/wear/compose/compose-foundation/api/restricted_1.4.0-beta02.txt b/wear/compose/compose-foundation/api/restricted_1.4.0-beta02.txt
new file mode 100644
index 0000000..d2d5799
--- /dev/null
+++ b/wear/compose/compose-foundation/api/restricted_1.4.0-beta02.txt
@@ -0,0 +1,501 @@
+// Signature format: 4.0
+package androidx.wear.compose.foundation {
+
+  @kotlin.jvm.JvmInline public final value class AnchorType {
+    field public static final androidx.wear.compose.foundation.AnchorType.Companion Companion;
+  }
+
+  public static final class AnchorType.Companion {
+    method public float getCenter();
+    method public float getEnd();
+    method public float getStart();
+    property public final float Center;
+    property public final float End;
+    property public final float Start;
+  }
+
+  @androidx.compose.runtime.Stable public interface ArcPaddingValues {
+    method public float calculateAfterPadding(androidx.compose.ui.unit.LayoutDirection layoutDirection, int angularDirection);
+    method public float calculateBeforePadding(androidx.compose.ui.unit.LayoutDirection layoutDirection, int angularDirection);
+    method public float calculateInnerPadding(int radialDirection);
+    method public float calculateOuterPadding(int radialDirection);
+  }
+
+  public final class BasicCurvedTextKt {
+    method public static void basicCurvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow, optional kotlin.jvm.functions.Function0<androidx.wear.compose.foundation.CurvedTextStyle> style);
+    method public static void basicCurvedText(androidx.wear.compose.foundation.CurvedScope, String text, androidx.wear.compose.foundation.CurvedTextStyle style, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
+  }
+
+  public final class BasicSwipeToDismissBoxKt {
+    method @androidx.compose.runtime.Composable public static void BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional androidx.compose.ui.Modifier modifier, optional Object backgroundKey, optional Object contentKey, optional boolean userSwipeEnabled, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void BasicSwipeToDismissBox(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissed, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional Object backgroundKey, optional Object contentKey, optional boolean userSwipeEnabled, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method public static androidx.compose.ui.Modifier edgeSwipeToDismiss(androidx.compose.ui.Modifier, androidx.wear.compose.foundation.SwipeToDismissBoxState swipeToDismissBoxState, optional float edgeWidth);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.foundation.SwipeToDismissBoxState rememberSwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+  }
+
+  public final class CompositionLocalsKt {
+    method @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> getLocalReduceMotion();
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalSwipeToDismissBackgroundScrimColor();
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalSwipeToDismissContentScrimColor();
+    property @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.wear.compose.foundation.ReduceMotion> LocalReduceMotion;
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalSwipeToDismissBackgroundScrimColor;
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalSwipeToDismissContentScrimColor;
+  }
+
+  public interface CurvedAlignment {
+  }
+
+  @kotlin.jvm.JvmInline public static final value class CurvedAlignment.Angular {
+    field public static final androidx.wear.compose.foundation.CurvedAlignment.Angular.Companion Companion;
+  }
+
+  public static final class CurvedAlignment.Angular.Companion {
+    method public float Custom(float ratio);
+    method public float getCenter();
+    method public float getEnd();
+    method public float getStart();
+    property public final float Center;
+    property public final float End;
+    property public final float Start;
+  }
+
+  @kotlin.jvm.JvmInline public static final value class CurvedAlignment.Radial {
+    field public static final androidx.wear.compose.foundation.CurvedAlignment.Radial.Companion Companion;
+  }
+
+  public static final class CurvedAlignment.Radial.Companion {
+    method public float Custom(float ratio);
+    method public float getCenter();
+    method public float getInner();
+    method public float getOuter();
+    property public final float Center;
+    property public final float Inner;
+    property public final float Outer;
+  }
+
+  public final class CurvedBoxKt {
+    method public static void curvedBox(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedAlignment.Radial? radialAlignment, optional androidx.wear.compose.foundation.CurvedAlignment.Angular? angularAlignment, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  public final class CurvedColumnKt {
+    method public static void curvedColumn(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedDirection.Radial? radialDirection, optional androidx.wear.compose.foundation.CurvedAlignment.Angular? angularAlignment, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  public final class CurvedComposableKt {
+    method public static void curvedComposable(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional float radialAlignment, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  public interface CurvedDirection {
+  }
+
+  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public static final value class CurvedDirection.Angular {
+    field public static final androidx.wear.compose.foundation.CurvedDirection.Angular.Companion Companion;
+  }
+
+  public static final class CurvedDirection.Angular.Companion {
+    method public int getClockwise();
+    method public int getCounterClockwise();
+    method public int getNormal();
+    method public int getReversed();
+    property public final int Clockwise;
+    property public final int CounterClockwise;
+    property public final int Normal;
+    property public final int Reversed;
+  }
+
+  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public static final value class CurvedDirection.Radial {
+    field public static final androidx.wear.compose.foundation.CurvedDirection.Radial.Companion Companion;
+  }
+
+  public static final class CurvedDirection.Radial.Companion {
+    method public int getInsideOut();
+    method public int getOutsideIn();
+    property public final int InsideOut;
+    property public final int OutsideIn;
+  }
+
+  public final class CurvedDrawKt {
+    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier angularGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier background(androidx.wear.compose.foundation.CurvedModifier, long color, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, java.util.List<androidx.compose.ui.graphics.Color> colors, optional int cap);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialGradientBackground(androidx.wear.compose.foundation.CurvedModifier, kotlin.Pair<java.lang.Float,androidx.compose.ui.graphics.Color>[] colorStops, optional int cap);
+  }
+
+  public final class CurvedLayoutKt {
+    method @androidx.compose.runtime.Composable public static void CurvedLayout(optional androidx.compose.ui.Modifier modifier, optional float anchor, optional float anchorType, optional androidx.wear.compose.foundation.CurvedAlignment.Radial? radialAlignment, optional int angularDirection, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public sealed interface CurvedModifier {
+    method public default infix androidx.wear.compose.foundation.CurvedModifier then(androidx.wear.compose.foundation.CurvedModifier other);
+    field public static final androidx.wear.compose.foundation.CurvedModifier.Companion Companion;
+  }
+
+  public static final class CurvedModifier.Companion implements androidx.wear.compose.foundation.CurvedModifier {
+  }
+
+  public final class CurvedPaddingKt {
+    method public static androidx.wear.compose.foundation.ArcPaddingValues ArcPaddingValues(float all);
+    method public static androidx.wear.compose.foundation.ArcPaddingValues ArcPaddingValues(optional float radial, optional float angular);
+    method public static androidx.wear.compose.foundation.ArcPaddingValues ArcPaddingValues(optional float outer, optional float inner, optional float before, optional float after);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, androidx.wear.compose.foundation.ArcPaddingValues paddingValues);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, optional float all);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, optional float radial, optional float angular);
+    method public static androidx.wear.compose.foundation.CurvedModifier padding(androidx.wear.compose.foundation.CurvedModifier, float outer, float inner, float before, float after);
+  }
+
+  public final class CurvedParentDataKt {
+    method public static androidx.wear.compose.foundation.CurvedModifier parentDataModifier(androidx.wear.compose.foundation.CurvedModifier, kotlin.jvm.functions.Function1<java.lang.Object?,? extends java.lang.Object?> modifyParentData);
+    method public static androidx.wear.compose.foundation.CurvedModifier weight(androidx.wear.compose.foundation.CurvedModifier, @FloatRange(from=0.0, fromInclusive=false) float weight);
+  }
+
+  public final class CurvedRowKt {
+    method public static void curvedRow(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional androidx.wear.compose.foundation.CurvedAlignment.Radial? radialAlignment, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> contentBuilder);
+  }
+
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class CurvedScope {
+  }
+
+  public final class CurvedSizeKt {
+    method public static androidx.wear.compose.foundation.CurvedModifier angularSize(androidx.wear.compose.foundation.CurvedModifier, float sweepDegrees);
+    method public static androidx.wear.compose.foundation.CurvedModifier angularSizeDp(androidx.wear.compose.foundation.CurvedModifier, float angularWidth);
+    method public static androidx.wear.compose.foundation.CurvedModifier radialSize(androidx.wear.compose.foundation.CurvedModifier, float thickness);
+    method public static androidx.wear.compose.foundation.CurvedModifier size(androidx.wear.compose.foundation.CurvedModifier, @FloatRange(from=0.0, to=360.0) float sweepDegrees, float thickness);
+    method public static androidx.wear.compose.foundation.CurvedModifier sizeIn(androidx.wear.compose.foundation.CurvedModifier, optional @FloatRange(from=0.0, to=360.0) float minSweepDegrees, optional @FloatRange(from=0.0, to=360.0) float maxSweepDegrees, optional float minThickness, optional float maxThickness);
+  }
+
+  public final class CurvedTextStyle {
+    ctor public CurvedTextStyle(androidx.compose.ui.text.TextStyle style);
+    ctor @Deprecated public CurvedTextStyle(optional long background, optional long color, optional long fontSize);
+    ctor public CurvedTextStyle(optional long background, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontSynthesis? fontSynthesis);
+    method @Deprecated public androidx.wear.compose.foundation.CurvedTextStyle copy(optional long background, optional long color, optional long fontSize);
+    method public androidx.wear.compose.foundation.CurvedTextStyle copy(optional long background, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontSynthesis? fontSynthesis);
+    method public long getBackground();
+    method public long getColor();
+    method public androidx.compose.ui.text.font.FontFamily? getFontFamily();
+    method public long getFontSize();
+    method public androidx.compose.ui.text.font.FontStyle? getFontStyle();
+    method public androidx.compose.ui.text.font.FontSynthesis? getFontSynthesis();
+    method public androidx.compose.ui.text.font.FontWeight? getFontWeight();
+    method public androidx.wear.compose.foundation.CurvedTextStyle merge(optional androidx.wear.compose.foundation.CurvedTextStyle? other);
+    method public operator androidx.wear.compose.foundation.CurvedTextStyle plus(androidx.wear.compose.foundation.CurvedTextStyle other);
+    property public final long background;
+    property public final long color;
+    property public final androidx.compose.ui.text.font.FontFamily? fontFamily;
+    property public final long fontSize;
+    property public final androidx.compose.ui.text.font.FontStyle? fontStyle;
+    property public final androidx.compose.ui.text.font.FontSynthesis? fontSynthesis;
+    property public final androidx.compose.ui.text.font.FontWeight? fontWeight;
+  }
+
+  public final class ExpandableItemsDefaults {
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getCollapseAnimationSpec();
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getExpandAnimationSpec();
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec;
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec;
+    field public static final androidx.wear.compose.foundation.ExpandableItemsDefaults INSTANCE;
+  }
+
+  public final class ExpandableKt {
+    method public static void expandableButton(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, androidx.wear.compose.foundation.ExpandableState state, optional Object? key, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method public static void expandableItem(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, androidx.wear.compose.foundation.ExpandableState state, optional Object? key, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> content);
+    method public static void expandableItems(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, androidx.wear.compose.foundation.ExpandableState state, int count, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Integer,kotlin.Unit> itemContent);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.foundation.ExpandableState rememberExpandableState(optional boolean initiallyExpanded, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static <T> androidx.wear.compose.foundation.ExpandableStateMapping<T> rememberExpandableStateMapping(optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> initiallyExpanded, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec);
+  }
+
+  public final class ExpandableState {
+    method public float getExpandProgress();
+    method public boolean isExpanded();
+    method public void setExpanded(boolean);
+    property public final float expandProgress;
+    property public final boolean expanded;
+    field public static final androidx.wear.compose.foundation.ExpandableState.Companion Companion;
+  }
+
+  public static final class ExpandableState.Companion {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.foundation.ExpandableState,java.lang.Boolean> saver(androidx.compose.animation.core.AnimationSpec<java.lang.Float> expandAnimationSpec, androidx.compose.animation.core.AnimationSpec<java.lang.Float> collapseAnimationSpec);
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public final class ExpandableStateMapping<T> {
+    method public androidx.wear.compose.foundation.ExpandableState getOrPutNew(T key);
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(message="This Wear Foundation API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearFoundationApi {
+  }
+
+  public final class HierarchicalFocusCoordinatorKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void HierarchicalFocusCoordinator(kotlin.jvm.functions.Function0<java.lang.Boolean> requiresFocus, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void OnFocusChange(kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope,? super java.lang.Boolean,kotlin.Unit> onFocusChanged);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void RequestFocusWhenActive(androidx.compose.ui.focus.FocusRequester focusRequester);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.compose.ui.focus.FocusRequester rememberActiveFocusRequester();
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public fun interface ReduceMotion {
+    method @androidx.compose.runtime.Composable public boolean enabled();
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi @kotlin.jvm.JvmInline public final value class RevealActionType {
+    method public int getValue();
+    property public final int value;
+    field public static final androidx.wear.compose.foundation.RevealActionType.Companion Companion;
+  }
+
+  public static final class RevealActionType.Companion {
+    method public int getNone();
+    method public int getPrimaryAction();
+    method public int getSecondaryAction();
+    method public int getUndoAction();
+    property public final int None;
+    property public final int PrimaryAction;
+    property public final int SecondaryAction;
+    property public final int UndoAction;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public interface RevealScope {
+    method public int getLastActionType();
+    method public float getRevealOffset();
+    property public abstract int lastActionType;
+    property public abstract float revealOffset;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public final class RevealState {
+    method public suspend Object? animateTo(int targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public int getCurrentValue();
+    method public int getLastActionType();
+    method public float getOffset();
+    method public java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> getSwipeAnchors();
+    method public int getTargetValue();
+    method public boolean isAnimationRunning();
+    method public void setLastActionType(int);
+    method public suspend Object? snapTo(int targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final int currentValue;
+    property public final boolean isAnimationRunning;
+    property public final int lastActionType;
+    property public final float offset;
+    property public final java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> swipeAnchors;
+    property public final int targetValue;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi @kotlin.jvm.JvmInline public final value class RevealValue {
+    method public int getValue();
+    property public final int value;
+    field public static final androidx.wear.compose.foundation.RevealValue.Companion Companion;
+  }
+
+  public static final class RevealValue.Companion {
+    method public int getCovered();
+    method public int getRevealed();
+    method public int getRevealing();
+    property public final int Covered;
+    property public final int Revealed;
+    property public final int Revealing;
+  }
+
+  public final class SwipeToDismissBoxDefaults {
+    method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
+    method public float getEdgeWidth();
+    property public final androidx.compose.animation.core.SpringSpec<java.lang.Float> AnimationSpec;
+    property public final float EdgeWidth;
+    field public static final androidx.wear.compose.foundation.SwipeToDismissBoxDefaults INSTANCE;
+  }
+
+  @androidx.compose.runtime.Stable public final class SwipeToDismissBoxState {
+    ctor public SwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+    method public androidx.wear.compose.foundation.SwipeToDismissValue getCurrentValue();
+    method public androidx.wear.compose.foundation.SwipeToDismissValue getTargetValue();
+    method public boolean isAnimationRunning();
+    method public suspend Object? snapTo(androidx.wear.compose.foundation.SwipeToDismissValue targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final androidx.wear.compose.foundation.SwipeToDismissValue currentValue;
+    property public final boolean isAnimationRunning;
+    property public final androidx.wear.compose.foundation.SwipeToDismissValue targetValue;
+  }
+
+  public enum SwipeToDismissKeys {
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Background;
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissKeys Content;
+  }
+
+  public enum SwipeToDismissValue {
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Default;
+    enum_constant public static final androidx.wear.compose.foundation.SwipeToDismissValue Dismissed;
+  }
+
+  public final class SwipeToRevealKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static void SwipeToReveal(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> primaryAction, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.wear.compose.foundation.RevealState state, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? secondaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoAction, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> createAnchors(optional float coveredAnchor, optional float revealingAnchor, optional float revealedAnchor);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.foundation.ExperimentalWearFoundationApi public static androidx.wear.compose.foundation.RevealState rememberRevealState(optional int initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealValue,java.lang.Boolean> confirmValueChange, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super java.lang.Float,java.lang.Float> positionalThreshold, optional java.util.Map<androidx.wear.compose.foundation.RevealValue,java.lang.Float> anchors);
+  }
+
+}
+
+package androidx.wear.compose.foundation.lazy {
+
+  @androidx.compose.runtime.Immutable public final class AutoCenteringParams {
+    ctor public AutoCenteringParams(optional int itemIndex, optional int itemOffset);
+  }
+
+  public final class ScalingLazyColumnDefaults {
+    method public androidx.wear.compose.foundation.lazy.ScalingParams scalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    method @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior snapFlingBehavior(androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional float snapOffset, optional androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> decay);
+    field public static final androidx.wear.compose.foundation.lazy.ScalingLazyColumnDefaults INSTANCE;
+  }
+
+  public final class ScalingLazyColumnKt {
+    method @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.foundation.lazy.AutoCenteringParams? autoCentering, optional androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior? rotaryScrollableBehavior, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.foundation.lazy.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
+    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void items(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+  }
+
+  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
+    field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
+  }
+
+  public static final class ScalingLazyListAnchorType.Companion {
+    method public int getItemCenter();
+    method public int getItemStart();
+    property public final int ItemCenter;
+    property public final int ItemStart;
+  }
+
+  public sealed interface ScalingLazyListItemInfo {
+    method public float getAlpha();
+    method public int getIndex();
+    method public Object getKey();
+    method public int getOffset();
+    method public float getScale();
+    method public int getSize();
+    method public int getUnadjustedOffset();
+    method public int getUnadjustedSize();
+    property public abstract float alpha;
+    property public abstract int index;
+    property public abstract Object key;
+    property public abstract int offset;
+    property public abstract float scale;
+    property public abstract int size;
+    property public abstract int unadjustedOffset;
+    property public abstract int unadjustedSize;
+  }
+
+  @androidx.compose.runtime.Stable @androidx.wear.compose.foundation.lazy.ScalingLazyScopeMarker public sealed interface ScalingLazyListItemScope {
+    method public androidx.compose.ui.Modifier fillParentMaxHeight(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method public androidx.compose.ui.Modifier fillParentMaxSize(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method public androidx.compose.ui.Modifier fillParentMaxWidth(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+  }
+
+  public sealed interface ScalingLazyListLayoutInfo {
+    method public int getAfterAutoCenteringPadding();
+    method public int getAfterContentPadding();
+    method public int getAnchorType();
+    method public int getBeforeAutoCenteringPadding();
+    method public int getBeforeContentPadding();
+    method public androidx.compose.foundation.gestures.Orientation getOrientation();
+    method public boolean getReverseLayout();
+    method public int getTotalItemsCount();
+    method public int getViewportEndOffset();
+    method public long getViewportSize();
+    method public int getViewportStartOffset();
+    method public java.util.List<androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo> getVisibleItemsInfo();
+    property public abstract int afterAutoCenteringPadding;
+    property public abstract int afterContentPadding;
+    property public abstract int anchorType;
+    property public abstract int beforeAutoCenteringPadding;
+    property public abstract int beforeContentPadding;
+    property public abstract androidx.compose.foundation.gestures.Orientation orientation;
+    property public abstract boolean reverseLayout;
+    property public abstract int totalItemsCount;
+    property public abstract int viewportEndOffset;
+    property public abstract long viewportSize;
+    property public abstract int viewportStartOffset;
+    property public abstract java.util.List<androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo> visibleItemsInfo;
+  }
+
+  @androidx.wear.compose.foundation.lazy.ScalingLazyScopeMarker public sealed interface ScalingLazyListScope {
+    method public void item(optional Object? key, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,kotlin.Unit> content);
+    method public void items(int count, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,kotlin.Unit> itemContent);
+  }
+
+  @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
+    ctor public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+    method public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public float dispatchRawDelta(float delta);
+    method public int getCenterItemIndex();
+    method public int getCenterItemScrollOffset();
+    method public androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo getLayoutInfo();
+    method public boolean isScrollInProgress();
+    method public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public boolean canScrollBackward;
+    property public boolean canScrollForward;
+    property public final int centerItemIndex;
+    property public final int centerItemScrollOffset;
+    property public boolean isScrollInProgress;
+    property public final androidx.wear.compose.foundation.lazy.ScalingLazyListLayoutInfo layoutInfo;
+    field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListState.Companion Companion;
+  }
+
+  public static final class ScalingLazyListState.Companion {
+    method public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.foundation.lazy.ScalingLazyListState,java.lang.Object> getSaver();
+    property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.foundation.lazy.ScalingLazyListState,java.lang.Object> Saver;
+  }
+
+  public final class ScalingLazyListStateKt {
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.foundation.lazy.ScalingLazyListState rememberScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+  }
+
+  @kotlin.DslMarker public @interface ScalingLazyScopeMarker {
+  }
+
+  @androidx.compose.runtime.Stable public interface ScalingParams {
+    method @FloatRange(from=0.0, to=1.0) public float getEdgeAlpha();
+    method @FloatRange(from=0.0, to=1.0) public float getEdgeScale();
+    method @FloatRange(from=0.0, to=1.0) public float getMaxElementHeight();
+    method @FloatRange(from=0.0, to=1.0) public float getMaxTransitionArea();
+    method @FloatRange(from=0.0, to=1.0) public float getMinElementHeight();
+    method @FloatRange(from=0.0, to=1.0) public float getMinTransitionArea();
+    method public androidx.compose.animation.core.Easing getScaleInterpolator();
+    method public int resolveViewportVerticalOffset(long viewportConstraints);
+    property @FloatRange(from=0.0, to=1.0) public abstract float edgeAlpha;
+    property @FloatRange(from=0.0, to=1.0) public abstract float edgeScale;
+    property @FloatRange(from=0.0, to=1.0) public abstract float maxElementHeight;
+    property @FloatRange(from=0.0, to=1.0) public abstract float maxTransitionArea;
+    property @FloatRange(from=0.0, to=1.0) public abstract float minElementHeight;
+    property @FloatRange(from=0.0, to=1.0) public abstract float minTransitionArea;
+    property public abstract androidx.compose.animation.core.Easing scaleInterpolator;
+  }
+
+}
+
+package androidx.wear.compose.foundation.rotary {
+
+  public interface RotaryScrollableBehavior {
+    method public suspend Object? performScroll(kotlinx.coroutines.CoroutineScope, long timestampMillis, float delta, int inputDeviceId, androidx.compose.foundation.gestures.Orientation orientation, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+  }
+
+  public final class RotaryScrollableDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior behavior(androidx.compose.foundation.gestures.ScrollableState scrollableState, optional androidx.compose.foundation.gestures.FlingBehavior? flingBehavior, optional boolean hapticFeedbackEnabled);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior snapBehavior(androidx.compose.foundation.gestures.ScrollableState scrollableState, androidx.wear.compose.foundation.rotary.RotarySnapLayoutInfoProvider layoutInfoProvider, optional float snapOffset, optional boolean hapticFeedbackEnabled);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior snapBehavior(androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollableState, optional float snapOffset, optional boolean hapticFeedbackEnabled);
+    field public static final androidx.wear.compose.foundation.rotary.RotaryScrollableDefaults INSTANCE;
+  }
+
+  public final class RotaryScrollableKt {
+    method public static androidx.compose.ui.Modifier rotaryScrollable(androidx.compose.ui.Modifier, androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior behavior, androidx.compose.ui.focus.FocusRequester focusRequester, optional boolean reverseDirection);
+  }
+
+  public interface RotarySnapLayoutInfoProvider {
+    method public float getAverageItemSize();
+    method public int getCurrentItemIndex();
+    method public float getCurrentItemOffset();
+    method public int getTotalItemCount();
+    property public abstract float averageItemSize;
+    property public abstract int currentItemIndex;
+    property public abstract float currentItemOffset;
+    property public abstract int totalItemCount;
+  }
+
+}
+
diff --git a/wear/compose/compose-material-core/api/1.4.0-beta02.txt b/wear/compose/compose-material-core/api/1.4.0-beta02.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/wear/compose/compose-material-core/api/1.4.0-beta02.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/wear/compose/compose-material-core/api/res-1.4.0-beta02.txt b/wear/compose/compose-material-core/api/res-1.4.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/wear/compose/compose-material-core/api/res-1.4.0-beta02.txt
diff --git a/wear/compose/compose-material-core/api/restricted_1.4.0-beta02.txt b/wear/compose/compose-material-core/api/restricted_1.4.0-beta02.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/wear/compose/compose-material-core/api/restricted_1.4.0-beta02.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/wear/compose/compose-material/api/1.2.0-beta01.txt b/wear/compose/compose-material/api/1.2.0-beta01.txt
index 13baed6..5f826b5 100644
--- a/wear/compose/compose-material/api/1.2.0-beta01.txt
+++ b/wear/compose/compose-material/api/1.2.0-beta01.txt
@@ -6,7 +6,7 @@
   }
 
   @androidx.compose.runtime.Stable public interface ButtonBorder {
-    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke> borderStroke(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
   }
 
   @androidx.compose.runtime.Stable public interface ButtonColors {
@@ -77,7 +77,7 @@
   }
 
   @androidx.compose.runtime.Stable public interface ChipBorder {
-    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke> borderStroke(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
   }
 
   @androidx.compose.runtime.Stable public interface ChipColors {
@@ -90,7 +90,7 @@
   public final class ChipDefaults {
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors childChipColors(optional long contentColor, optional long secondaryContentColor, optional long iconColor);
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipBorder chipBorder(optional androidx.compose.foundation.BorderStroke? borderStroke, optional androidx.compose.foundation.BorderStroke? disabledBorderStroke);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public androidx.wear.compose.material.ChipColors chipColors(androidx.compose.ui.graphics.painter.Painter backgroundPainter, long contentColor, long secondaryContentColor, long iconColor, androidx.compose.ui.graphics.painter.Painter disabledBackgroundPainter, long disabledContentColor, long disabledSecondaryContentColor, long disabledIconColor);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public androidx.wear.compose.material.ChipColors chipColors(androidx.compose.ui.graphics.painter.Painter backgroundPainter, long contentColor, long secondaryContentColor, long iconColor, androidx.compose.ui.graphics.painter.Painter disabledBackgroundPainter, long disabledContentColor, long disabledSecondaryContentColor, long disabledIconColor);
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors chipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor, optional long disabledBackgroundColor, optional long disabledContentColor, optional long disabledSecondaryContentColor, optional long disabledIconColor);
     method public androidx.compose.foundation.layout.PaddingValues getCompactChipContentPadding();
     method public androidx.compose.foundation.layout.PaddingValues getCompactChipTapTargetPadding();
@@ -185,16 +185,16 @@
     method @Deprecated public static void curvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional long background, optional long color, optional long fontSize, optional androidx.wear.compose.foundation.CurvedTextStyle? style, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
   }
 
-  @kotlin.RequiresOptIn(message="This Wear Material API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearMaterialApi {
+  @SuppressCompatibility @kotlin.RequiresOptIn(message="This Wear Material API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearMaterialApi {
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FixedThreshold implements androidx.wear.compose.material.ThresholdConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FixedThreshold implements androidx.wear.compose.material.ThresholdConfig {
     ctor public FixedThreshold(float offset);
     method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
     method public androidx.wear.compose.material.FixedThreshold copy-0680j_4(float offset);
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FractionalThreshold implements androidx.wear.compose.material.ThresholdConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FractionalThreshold implements androidx.wear.compose.material.ThresholdConfig {
     ctor public FractionalThreshold(float fraction);
     method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
     method public androidx.wear.compose.material.FractionalThreshold copy(float fraction);
@@ -296,7 +296,7 @@
   }
 
   public final class PickerGroupKt {
-    method @androidx.compose.runtime.Composable public static void PickerGroup(androidx.wear.compose.material.PickerGroupItem![] pickers, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.PickerGroupState pickerGroupState, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onSelected, optional boolean autoCenter, optional boolean propagateMinConstraints, optional androidx.wear.compose.material.TouchExplorationStateProvider touchExplorationStateProvider, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? separator);
+    method @androidx.compose.runtime.Composable public static void PickerGroup(androidx.wear.compose.material.PickerGroupItem[] pickers, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.PickerGroupState pickerGroupState, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onSelected, optional boolean autoCenter, optional boolean propagateMinConstraints, optional androidx.wear.compose.material.TouchExplorationStateProvider touchExplorationStateProvider, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? separator);
     method @androidx.compose.runtime.Composable public static androidx.wear.compose.material.PickerGroupState rememberPickerGroupState(optional int initiallySelectedIndex);
   }
 
@@ -351,7 +351,7 @@
     property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
   }
 
-  @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderDefaults {
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderDefaults {
     method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter painterWithPlaceholderOverlayBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, androidx.compose.ui.graphics.painter.Painter painter, optional long color);
     method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter placeholderBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors placeholderChipColors(androidx.wear.compose.material.ChipColors originalChipColors, androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
@@ -360,12 +360,12 @@
   }
 
   public final class PlaceholderKt {
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholder(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholderShimmer(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.wear.compose.material.PlaceholderState rememberPlaceholderState(kotlin.jvm.functions.Function0<java.lang.Boolean> isContentReady);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholder(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholderShimmer(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.wear.compose.material.PlaceholderState rememberPlaceholderState(kotlin.jvm.functions.Function0<java.lang.Boolean> isContentReady);
   }
 
-  @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderState {
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderState {
     method public float getPlaceholderProgression();
     method public boolean isShowContent();
     method public boolean isWipeOff();
@@ -442,7 +442,7 @@
     field public static final androidx.wear.compose.material.RadioButtonDefaults INSTANCE;
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class ResistanceConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class ResistanceConfig {
     ctor public ResistanceConfig(float basis, optional float factorAtMin, optional float factorAtMax);
     method public float computeResistance(float overflow);
     method public float getBasis();
@@ -466,9 +466,9 @@
   public final class ScalingLazyColumnKt {
     method @Deprecated @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.material.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.material.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListScope,kotlin.Unit> content);
     method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
-    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
     method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
   @Deprecated @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
@@ -539,14 +539,14 @@
 
   @Deprecated @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
     ctor @Deprecated public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
-    method @Deprecated public suspend Object? animateScrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method @Deprecated public float dispatchRawDelta(float delta);
     method @Deprecated public int getCenterItemIndex();
     method @Deprecated public int getCenterItemScrollOffset();
     method @Deprecated public androidx.wear.compose.material.ScalingLazyListLayoutInfo getLayoutInfo();
     method @Deprecated public boolean isScrollInProgress();
     method @Deprecated public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method @Deprecated public suspend Object? scrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property @Deprecated public boolean canScrollBackward;
     property @Deprecated public boolean canScrollForward;
     property @Deprecated public final int centerItemIndex;
@@ -632,7 +632,7 @@
     method @Deprecated @androidx.compose.runtime.Composable public static void Stepper(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional long iconColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeProgress<T> {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeProgress<T> {
     ctor public SwipeProgress(T from, T to, float fraction);
     method public float getFraction();
     method public T getFrom();
@@ -669,20 +669,16 @@
   }
 
   public enum SwipeToDismissKeys {
-    method public static androidx.wear.compose.material.SwipeToDismissKeys valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.material.SwipeToDismissKeys[] values();
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Background;
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Content;
   }
 
   public enum SwipeToDismissValue {
-    method public static androidx.wear.compose.material.SwipeToDismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.material.SwipeToDismissValue[] values();
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Default;
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
 
-  @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeableDefaults {
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
     method public androidx.wear.compose.material.ResistanceConfig? resistanceConfig(java.util.Set<java.lang.Float> anchors, optional float factorAtMin, optional float factorAtMax);
@@ -694,13 +690,13 @@
   }
 
   public final class SwipeableKt {
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.wear.compose.material.SwipeableState<T> rememberSwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.compose.ui.Modifier swipeable(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeableState<T> state, java.util.Map<java.lang.Float,? extends T> anchors, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends androidx.wear.compose.material.ThresholdConfig> thresholds, optional androidx.wear.compose.material.ResistanceConfig? resistance, optional float velocityThreshold);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.wear.compose.material.SwipeableState<T> rememberSwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.compose.ui.Modifier swipeable(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeableState<T> state, java.util.Map<java.lang.Float,? extends T> anchors, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends androidx.wear.compose.material.ThresholdConfig> thresholds, optional androidx.wear.compose.material.ResistanceConfig? resistance, optional float velocityThreshold);
   }
 
-  @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public class SwipeableState<T> {
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public class SwipeableState<T> {
     ctor public SwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? animateTo(T targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> anim, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? animateTo(T targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> anim, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public final T getCurrentValue();
     method public final float getDirection();
     method public final androidx.compose.runtime.State<java.lang.Float> getOffset();
@@ -708,15 +704,15 @@
     method public final androidx.wear.compose.material.SwipeProgress<T> getProgress();
     method public final T getTargetValue();
     method public final boolean isAnimationRunning();
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? performFling(float velocity, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? snapTo(T targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? performFling(float velocity, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? snapTo(T targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public final T currentValue;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final float direction;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final float direction;
     property public final boolean isAnimationRunning;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> offset;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> overflow;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.wear.compose.material.SwipeProgress<T> progress;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final T targetValue;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> offset;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> overflow;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.wear.compose.material.SwipeProgress<T> progress;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final T targetValue;
     field public static final androidx.wear.compose.material.SwipeableState.Companion Companion;
   }
 
@@ -744,7 +740,7 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
   }
 
-  @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public interface ThresholdConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public interface ThresholdConfig {
     method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
   }
 
diff --git a/wear/compose/compose-material/api/1.4.0-beta02.txt b/wear/compose/compose-material/api/1.4.0-beta02.txt
new file mode 100644
index 0000000..8ff9ff1
--- /dev/null
+++ b/wear/compose/compose-material/api/1.4.0-beta02.txt
@@ -0,0 +1,1028 @@
+// Signature format: 4.0
+package androidx.wear.compose.material {
+
+  @Deprecated @androidx.compose.runtime.Immutable public final class AutoCenteringParams {
+    ctor @Deprecated public AutoCenteringParams(optional int itemIndex, optional int itemOffset);
+  }
+
+  @androidx.compose.runtime.Stable public interface ButtonBorder {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
+  }
+
+  @androidx.compose.runtime.Stable public interface ButtonColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+  }
+
+  public final class ButtonDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonBorder buttonBorder(optional androidx.compose.foundation.BorderStroke? borderStroke, optional androidx.compose.foundation.BorderStroke? disabledBorderStroke);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors buttonColors(optional long backgroundColor, optional long contentColor, optional long disabledBackgroundColor, optional long disabledContentColor);
+    method public float getCompactButtonBackgroundPadding();
+    method public float getDefaultButtonSize();
+    method public float getDefaultIconSize();
+    method public float getExtraSmallButtonSize();
+    method public float getLargeButtonSize();
+    method public float getLargeIconSize();
+    method public float getSmallButtonSize();
+    method public float getSmallIconSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors iconButtonColors(optional long contentColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonBorder outlinedButtonBorder(optional long borderColor, optional long disabledBorderColor, optional float borderWidth);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors outlinedButtonColors(optional long contentColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors primaryButtonColors(optional long backgroundColor, optional long contentColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors secondaryButtonColors(optional long backgroundColor, optional long contentColor);
+    property public final float CompactButtonBackgroundPadding;
+    property public final float DefaultButtonSize;
+    property public final float DefaultIconSize;
+    property public final float ExtraSmallButtonSize;
+    property public final float LargeButtonSize;
+    property public final float LargeIconSize;
+    property public final float SmallButtonSize;
+    property public final float SmallIconSize;
+    field public static final androidx.wear.compose.material.ButtonDefaults INSTANCE;
+  }
+
+  public final class ButtonKt {
+    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void CompactButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional float backgroundPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void CompactButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional float backgroundPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedCompactButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional float backgroundPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  public final class CardDefaults {
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter cardBackgroundPainter(optional long startBackgroundColor, optional long endBackgroundColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    method public float getAppImageSize();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter imageWithScrimBackgroundPainter(androidx.compose.ui.graphics.painter.Painter backgroundImagePainter, optional androidx.compose.ui.graphics.Brush backgroundImageScrimBrush);
+    property public final float AppImageSize;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    field public static final androidx.wear.compose.material.CardDefaults INSTANCE;
+  }
+
+  public final class CardKt {
+    method @androidx.compose.runtime.Composable public static void AppCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> appName, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> time, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? appImage, optional androidx.compose.ui.graphics.painter.Painter backgroundPainter, optional long contentColor, optional long appColor, optional long timeColor, optional long titleColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Card(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.painter.Painter backgroundPainter, optional long contentColor, optional boolean enabled, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.semantics.Role? role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void TitleCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? time, optional androidx.compose.ui.graphics.painter.Painter backgroundPainter, optional long contentColor, optional long titleColor, optional long timeColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+  }
+
+  @androidx.compose.runtime.Stable public interface CheckboxColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> boxColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> checkmarkColor(boolean enabled, boolean checked);
+  }
+
+  public final class CheckboxDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.CheckboxColors colors(optional long checkedBoxColor, optional long checkedCheckmarkColor, optional long uncheckedBoxColor, optional long uncheckedCheckmarkColor);
+    field public static final androidx.wear.compose.material.CheckboxDefaults INSTANCE;
+  }
+
+  @androidx.compose.runtime.Stable public interface ChipBorder {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
+  }
+
+  @androidx.compose.runtime.Stable public interface ChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.painter.Painter> background(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> iconColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled);
+  }
+
+  public final class ChipDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors childChipColors(optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipBorder chipBorder(optional androidx.compose.foundation.BorderStroke? borderStroke, optional androidx.compose.foundation.BorderStroke? disabledBorderStroke);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public androidx.wear.compose.material.ChipColors chipColors(androidx.compose.ui.graphics.painter.Painter backgroundPainter, long contentColor, long secondaryContentColor, long iconColor, androidx.compose.ui.graphics.painter.Painter disabledBackgroundPainter, long disabledContentColor, long disabledSecondaryContentColor, long disabledIconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors chipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor, optional long disabledBackgroundColor, optional long disabledContentColor, optional long disabledSecondaryContentColor, optional long disabledIconColor);
+    method public float getChipHorizontalPadding();
+    method public float getChipVerticalPadding();
+    method public androidx.compose.foundation.layout.PaddingValues getCompactChipContentPadding();
+    method public float getCompactChipHeight();
+    method public float getCompactChipHorizontalPadding();
+    method public androidx.compose.foundation.layout.PaddingValues getCompactChipTapTargetPadding();
+    method public float getCompactChipVerticalPadding();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public float getHeight();
+    method public float getIconSize();
+    method public float getLargeIconSize();
+    method public float getSmallIconSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors gradientBackgroundChipColors(optional long startBackgroundColor, optional long endBackgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors imageBackgroundChipColors(androidx.compose.ui.graphics.painter.Painter backgroundImagePainter, optional androidx.compose.ui.graphics.Brush backgroundImageScrimBrush, optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipBorder outlinedChipBorder(optional long borderColor, optional long disabledBorderColor, optional float borderWidth);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors outlinedChipColors(optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors primaryChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors secondaryChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    property public final float ChipHorizontalPadding;
+    property public final float ChipVerticalPadding;
+    property public final androidx.compose.foundation.layout.PaddingValues CompactChipContentPadding;
+    property public final float CompactChipHeight;
+    property public final float CompactChipHorizontalPadding;
+    property public final androidx.compose.foundation.layout.PaddingValues CompactChipTapTargetPadding;
+    property public final float CompactChipVerticalPadding;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final float Height;
+    property public final float IconSize;
+    property public final float LargeIconSize;
+    property public final float SmallIconSize;
+    field public static final androidx.wear.compose.material.ChipDefaults INSTANCE;
+  }
+
+  public final class ChipKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.wear.compose.material.ChipColors colors, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.semantics.Role? role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.wear.compose.material.ChipColors colors, androidx.wear.compose.material.ChipBorder border, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.semantics.Role? role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+    method @Deprecated @androidx.compose.runtime.Composable public static void CompactChip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? label, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method @androidx.compose.runtime.Composable public static void CompactChip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? label, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+    method @androidx.compose.runtime.Composable public static void OutlinedChip(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+    method @androidx.compose.runtime.Composable public static void OutlinedCompactChip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? label, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+  }
+
+  @androidx.compose.runtime.Immutable @androidx.compose.runtime.Stable public final class Colors {
+    ctor public Colors(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onSurfaceVariant, optional long onError);
+    method public androidx.wear.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onSurfaceVariant, optional long onError);
+    method public long getBackground();
+    method public long getError();
+    method public long getOnBackground();
+    method public long getOnError();
+    method public long getOnPrimary();
+    method public long getOnSecondary();
+    method public long getOnSurface();
+    method public long getOnSurfaceVariant();
+    method public long getPrimary();
+    method public long getPrimaryVariant();
+    method public long getSecondary();
+    method public long getSecondaryVariant();
+    method public long getSurface();
+    property public final long background;
+    property public final long error;
+    property public final long onBackground;
+    property public final long onError;
+    property public final long onPrimary;
+    property public final long onSecondary;
+    property public final long onSurface;
+    property public final long onSurfaceVariant;
+    property public final long primary;
+    property public final long primaryVariant;
+    property public final long secondary;
+    property public final long secondaryVariant;
+    property public final long surface;
+  }
+
+  public final class ColorsKt {
+    method public static long contentColorFor(androidx.wear.compose.material.Colors, long backgroundColor);
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public static long contentColorFor(long backgroundColor);
+  }
+
+  public final class ContentAlpha {
+    method @androidx.compose.runtime.Composable public float getDisabled();
+    method @androidx.compose.runtime.Composable public float getHigh();
+    method @androidx.compose.runtime.Composable public float getMedium();
+    property @androidx.compose.runtime.Composable public final float disabled;
+    property @androidx.compose.runtime.Composable public final float high;
+    property @androidx.compose.runtime.Composable public final float medium;
+    field public static final androidx.wear.compose.material.ContentAlpha INSTANCE;
+  }
+
+  public final class ContentAlphaKt {
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Float> getLocalContentAlpha();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Float> LocalContentAlpha;
+  }
+
+  public final class ContentColorKt {
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalContentColor();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
+  }
+
+  public final class CurvedTextKt {
+    method public static void curvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional long background, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontSynthesis? fontSynthesis, optional androidx.wear.compose.foundation.CurvedTextStyle? style, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
+    method @Deprecated public static void curvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional long background, optional long color, optional long fontSize, optional androidx.wear.compose.foundation.CurvedTextStyle? style, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(message="This Wear Material API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearMaterialApi {
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FixedThreshold implements androidx.wear.compose.material.ThresholdConfig {
+    ctor public FixedThreshold(float offset);
+    method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
+    method public androidx.wear.compose.material.FixedThreshold copy-0680j_4(float offset);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FractionalThreshold implements androidx.wear.compose.material.ThresholdConfig {
+    ctor public FractionalThreshold(@FloatRange(from=0.0, to=1.0) float fraction);
+    method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
+    method public androidx.wear.compose.material.FractionalThreshold copy(@FloatRange(from=0.0, to=1.0) float fraction);
+  }
+
+  public final class HorizontalPageIndicatorKt {
+    method @androidx.compose.runtime.Composable public static void HorizontalPageIndicator(androidx.wear.compose.material.PageIndicatorState pageIndicatorState, optional androidx.compose.ui.Modifier modifier, optional int indicatorStyle, optional long selectedColor, optional long unselectedColor, optional float indicatorSize, optional float spacing, optional androidx.compose.ui.graphics.Shape indicatorShape);
+  }
+
+  public final class IconKt {
+    method @androidx.compose.runtime.Composable public static void Icon(androidx.compose.ui.graphics.ImageBitmap bitmap, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional long tint);
+    method @androidx.compose.runtime.Composable public static void Icon(androidx.compose.ui.graphics.painter.Painter painter, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional long tint);
+    method @androidx.compose.runtime.Composable public static void Icon(androidx.compose.ui.graphics.vector.ImageVector imageVector, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional long tint);
+  }
+
+  @androidx.compose.runtime.Stable public interface InlineSliderColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> barColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> spacerColor(boolean enabled);
+  }
+
+  public final class InlineSliderDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.InlineSliderColors colors(optional long backgroundColor, optional long spacerColor, optional long selectedBarColor, optional long unselectedBarColor, optional long disabledBackgroundColor, optional long disabledSpacerColor, optional long disabledSelectedBarColor, optional long disabledUnselectedBarColor);
+    method public androidx.compose.ui.graphics.vector.ImageVector getDecrease();
+    method public androidx.compose.ui.graphics.vector.ImageVector getIncrease();
+    property public final androidx.compose.ui.graphics.vector.ImageVector Decrease;
+    property public final androidx.compose.ui.graphics.vector.ImageVector Increase;
+    field public static final androidx.wear.compose.material.InlineSliderDefaults INSTANCE;
+  }
+
+  public final class ListHeaderKt {
+    method @androidx.compose.runtime.Composable public static void ListHeader(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+  }
+
+  public final class MaterialTheme {
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.wear.compose.material.Colors getColors();
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.wear.compose.material.Shapes getShapes();
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.wear.compose.material.Typography getTypography();
+    property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public final androidx.wear.compose.material.Colors colors;
+    property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public final androidx.wear.compose.material.Shapes shapes;
+    property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public final androidx.wear.compose.material.Typography typography;
+    field public static final androidx.wear.compose.material.MaterialTheme INSTANCE;
+  }
+
+  public final class MaterialThemeKt {
+    method @androidx.compose.runtime.Composable public static void MaterialTheme(optional androidx.wear.compose.material.Colors colors, optional androidx.wear.compose.material.Typography typography, optional androidx.wear.compose.material.Shapes shapes, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+  public final class PageIndicatorDefaults {
+    method @androidx.compose.runtime.Composable public int style();
+    field public static final androidx.wear.compose.material.PageIndicatorDefaults INSTANCE;
+  }
+
+  public interface PageIndicatorState {
+    method public int getPageCount();
+    method public float getPageOffset();
+    method public int getSelectedPage();
+    property public abstract int pageCount;
+    property public abstract float pageOffset;
+    property public abstract int selectedPage;
+  }
+
+  @kotlin.jvm.JvmInline public final value class PageIndicatorStyle {
+    field public static final androidx.wear.compose.material.PageIndicatorStyle.Companion Companion;
+  }
+
+  public static final class PageIndicatorStyle.Companion {
+    method public int getCurved();
+    method public int getLinear();
+    property public final int Curved;
+    property public final int Linear;
+  }
+
+  public final class PickerDefaults {
+    method public androidx.wear.compose.foundation.lazy.ScalingParams defaultScalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    method @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior flingBehavior(androidx.wear.compose.material.PickerState state, optional androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> decay);
+    method public float getDefaultGradientRatio();
+    method @Deprecated public androidx.wear.compose.material.ScalingParams scalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    property public final float DefaultGradientRatio;
+    field public static final androidx.wear.compose.material.PickerDefaults INSTANCE;
+  }
+
+  public final class PickerGroupItem {
+    ctor public PickerGroupItem(androidx.wear.compose.material.PickerState pickerState, optional androidx.compose.ui.Modifier modifier, optional String? contentDescription, optional androidx.compose.ui.focus.FocusRequester? focusRequester, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> option);
+    method public String? getContentDescription();
+    method public androidx.compose.ui.focus.FocusRequester? getFocusRequester();
+    method public androidx.compose.ui.Modifier getModifier();
+    method public kotlin.jvm.functions.Function0<kotlin.Unit> getOnSelected();
+    method public kotlin.jvm.functions.Function3<androidx.wear.compose.material.PickerScope,java.lang.Integer,java.lang.Boolean,kotlin.Unit> getOption();
+    method public androidx.wear.compose.material.PickerState getPickerState();
+    method public kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? getReadOnlyLabel();
+    property public final String? contentDescription;
+    property public final androidx.compose.ui.focus.FocusRequester? focusRequester;
+    property public final androidx.compose.ui.Modifier modifier;
+    property public final kotlin.jvm.functions.Function0<kotlin.Unit> onSelected;
+    property public final kotlin.jvm.functions.Function3<androidx.wear.compose.material.PickerScope,java.lang.Integer,java.lang.Boolean,kotlin.Unit> option;
+    property public final androidx.wear.compose.material.PickerState pickerState;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel;
+  }
+
+  public final class PickerGroupKt {
+    method @androidx.compose.runtime.Composable public static void PickerGroup(androidx.wear.compose.material.PickerGroupItem[] pickers, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.PickerGroupState pickerGroupState, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onSelected, optional boolean autoCenter, optional boolean propagateMinConstraints, optional androidx.wear.compose.material.TouchExplorationStateProvider touchExplorationStateProvider, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? separator);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.material.PickerGroupState rememberPickerGroupState(optional int initiallySelectedIndex);
+  }
+
+  public final class PickerGroupState {
+    ctor public PickerGroupState(optional int initiallySelectedIndex);
+    method public int getSelectedIndex();
+    method public void setSelectedIndex(int);
+    property public final int selectedIndex;
+    field public static final androidx.wear.compose.material.PickerGroupState.Companion Companion;
+  }
+
+  public static final class PickerGroupState.Companion {
+    method public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerGroupState,java.lang.Object> getSaver();
+    property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerGroupState,java.lang.Object> Saver;
+  }
+
+  public final class PickerKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional androidx.wear.compose.material.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior? rotaryScrollableBehavior, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.material.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.material.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.material.PickerState rememberPickerState(int initialNumberOfOptions, optional int initiallySelectedOption, optional boolean repeatItems);
+  }
+
+  public interface PickerScope {
+    method public int getSelectedOption();
+    property public abstract int selectedOption;
+  }
+
+  @androidx.compose.runtime.Stable public final class PickerState implements androidx.compose.foundation.gestures.ScrollableState {
+    ctor public PickerState(int initialNumberOfOptions, optional int initiallySelectedOption, optional boolean repeatItems);
+    method public suspend Object? animateScrollToOption(int index, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public float dispatchRawDelta(float delta);
+    method public int getNumberOfOptions();
+    method public boolean getRepeatItems();
+    method public int getSelectedOption();
+    method public boolean isScrollInProgress();
+    method public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? scrollToOption(int index, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public void setNumberOfOptions(int);
+    property public boolean canScrollBackward;
+    property public boolean canScrollForward;
+    property public boolean isScrollInProgress;
+    property public final int numberOfOptions;
+    property public final boolean repeatItems;
+    property public final int selectedOption;
+    field public static final androidx.wear.compose.material.PickerState.Companion Companion;
+  }
+
+  public static final class PickerState.Companion {
+    method public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> getSaver();
+    property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderDefaults {
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter painterWithPlaceholderOverlayBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, androidx.compose.ui.graphics.painter.Painter painter, optional long color);
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter placeholderBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors placeholderChipColors(androidx.wear.compose.material.ChipColors originalChipColors, androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors placeholderChipColors(androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
+    field public static final androidx.wear.compose.material.PlaceholderDefaults INSTANCE;
+  }
+
+  public final class PlaceholderKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholder(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholderShimmer(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.wear.compose.material.PlaceholderState rememberPlaceholderState(kotlin.jvm.functions.Function0<java.lang.Boolean> isContentReady);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderState {
+    method public float getPlaceholderProgression();
+    method public boolean isShowContent();
+    method public boolean isWipeOff();
+    method public suspend Object? startPlaceholderAnimation(kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final boolean isShowContent;
+    property public final boolean isWipeOff;
+    property public final float placeholderProgression;
+  }
+
+  @kotlin.jvm.JvmInline public final value class PositionIndicatorAlignment {
+    field public static final androidx.wear.compose.material.PositionIndicatorAlignment.Companion Companion;
+  }
+
+  public static final class PositionIndicatorAlignment.Companion {
+    method public int getEnd();
+    method public int getLeft();
+    method public int getOppositeRsb();
+    method public int getRight();
+    property public final int End;
+    property public final int Left;
+    property public final int OppositeRsb;
+    property public final int Right;
+  }
+
+  public final class PositionIndicatorDefaults {
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getPositionAnimationSpec();
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getVisibilityAnimationSpec();
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec;
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> visibilityAnimationSpec;
+    field public static final androidx.wear.compose.material.PositionIndicatorDefaults INSTANCE;
+  }
+
+  public final class PositionIndicatorKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.lazy.LazyListState lazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.lazy.LazyListState lazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.foundation.lazy.ScalingLazyListState scalingLazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.foundation.lazy.ScalingLazyListState scalingLazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.material.PositionIndicatorState state, float indicatorHeight, float indicatorWidth, float paddingHorizontal, optional androidx.compose.ui.Modifier modifier, optional long background, optional long color, optional boolean reverseDirection, optional int position);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.material.PositionIndicatorState state, float indicatorHeight, float indicatorWidth, float paddingHorizontal, optional androidx.compose.ui.Modifier modifier, optional long background, optional long color, optional boolean reverseDirection, optional int position, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.material.ScalingLazyListState scalingLazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(kotlin.jvm.functions.Function0<java.lang.Float> value, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> range, optional long color, optional boolean reverseDirection, optional int position);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(kotlin.jvm.functions.Function0<java.lang.Float> value, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> range, optional long color, optional boolean reverseDirection, optional int position, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+  }
+
+  @androidx.compose.runtime.Stable public interface PositionIndicatorState {
+    method @FloatRange(from=0.0, to=1.0) public float getPositionFraction();
+    method @FloatRange(from=0.0, to=1.0) public float sizeFraction(@FloatRange(from=0.0) float scrollableContainerSizePx);
+    method public int visibility(@FloatRange(from=0.0) float scrollableContainerSizePx);
+    property @FloatRange(from=0.0, to=1.0) public abstract float positionFraction;
+  }
+
+  @kotlin.jvm.JvmInline public final value class PositionIndicatorVisibility {
+    field public static final androidx.wear.compose.material.PositionIndicatorVisibility.Companion Companion;
+  }
+
+  public static final class PositionIndicatorVisibility.Companion {
+    method public int getAutoHide();
+    method public int getHide();
+    method public int getShow();
+    property public final int AutoHide;
+    property public final int Hide;
+    property public final int Show;
+  }
+
+  public final class ProgressIndicatorDefaults {
+    method public float getFullScreenStrokeWidth();
+    method public float getIndeterminateStrokeWidth();
+    method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getProgressAnimationSpec();
+    method public float getStrokeWidth();
+    property public final float FullScreenStrokeWidth;
+    property public final float IndeterminateStrokeWidth;
+    property public final androidx.compose.animation.core.SpringSpec<java.lang.Float> ProgressAnimationSpec;
+    property public final float StrokeWidth;
+    field public static final androidx.wear.compose.material.ProgressIndicatorDefaults INSTANCE;
+  }
+
+  public final class ProgressIndicatorKt {
+    method @androidx.compose.runtime.Composable public static void CircularProgressIndicator(optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional long indicatorColor, optional long trackColor, optional float strokeWidth);
+    method @androidx.compose.runtime.Composable public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional float endAngle, optional long indicatorColor, optional long trackColor, optional float strokeWidth);
+  }
+
+  @androidx.compose.runtime.Stable public interface RadioButtonColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> dotColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> ringColor(boolean enabled, boolean selected);
+  }
+
+  public final class RadioButtonDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.RadioButtonColors colors(optional long selectedRingColor, optional long selectedDotColor, optional long unselectedRingColor, optional long unselectedDotColor);
+    field public static final androidx.wear.compose.material.RadioButtonDefaults INSTANCE;
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class ResistanceConfig {
+    ctor public ResistanceConfig(@FloatRange(from=0.0, fromInclusive=false) float basis, optional @FloatRange(from=0.0) float factorAtMin, optional @FloatRange(from=0.0) float factorAtMax);
+    method public float computeResistance(float overflow);
+    method public float getBasis();
+    method public float getFactorAtMax();
+    method public float getFactorAtMin();
+    property public final float basis;
+    property public final float factorAtMax;
+    property public final float factorAtMin;
+  }
+
+  public final class RippleKt {
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Boolean> getLocalUseFallbackRippleImplementation();
+    method @androidx.compose.runtime.Stable public static androidx.compose.foundation.IndicationNodeFactory ripple(androidx.compose.ui.graphics.ColorProducer color, optional boolean bounded, optional float radius);
+    method @androidx.compose.runtime.Stable public static androidx.compose.foundation.IndicationNodeFactory ripple(optional boolean bounded, optional float radius, optional long color);
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static final androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Boolean> LocalUseFallbackRippleImplementation;
+  }
+
+  public final class ScaffoldKt {
+    method @androidx.compose.runtime.Composable public static void Scaffold(optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? vignette, optional kotlin.jvm.functions.Function0<kotlin.Unit>? positionIndicator, optional kotlin.jvm.functions.Function0<kotlin.Unit>? pageIndicator, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+  @Deprecated public final class ScalingLazyColumnDefaults {
+    method @Deprecated public androidx.wear.compose.material.ScalingParams scalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    method @Deprecated @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior snapFlingBehavior(androidx.wear.compose.material.ScalingLazyListState state, optional float snapOffset, optional androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> decay);
+    field @Deprecated public static final androidx.wear.compose.material.ScalingLazyColumnDefaults INSTANCE;
+  }
+
+  public final class ScalingLazyColumnKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.material.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.material.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListScope,kotlin.Unit> content);
+    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+  }
+
+  @Deprecated @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
+    field @Deprecated public static final androidx.wear.compose.material.ScalingLazyListAnchorType.Companion Companion;
+  }
+
+  @Deprecated public static final class ScalingLazyListAnchorType.Companion {
+    method @Deprecated public int getItemCenter();
+    method @Deprecated public int getItemStart();
+    property @Deprecated public final int ItemCenter;
+    property @Deprecated public final int ItemStart;
+  }
+
+  @Deprecated public sealed interface ScalingLazyListItemInfo {
+    method @Deprecated public float getAlpha();
+    method @Deprecated public int getIndex();
+    method @Deprecated public Object getKey();
+    method @Deprecated public int getOffset();
+    method @Deprecated public float getScale();
+    method @Deprecated public int getSize();
+    method @Deprecated public int getUnadjustedOffset();
+    method @Deprecated public int getUnadjustedSize();
+    property @Deprecated public abstract float alpha;
+    property @Deprecated public abstract int index;
+    property @Deprecated public abstract Object key;
+    property @Deprecated public abstract int offset;
+    property @Deprecated public abstract float scale;
+    property @Deprecated public abstract int size;
+    property @Deprecated public abstract int unadjustedOffset;
+    property @Deprecated public abstract int unadjustedSize;
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable @androidx.wear.compose.material.ScalingLazyScopeMarker public sealed interface ScalingLazyListItemScope {
+    method @Deprecated public androidx.compose.ui.Modifier fillParentMaxHeight(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method @Deprecated public androidx.compose.ui.Modifier fillParentMaxSize(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method @Deprecated public androidx.compose.ui.Modifier fillParentMaxWidth(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+  }
+
+  @Deprecated public sealed interface ScalingLazyListLayoutInfo {
+    method @Deprecated public int getAfterAutoCenteringPadding();
+    method @Deprecated public int getAfterContentPadding();
+    method @Deprecated public int getBeforeAutoCenteringPadding();
+    method @Deprecated public int getBeforeContentPadding();
+    method @Deprecated public androidx.compose.foundation.gestures.Orientation getOrientation();
+    method @Deprecated public boolean getReverseLayout();
+    method @Deprecated public int getTotalItemsCount();
+    method @Deprecated public int getViewportEndOffset();
+    method @Deprecated public long getViewportSize();
+    method @Deprecated public int getViewportStartOffset();
+    method @Deprecated public java.util.List<androidx.wear.compose.material.ScalingLazyListItemInfo> getVisibleItemsInfo();
+    property @Deprecated public abstract int afterAutoCenteringPadding;
+    property @Deprecated public abstract int afterContentPadding;
+    property @Deprecated public abstract int beforeAutoCenteringPadding;
+    property @Deprecated public abstract int beforeContentPadding;
+    property @Deprecated public abstract androidx.compose.foundation.gestures.Orientation orientation;
+    property @Deprecated public abstract boolean reverseLayout;
+    property @Deprecated public abstract int totalItemsCount;
+    property @Deprecated public abstract int viewportEndOffset;
+    property @Deprecated public abstract long viewportSize;
+    property @Deprecated public abstract int viewportStartOffset;
+    property @Deprecated public abstract java.util.List<androidx.wear.compose.material.ScalingLazyListItemInfo> visibleItemsInfo;
+  }
+
+  @Deprecated @androidx.wear.compose.material.ScalingLazyScopeMarker public sealed interface ScalingLazyListScope {
+    method @Deprecated public void item(optional Object? key, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListItemScope,kotlin.Unit> content);
+    method @Deprecated public void items(int count, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,kotlin.Unit> itemContent);
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
+    ctor @Deprecated public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+    method @Deprecated public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public float dispatchRawDelta(float delta);
+    method @Deprecated public int getCenterItemIndex();
+    method @Deprecated public int getCenterItemScrollOffset();
+    method @Deprecated public androidx.wear.compose.material.ScalingLazyListLayoutInfo getLayoutInfo();
+    method @Deprecated public boolean isScrollInProgress();
+    method @Deprecated public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property @Deprecated public boolean canScrollBackward;
+    property @Deprecated public boolean canScrollForward;
+    property @Deprecated public final int centerItemIndex;
+    property @Deprecated public final int centerItemScrollOffset;
+    property @Deprecated public boolean isScrollInProgress;
+    property @Deprecated public final androidx.wear.compose.material.ScalingLazyListLayoutInfo layoutInfo;
+    field @Deprecated public static final androidx.wear.compose.material.ScalingLazyListState.Companion Companion;
+  }
+
+  @Deprecated public static final class ScalingLazyListState.Companion {
+    method @Deprecated public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.ScalingLazyListState,java.lang.Object> getSaver();
+    property @Deprecated public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.ScalingLazyListState,java.lang.Object> Saver;
+  }
+
+  public final class ScalingLazyListStateKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.wear.compose.material.ScalingLazyListState rememberScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+  }
+
+  @Deprecated @kotlin.DslMarker public @interface ScalingLazyScopeMarker {
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public interface ScalingParams {
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getEdgeAlpha();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getEdgeScale();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMaxElementHeight();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMaxTransitionArea();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMinElementHeight();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMinTransitionArea();
+    method @Deprecated public androidx.compose.animation.core.Easing getScaleInterpolator();
+    method @Deprecated public int resolveViewportVerticalOffset(long viewportConstraints);
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float edgeAlpha;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float edgeScale;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float maxElementHeight;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float maxTransitionArea;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float minElementHeight;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float minTransitionArea;
+    property @Deprecated public abstract androidx.compose.animation.core.Easing scaleInterpolator;
+  }
+
+  public final class ScrollAwayKt {
+    method public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.compose.foundation.lazy.LazyListState scrollState, optional int itemIndex, optional float offset);
+    method public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState scrollState, optional float offset);
+    method public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional int itemIndex, optional float offset);
+    method @Deprecated public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.wear.compose.material.ScalingLazyListState scrollState, optional int itemIndex, optional float offset);
+  }
+
+  @androidx.compose.runtime.Stable public interface SelectableChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.painter.Painter> background(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> selectionControlColor(boolean enabled, boolean selected);
+  }
+
+  public final class SelectableChipDefaults {
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public float getHeight();
+    method public float getIconSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SelectableChipColors selectableChipColors(optional long selectedStartBackgroundColor, optional long selectedEndBackgroundColor, optional long selectedContentColor, optional long selectedSecondaryContentColor, optional long selectedSelectionControlColor, optional long unselectedStartBackgroundColor, optional long unselectedEndBackgroundColor, optional long unselectedContentColor, optional long unselectedSecondaryContentColor, optional long unselectedSelectionControlColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SplitSelectableChipColors splitSelectableChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long selectedSelectionControlColor, optional long unselectedSelectionControlColor, optional long splitBackgroundOverlayColor);
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final float Height;
+    property public final float IconSize;
+    field public static final androidx.wear.compose.material.SelectableChipDefaults INSTANCE;
+  }
+
+  public final class SelectableChipKt {
+    method @androidx.compose.runtime.Composable public static void SelectableChip(boolean selected, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? appIcon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.SelectableChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional kotlin.jvm.functions.Function0<kotlin.Unit> selectionControl);
+    method @androidx.compose.runtime.Composable public static void SplitSelectableChip(boolean selected, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onSelectionClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onContainerClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.SplitSelectableChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? selectionInteractionSource, optional androidx.compose.foundation.interaction.MutableInteractionSource? containerInteractionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> selectionControl);
+  }
+
+  @androidx.compose.runtime.Immutable public final class Shapes {
+    ctor public Shapes(optional androidx.compose.foundation.shape.CornerBasedShape small, optional androidx.compose.foundation.shape.CornerBasedShape medium, optional androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.wear.compose.material.Shapes copy(optional androidx.compose.foundation.shape.CornerBasedShape small, optional androidx.compose.foundation.shape.CornerBasedShape medium, optional androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
+    property public final androidx.compose.foundation.shape.CornerBasedShape large;
+    property public final androidx.compose.foundation.shape.CornerBasedShape medium;
+    property public final androidx.compose.foundation.shape.CornerBasedShape small;
+  }
+
+  public final class SliderKt {
+    method @androidx.compose.runtime.Composable public static void InlineSlider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, int steps, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional boolean segmented, optional androidx.wear.compose.material.InlineSliderColors colors);
+    method @androidx.compose.runtime.Composable public static void InlineSlider(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean segmented, optional androidx.wear.compose.material.InlineSliderColors colors);
+  }
+
+  @androidx.compose.runtime.Stable public interface SplitSelectableChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> selectionControlColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> splitBackgroundOverlay(boolean enabled, boolean selected);
+  }
+
+  @androidx.compose.runtime.Stable public interface SplitToggleChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> splitBackgroundOverlay(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> toggleControlColor(boolean enabled, boolean checked);
+  }
+
+  public final class StepperDefaults {
+    method public androidx.compose.ui.graphics.vector.ImageVector getDecrease();
+    method public androidx.compose.ui.graphics.vector.ImageVector getIncrease();
+    property public final androidx.compose.ui.graphics.vector.ImageVector Decrease;
+    property public final androidx.compose.ui.graphics.vector.ImageVector Increase;
+    field public static final androidx.wear.compose.material.StepperDefaults INSTANCE;
+  }
+
+  public final class StepperKt {
+    method @androidx.compose.runtime.Composable public static void Stepper(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, int steps, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional long backgroundColor, optional long contentColor, optional long iconColor, optional boolean enableRangeSemantics, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Stepper(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, int steps, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional long backgroundColor, optional long contentColor, optional long iconColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Stepper(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional long iconColor, optional boolean enableRangeSemantics, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Stepper(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional long iconColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeProgress<T> {
+    ctor public SwipeProgress(T from, T to, @FloatRange(from=0.0, to=1.0) float fraction);
+    method public float getFraction();
+    method public T getFrom();
+    method public T getTo();
+    property public final float fraction;
+    property public final T from;
+    property public final T to;
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public final class SwipeToDismissBoxDefaults {
+    method @Deprecated public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
+    method @Deprecated public float getEdgeWidth();
+    property @Deprecated public final androidx.compose.animation.core.SpringSpec<java.lang.Float> AnimationSpec;
+    property @Deprecated public final float EdgeWidth;
+    field @Deprecated public static final androidx.wear.compose.material.SwipeToDismissBoxDefaults INSTANCE;
+  }
+
+  public final class SwipeToDismissBoxKt {
+    method @androidx.compose.runtime.Composable public static void SwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional androidx.compose.ui.Modifier modifier, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeToDismissBox(androidx.wear.compose.material.SwipeToDismissBoxState state, optional androidx.compose.ui.Modifier modifier, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void SwipeToDismissBox(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissed, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeToDismissBox(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissed, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.SwipeToDismissBoxState state, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @Deprecated public static androidx.compose.ui.Modifier edgeSwipeToDismiss(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeToDismissBoxState swipeToDismissBoxState, optional float edgeWidth);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.wear.compose.material.SwipeToDismissBoxState rememberSwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public final class SwipeToDismissBoxState {
+    ctor @Deprecated public SwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+    method @Deprecated public androidx.wear.compose.material.SwipeToDismissValue getCurrentValue();
+    method @Deprecated public androidx.wear.compose.material.SwipeToDismissValue getTargetValue();
+    method @Deprecated public boolean isAnimationRunning();
+    method @Deprecated public suspend Object? snapTo(androidx.wear.compose.material.SwipeToDismissValue targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property @Deprecated public final androidx.wear.compose.material.SwipeToDismissValue currentValue;
+    property @Deprecated public final boolean isAnimationRunning;
+    property @Deprecated public final androidx.wear.compose.material.SwipeToDismissValue targetValue;
+  }
+
+  public enum SwipeToDismissKeys {
+    enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Background;
+    enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Content;
+  }
+
+  @Deprecated public enum SwipeToDismissValue {
+    enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Default;
+    enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeToRevealActionColors {
+    ctor public SwipeToRevealActionColors(long primaryActionBackgroundColor, long primaryActionContentColor, long secondaryActionBackgroundColor, long secondaryActionContentColor, long undoActionBackgroundColor, long undoActionContentColor);
+    method public long getPrimaryActionBackgroundColor();
+    method public long getPrimaryActionContentColor();
+    method public long getSecondaryActionBackgroundColor();
+    method public long getSecondaryActionContentColor();
+    method public long getUndoActionBackgroundColor();
+    method public long getUndoActionContentColor();
+    property public final long primaryActionBackgroundColor;
+    property public final long primaryActionContentColor;
+    property public final long secondaryActionBackgroundColor;
+    property public final long secondaryActionContentColor;
+    property public final long undoActionBackgroundColor;
+    property public final long undoActionContentColor;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeToRevealDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SwipeToRevealActionColors actionColors(optional long primaryActionBackgroundColor, optional long primaryActionContentColor, optional long secondaryActionBackgroundColor, optional long secondaryActionContentColor, optional long undoActionBackgroundColor, optional long undoActionContentColor);
+    method public androidx.compose.foundation.shape.RoundedCornerShape getCardActionShape();
+    method public androidx.compose.ui.graphics.vector.ImageVector getDelete();
+    method public androidx.compose.ui.graphics.vector.ImageVector getMoreOptions();
+    property public final androidx.compose.foundation.shape.RoundedCornerShape CardActionShape;
+    property public final androidx.compose.ui.graphics.vector.ImageVector Delete;
+    property public final androidx.compose.ui.graphics.vector.ImageVector MoreOptions;
+    field public static final androidx.wear.compose.material.SwipeToRevealDefaults INSTANCE;
+  }
+
+  public final class SwipeToRevealKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealCard(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> primaryAction, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? secondaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoPrimaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoSecondaryAction, optional androidx.wear.compose.material.SwipeToRevealActionColors colors, optional androidx.compose.ui.graphics.Shape shape, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealChip(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> primaryAction, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? secondaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoPrimaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoSecondaryAction, optional androidx.wear.compose.material.SwipeToRevealActionColors colors, optional androidx.compose.ui.graphics.Shape shape, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealPrimaryAction(androidx.wear.compose.foundation.RevealScope, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> label, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealSecondaryAction(androidx.wear.compose.foundation.RevealScope, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealUndoAction(androidx.wear.compose.foundation.RevealScope, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label);
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeableDefaults {
+    method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
+    method public float getVelocityThreshold();
+    method public androidx.wear.compose.material.ResistanceConfig? resistanceConfig(java.util.Set<java.lang.Float> anchors, optional float factorAtMin, optional float factorAtMax);
+    property public final androidx.compose.animation.core.SpringSpec<java.lang.Float> AnimationSpec;
+    property public final float VelocityThreshold;
+    field public static final androidx.wear.compose.material.SwipeableDefaults INSTANCE;
+    field public static final float StandardResistanceFactor = 10.0f;
+    field public static final float StiffResistanceFactor = 20.0f;
+  }
+
+  public final class SwipeableKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.wear.compose.material.SwipeableState<T> rememberSwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.compose.ui.Modifier swipeable(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeableState<T> state, java.util.Map<java.lang.Float,? extends T> anchors, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends androidx.wear.compose.material.ThresholdConfig> thresholds, optional androidx.wear.compose.material.ResistanceConfig? resistance, optional float velocityThreshold);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public class SwipeableState<T> {
+    ctor public SwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? animateTo(T targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> anim, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public final T getCurrentValue();
+    method public final float getDirection();
+    method public final androidx.compose.runtime.State<java.lang.Float> getOffset();
+    method public final androidx.compose.runtime.State<java.lang.Float> getOverflow();
+    method public final androidx.wear.compose.material.SwipeProgress<T> getProgress();
+    method public final T getTargetValue();
+    method public final boolean isAnimationRunning();
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? performFling(float velocity, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? snapTo(T targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final T currentValue;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final float direction;
+    property public final boolean isAnimationRunning;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> offset;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> overflow;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.wear.compose.material.SwipeProgress<T> progress;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final T targetValue;
+    field public static final androidx.wear.compose.material.SwipeableState.Companion Companion;
+  }
+
+  public static final class SwipeableState.Companion {
+    method public <T> androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.SwipeableState<T>,T> Saver(androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+  }
+
+  @androidx.compose.runtime.Stable public interface SwitchColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
+  }
+
+  public final class SwitchDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SwitchColors colors(optional long checkedThumbColor, optional long checkedTrackColor, optional long uncheckedThumbColor, optional long uncheckedTrackColor);
+    field public static final androidx.wear.compose.material.SwitchDefaults INSTANCE;
+  }
+
+  public final class TextKt {
+    method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Text(androidx.compose.ui.text.AnnotatedString text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional java.util.Map<java.lang.String,androidx.compose.foundation.text.InlineTextContent> inlineContent, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Text(androidx.compose.ui.text.AnnotatedString text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional java.util.Map<java.lang.String,androidx.compose.foundation.text.InlineTextContent> inlineContent, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> getLocalTextStyle();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public interface ThresholdConfig {
+    method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
+  }
+
+  public interface TimeSource {
+    method @androidx.compose.runtime.Composable public String getCurrentTime();
+    property @androidx.compose.runtime.Composable public abstract String currentTime;
+  }
+
+  public final class TimeTextDefaults {
+    method public void CurvedTextSeparator(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedTextStyle? curvedTextStyle, optional androidx.wear.compose.foundation.ArcPaddingValues contentArcPadding);
+    method @androidx.compose.runtime.Composable public void TextSeparator(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.text.TextStyle textStyle, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method @androidx.compose.runtime.Composable public String timeFormat();
+    method public androidx.wear.compose.material.TimeSource timeSource(String timeFormat);
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.text.TextStyle timeTextStyle(optional long background, optional long color, optional long fontSize);
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    field public static final androidx.wear.compose.material.TimeTextDefaults INSTANCE;
+    field public static final String TimeFormat12Hours = "h:mm";
+    field public static final String TimeFormat24Hours = "HH:mm";
+  }
+
+  public final class TimeTextKt {
+    method @androidx.compose.runtime.Composable public static void TimeText(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.TimeSource timeSource, optional androidx.compose.ui.text.TextStyle timeTextStyle, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit>? startLinearContent, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit>? startCurvedContent, optional kotlin.jvm.functions.Function0<kotlin.Unit>? endLinearContent, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit>? endCurvedContent, optional kotlin.jvm.functions.Function0<kotlin.Unit> textLinearSeparator, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> textCurvedSeparator);
+  }
+
+  @androidx.compose.runtime.Stable public interface ToggleButtonColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled, boolean checked);
+  }
+
+  public final class ToggleButtonDefaults {
+    method public float getDefaultIconSize();
+    method public int getDefaultRole();
+    method public float getDefaultToggleButtonSize();
+    method public float getSmallIconSize();
+    method public float getSmallToggleButtonSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ToggleButtonColors toggleButtonColors(optional long checkedBackgroundColor, optional long checkedContentColor, optional long disabledCheckedBackgroundColor, optional long disabledCheckedContentColor, optional long uncheckedBackgroundColor, optional long uncheckedContentColor, optional long disabledUncheckedBackgroundColor, optional long disabledUncheckedContentColor);
+    property public final float DefaultIconSize;
+    property public final int DefaultRole;
+    property public final float DefaultToggleButtonSize;
+    property public final float SmallIconSize;
+    property public final float SmallToggleButtonSize;
+    field public static final androidx.wear.compose.material.ToggleButtonDefaults INSTANCE;
+  }
+
+  public final class ToggleButtonKt {
+    method @androidx.compose.runtime.Composable public static void ToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional int role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void ToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void ToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  @androidx.compose.runtime.Stable public interface ToggleChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.painter.Painter> background(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> toggleControlColor(boolean enabled, boolean checked);
+  }
+
+  public final class ToggleChipDefaults {
+    method public androidx.compose.ui.graphics.vector.ImageVector checkboxIcon(boolean checked);
+    method public androidx.compose.ui.graphics.vector.ImageVector getCheckboxOn();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public float getHeight();
+    method public float getIconSize();
+    method public androidx.compose.ui.graphics.vector.ImageVector getRadioOff();
+    method public androidx.compose.ui.graphics.vector.ImageVector getRadioOn();
+    method @androidx.compose.runtime.Composable public long getSwitchUncheckedIconColor();
+    method public androidx.compose.ui.graphics.vector.ImageVector radioIcon(boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SplitToggleChipColors splitToggleChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long checkedToggleControlColor, optional long uncheckedToggleControlColor, optional long splitBackgroundOverlayColor);
+    method public androidx.compose.ui.graphics.vector.ImageVector switchIcon(boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ToggleChipColors toggleChipColors(optional long checkedStartBackgroundColor, optional long checkedEndBackgroundColor, optional long checkedContentColor, optional long checkedSecondaryContentColor, optional long checkedToggleControlColor, optional long uncheckedStartBackgroundColor, optional long uncheckedEndBackgroundColor, optional long uncheckedContentColor, optional long uncheckedSecondaryContentColor, optional long uncheckedToggleControlColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    property public final androidx.compose.ui.graphics.vector.ImageVector CheckboxOn;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final float Height;
+    property public final float IconSize;
+    property public final androidx.compose.ui.graphics.vector.ImageVector RadioOff;
+    property public final androidx.compose.ui.graphics.vector.ImageVector RadioOn;
+    property @androidx.compose.runtime.Composable public final long SwitchUncheckedIconColor;
+    field public static final androidx.wear.compose.material.ToggleChipDefaults INSTANCE;
+  }
+
+  public final class ToggleChipKt {
+    method @androidx.compose.runtime.Composable public static void SplitToggleChip(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> toggleControl, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.SplitToggleChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? checkedInteractionSource, optional androidx.compose.foundation.interaction.MutableInteractionSource? clickInteractionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape);
+    method @androidx.compose.runtime.Composable public static void ToggleChip(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> toggleControl, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? appIcon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.ToggleChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape);
+  }
+
+  public final class ToggleControlKt {
+    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.CheckboxColors colors, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.RadioButtonColors colors, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.SwitchColors colors, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+  }
+
+  public fun interface TouchExplorationStateProvider {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<java.lang.Boolean> touchExplorationState();
+  }
+
+  @androidx.compose.runtime.Immutable public final class Typography {
+    ctor public Typography(optional androidx.compose.ui.text.font.FontFamily defaultFontFamily, optional androidx.compose.ui.text.TextStyle display1, optional androidx.compose.ui.text.TextStyle display2, optional androidx.compose.ui.text.TextStyle display3, optional androidx.compose.ui.text.TextStyle title1, optional androidx.compose.ui.text.TextStyle title2, optional androidx.compose.ui.text.TextStyle title3, optional androidx.compose.ui.text.TextStyle body1, optional androidx.compose.ui.text.TextStyle body2, optional androidx.compose.ui.text.TextStyle button, optional androidx.compose.ui.text.TextStyle caption1, optional androidx.compose.ui.text.TextStyle caption2, optional androidx.compose.ui.text.TextStyle caption3);
+    method public androidx.wear.compose.material.Typography copy(optional androidx.compose.ui.text.TextStyle display1, optional androidx.compose.ui.text.TextStyle display2, optional androidx.compose.ui.text.TextStyle display3, optional androidx.compose.ui.text.TextStyle title1, optional androidx.compose.ui.text.TextStyle title2, optional androidx.compose.ui.text.TextStyle title3, optional androidx.compose.ui.text.TextStyle body1, optional androidx.compose.ui.text.TextStyle body2, optional androidx.compose.ui.text.TextStyle button, optional androidx.compose.ui.text.TextStyle caption1, optional androidx.compose.ui.text.TextStyle caption2, optional androidx.compose.ui.text.TextStyle caption3);
+    method public androidx.compose.ui.text.TextStyle getBody1();
+    method public androidx.compose.ui.text.TextStyle getBody2();
+    method public androidx.compose.ui.text.TextStyle getButton();
+    method public androidx.compose.ui.text.TextStyle getCaption1();
+    method public androidx.compose.ui.text.TextStyle getCaption2();
+    method public androidx.compose.ui.text.TextStyle getCaption3();
+    method public androidx.compose.ui.text.TextStyle getDisplay1();
+    method public androidx.compose.ui.text.TextStyle getDisplay2();
+    method public androidx.compose.ui.text.TextStyle getDisplay3();
+    method public androidx.compose.ui.text.TextStyle getTitle1();
+    method public androidx.compose.ui.text.TextStyle getTitle2();
+    method public androidx.compose.ui.text.TextStyle getTitle3();
+    property public final androidx.compose.ui.text.TextStyle body1;
+    property public final androidx.compose.ui.text.TextStyle body2;
+    property public final androidx.compose.ui.text.TextStyle button;
+    property public final androidx.compose.ui.text.TextStyle caption1;
+    property public final androidx.compose.ui.text.TextStyle caption2;
+    property public final androidx.compose.ui.text.TextStyle caption3;
+    property public final androidx.compose.ui.text.TextStyle display1;
+    property public final androidx.compose.ui.text.TextStyle display2;
+    property public final androidx.compose.ui.text.TextStyle display3;
+    property public final androidx.compose.ui.text.TextStyle title1;
+    property public final androidx.compose.ui.text.TextStyle title2;
+    property public final androidx.compose.ui.text.TextStyle title3;
+  }
+
+  public final class VignetteKt {
+    method @androidx.compose.runtime.Composable public static void Vignette(int vignettePosition, optional androidx.compose.ui.Modifier modifier);
+  }
+
+  @kotlin.jvm.JvmInline public final value class VignettePosition {
+    ctor public VignettePosition(int key);
+    field public static final androidx.wear.compose.material.VignettePosition.Companion Companion;
+  }
+
+  public static final class VignettePosition.Companion {
+    method public int getBottom();
+    method public int getTop();
+    method public int getTopAndBottom();
+    property public final int Bottom;
+    property public final int Top;
+    property public final int TopAndBottom;
+  }
+
+}
+
+package androidx.wear.compose.material.dialog {
+
+  public final class DialogDefaults {
+    method public androidx.compose.foundation.layout.Arrangement.Vertical getAlertVerticalArrangement();
+    method public androidx.compose.foundation.layout.Arrangement.Vertical getConfirmationVerticalArrangement();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public long getIndefiniteDurationMillis();
+    method public long getLongDurationMillis();
+    method public long getShortDurationMillis();
+    property public final androidx.compose.foundation.layout.Arrangement.Vertical AlertVerticalArrangement;
+    property public final androidx.compose.foundation.layout.Arrangement.Vertical ConfirmationVerticalArrangement;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final long IndefiniteDurationMillis;
+    property public final long LongDurationMillis;
+    property public final long ShortDurationMillis;
+    field public static final androidx.wear.compose.material.dialog.DialogDefaults INSTANCE;
+  }
+
+  public final class DialogKt {
+    method @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? message, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional long backgroundColor, optional long titleColor, optional long messageColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? message, optional androidx.wear.compose.material.ScalingLazyListState scrollState, optional long backgroundColor, optional long titleColor, optional long messageColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, kotlin.jvm.functions.Function0<kotlin.Unit> negativeButton, kotlin.jvm.functions.Function0<kotlin.Unit> positiveButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional long backgroundColor, optional long contentColor, optional long titleColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, kotlin.jvm.functions.Function0<kotlin.Unit> negativeButton, kotlin.jvm.functions.Function0<kotlin.Unit> positiveButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ScalingLazyListState scrollState, optional long backgroundColor, optional long contentColor, optional long titleColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? content);
+    method @androidx.compose.runtime.Composable public static void Confirmation(kotlin.jvm.functions.Function0<kotlin.Unit> onTimeout, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional long durationMillis, optional long backgroundColor, optional long contentColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Confirmation(kotlin.jvm.functions.Function0<kotlin.Unit> onTimeout, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ScalingLazyListState scrollState, optional long durationMillis, optional long backgroundColor, optional long contentColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+  }
+
+  public final class Dialog_androidKt {
+    method @androidx.compose.runtime.Composable public static void Dialog(boolean showDialog, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState? scrollState, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Dialog(boolean showDialog, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.ScalingLazyListState? scrollState, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+}
+
diff --git a/wear/compose/compose-material/api/res-1.4.0-beta02.txt b/wear/compose/compose-material/api/res-1.4.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/wear/compose/compose-material/api/res-1.4.0-beta02.txt
diff --git a/wear/compose/compose-material/api/restricted_1.2.0-beta01.txt b/wear/compose/compose-material/api/restricted_1.2.0-beta01.txt
index 13baed6..5f826b5 100644
--- a/wear/compose/compose-material/api/restricted_1.2.0-beta01.txt
+++ b/wear/compose/compose-material/api/restricted_1.2.0-beta01.txt
@@ -6,7 +6,7 @@
   }
 
   @androidx.compose.runtime.Stable public interface ButtonBorder {
-    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke> borderStroke(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
   }
 
   @androidx.compose.runtime.Stable public interface ButtonColors {
@@ -77,7 +77,7 @@
   }
 
   @androidx.compose.runtime.Stable public interface ChipBorder {
-    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke> borderStroke(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
   }
 
   @androidx.compose.runtime.Stable public interface ChipColors {
@@ -90,7 +90,7 @@
   public final class ChipDefaults {
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors childChipColors(optional long contentColor, optional long secondaryContentColor, optional long iconColor);
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipBorder chipBorder(optional androidx.compose.foundation.BorderStroke? borderStroke, optional androidx.compose.foundation.BorderStroke? disabledBorderStroke);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public androidx.wear.compose.material.ChipColors chipColors(androidx.compose.ui.graphics.painter.Painter backgroundPainter, long contentColor, long secondaryContentColor, long iconColor, androidx.compose.ui.graphics.painter.Painter disabledBackgroundPainter, long disabledContentColor, long disabledSecondaryContentColor, long disabledIconColor);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public androidx.wear.compose.material.ChipColors chipColors(androidx.compose.ui.graphics.painter.Painter backgroundPainter, long contentColor, long secondaryContentColor, long iconColor, androidx.compose.ui.graphics.painter.Painter disabledBackgroundPainter, long disabledContentColor, long disabledSecondaryContentColor, long disabledIconColor);
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors chipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor, optional long disabledBackgroundColor, optional long disabledContentColor, optional long disabledSecondaryContentColor, optional long disabledIconColor);
     method public androidx.compose.foundation.layout.PaddingValues getCompactChipContentPadding();
     method public androidx.compose.foundation.layout.PaddingValues getCompactChipTapTargetPadding();
@@ -185,16 +185,16 @@
     method @Deprecated public static void curvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional long background, optional long color, optional long fontSize, optional androidx.wear.compose.foundation.CurvedTextStyle? style, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
   }
 
-  @kotlin.RequiresOptIn(message="This Wear Material API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearMaterialApi {
+  @SuppressCompatibility @kotlin.RequiresOptIn(message="This Wear Material API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearMaterialApi {
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FixedThreshold implements androidx.wear.compose.material.ThresholdConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FixedThreshold implements androidx.wear.compose.material.ThresholdConfig {
     ctor public FixedThreshold(float offset);
     method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
     method public androidx.wear.compose.material.FixedThreshold copy-0680j_4(float offset);
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FractionalThreshold implements androidx.wear.compose.material.ThresholdConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FractionalThreshold implements androidx.wear.compose.material.ThresholdConfig {
     ctor public FractionalThreshold(float fraction);
     method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
     method public androidx.wear.compose.material.FractionalThreshold copy(float fraction);
@@ -296,7 +296,7 @@
   }
 
   public final class PickerGroupKt {
-    method @androidx.compose.runtime.Composable public static void PickerGroup(androidx.wear.compose.material.PickerGroupItem![] pickers, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.PickerGroupState pickerGroupState, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onSelected, optional boolean autoCenter, optional boolean propagateMinConstraints, optional androidx.wear.compose.material.TouchExplorationStateProvider touchExplorationStateProvider, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? separator);
+    method @androidx.compose.runtime.Composable public static void PickerGroup(androidx.wear.compose.material.PickerGroupItem[] pickers, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.PickerGroupState pickerGroupState, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onSelected, optional boolean autoCenter, optional boolean propagateMinConstraints, optional androidx.wear.compose.material.TouchExplorationStateProvider touchExplorationStateProvider, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? separator);
     method @androidx.compose.runtime.Composable public static androidx.wear.compose.material.PickerGroupState rememberPickerGroupState(optional int initiallySelectedIndex);
   }
 
@@ -351,7 +351,7 @@
     property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
   }
 
-  @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderDefaults {
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderDefaults {
     method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter painterWithPlaceholderOverlayBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, androidx.compose.ui.graphics.painter.Painter painter, optional long color);
     method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter placeholderBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
     method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors placeholderChipColors(androidx.wear.compose.material.ChipColors originalChipColors, androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
@@ -360,12 +360,12 @@
   }
 
   public final class PlaceholderKt {
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholder(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholderShimmer(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.wear.compose.material.PlaceholderState rememberPlaceholderState(kotlin.jvm.functions.Function0<java.lang.Boolean> isContentReady);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholder(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholderShimmer(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.wear.compose.material.PlaceholderState rememberPlaceholderState(kotlin.jvm.functions.Function0<java.lang.Boolean> isContentReady);
   }
 
-  @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderState {
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderState {
     method public float getPlaceholderProgression();
     method public boolean isShowContent();
     method public boolean isWipeOff();
@@ -442,7 +442,7 @@
     field public static final androidx.wear.compose.material.RadioButtonDefaults INSTANCE;
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class ResistanceConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class ResistanceConfig {
     ctor public ResistanceConfig(float basis, optional float factorAtMin, optional float factorAtMax);
     method public float computeResistance(float overflow);
     method public float getBasis();
@@ -466,9 +466,9 @@
   public final class ScalingLazyColumnKt {
     method @Deprecated @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.material.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.material.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListScope,kotlin.Unit> content);
     method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
-    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
     method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
-    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
   @Deprecated @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
@@ -539,14 +539,14 @@
 
   @Deprecated @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
     ctor @Deprecated public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
-    method @Deprecated public suspend Object? animateScrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method @Deprecated public float dispatchRawDelta(float delta);
     method @Deprecated public int getCenterItemIndex();
     method @Deprecated public int getCenterItemScrollOffset();
     method @Deprecated public androidx.wear.compose.material.ScalingLazyListLayoutInfo getLayoutInfo();
     method @Deprecated public boolean isScrollInProgress();
     method @Deprecated public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method @Deprecated public suspend Object? scrollToItem(int index, optional int scrollOffset, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property @Deprecated public boolean canScrollBackward;
     property @Deprecated public boolean canScrollForward;
     property @Deprecated public final int centerItemIndex;
@@ -632,7 +632,7 @@
     method @Deprecated @androidx.compose.runtime.Composable public static void Stepper(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional long iconColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
   }
 
-  @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeProgress<T> {
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeProgress<T> {
     ctor public SwipeProgress(T from, T to, float fraction);
     method public float getFraction();
     method public T getFrom();
@@ -669,20 +669,16 @@
   }
 
   public enum SwipeToDismissKeys {
-    method public static androidx.wear.compose.material.SwipeToDismissKeys valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.material.SwipeToDismissKeys[] values();
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Background;
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Content;
   }
 
   public enum SwipeToDismissValue {
-    method public static androidx.wear.compose.material.SwipeToDismissValue valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.wear.compose.material.SwipeToDismissValue[] values();
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Default;
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
 
-  @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeableDefaults {
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
     method public androidx.wear.compose.material.ResistanceConfig? resistanceConfig(java.util.Set<java.lang.Float> anchors, optional float factorAtMin, optional float factorAtMax);
@@ -694,13 +690,13 @@
   }
 
   public final class SwipeableKt {
-    method @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.wear.compose.material.SwipeableState<T> rememberSwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.compose.ui.Modifier swipeable(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeableState<T> state, java.util.Map<java.lang.Float,? extends T> anchors, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends androidx.wear.compose.material.ThresholdConfig> thresholds, optional androidx.wear.compose.material.ResistanceConfig? resistance, optional float velocityThreshold);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.wear.compose.material.SwipeableState<T> rememberSwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.compose.ui.Modifier swipeable(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeableState<T> state, java.util.Map<java.lang.Float,? extends T> anchors, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends androidx.wear.compose.material.ThresholdConfig> thresholds, optional androidx.wear.compose.material.ResistanceConfig? resistance, optional float velocityThreshold);
   }
 
-  @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public class SwipeableState<T> {
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public class SwipeableState<T> {
     ctor public SwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? animateTo(T targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> anim, optional kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? animateTo(T targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> anim, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     method public final T getCurrentValue();
     method public final float getDirection();
     method public final androidx.compose.runtime.State<java.lang.Float> getOffset();
@@ -708,15 +704,15 @@
     method public final androidx.wear.compose.material.SwipeProgress<T> getProgress();
     method public final T getTargetValue();
     method public final boolean isAnimationRunning();
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? performFling(float velocity, kotlin.coroutines.Continuation<? super kotlin.Unit>);
-    method @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? snapTo(T targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? performFling(float velocity, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? snapTo(T targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
     property public final T currentValue;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final float direction;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final float direction;
     property public final boolean isAnimationRunning;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> offset;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> overflow;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.wear.compose.material.SwipeProgress<T> progress;
-    property @androidx.wear.compose.material.ExperimentalWearMaterialApi public final T targetValue;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> offset;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> overflow;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.wear.compose.material.SwipeProgress<T> progress;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final T targetValue;
     field public static final androidx.wear.compose.material.SwipeableState.Companion Companion;
   }
 
@@ -744,7 +740,7 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
   }
 
-  @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public interface ThresholdConfig {
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public interface ThresholdConfig {
     method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
   }
 
diff --git a/wear/compose/compose-material/api/restricted_1.4.0-beta02.txt b/wear/compose/compose-material/api/restricted_1.4.0-beta02.txt
new file mode 100644
index 0000000..8ff9ff1
--- /dev/null
+++ b/wear/compose/compose-material/api/restricted_1.4.0-beta02.txt
@@ -0,0 +1,1028 @@
+// Signature format: 4.0
+package androidx.wear.compose.material {
+
+  @Deprecated @androidx.compose.runtime.Immutable public final class AutoCenteringParams {
+    ctor @Deprecated public AutoCenteringParams(optional int itemIndex, optional int itemOffset);
+  }
+
+  @androidx.compose.runtime.Stable public interface ButtonBorder {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
+  }
+
+  @androidx.compose.runtime.Stable public interface ButtonColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+  }
+
+  public final class ButtonDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonBorder buttonBorder(optional androidx.compose.foundation.BorderStroke? borderStroke, optional androidx.compose.foundation.BorderStroke? disabledBorderStroke);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors buttonColors(optional long backgroundColor, optional long contentColor, optional long disabledBackgroundColor, optional long disabledContentColor);
+    method public float getCompactButtonBackgroundPadding();
+    method public float getDefaultButtonSize();
+    method public float getDefaultIconSize();
+    method public float getExtraSmallButtonSize();
+    method public float getLargeButtonSize();
+    method public float getLargeIconSize();
+    method public float getSmallButtonSize();
+    method public float getSmallIconSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors iconButtonColors(optional long contentColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonBorder outlinedButtonBorder(optional long borderColor, optional long disabledBorderColor, optional float borderWidth);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors outlinedButtonColors(optional long contentColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors primaryButtonColors(optional long backgroundColor, optional long contentColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ButtonColors secondaryButtonColors(optional long backgroundColor, optional long contentColor);
+    property public final float CompactButtonBackgroundPadding;
+    property public final float DefaultButtonSize;
+    property public final float DefaultIconSize;
+    property public final float ExtraSmallButtonSize;
+    property public final float LargeButtonSize;
+    property public final float LargeIconSize;
+    property public final float SmallButtonSize;
+    property public final float SmallIconSize;
+    field public static final androidx.wear.compose.material.ButtonDefaults INSTANCE;
+  }
+
+  public final class ButtonKt {
+    method @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void CompactButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional float backgroundPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void CompactButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional float backgroundPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void OutlinedCompactButton(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ButtonColors colors, optional float backgroundPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ButtonBorder border, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  public final class CardDefaults {
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter cardBackgroundPainter(optional long startBackgroundColor, optional long endBackgroundColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    method public float getAppImageSize();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter imageWithScrimBackgroundPainter(androidx.compose.ui.graphics.painter.Painter backgroundImagePainter, optional androidx.compose.ui.graphics.Brush backgroundImageScrimBrush);
+    property public final float AppImageSize;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    field public static final androidx.wear.compose.material.CardDefaults INSTANCE;
+  }
+
+  public final class CardKt {
+    method @androidx.compose.runtime.Composable public static void AppCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> appName, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> time, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? appImage, optional androidx.compose.ui.graphics.painter.Painter backgroundPainter, optional long contentColor, optional long appColor, optional long timeColor, optional long titleColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Card(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.painter.Painter backgroundPainter, optional long contentColor, optional boolean enabled, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.semantics.Role? role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void TitleCard(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? time, optional androidx.compose.ui.graphics.painter.Painter backgroundPainter, optional long contentColor, optional long titleColor, optional long timeColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+  }
+
+  @androidx.compose.runtime.Stable public interface CheckboxColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> boxColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> checkmarkColor(boolean enabled, boolean checked);
+  }
+
+  public final class CheckboxDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.CheckboxColors colors(optional long checkedBoxColor, optional long checkedCheckmarkColor, optional long uncheckedBoxColor, optional long uncheckedCheckmarkColor);
+    field public static final androidx.wear.compose.material.CheckboxDefaults INSTANCE;
+  }
+
+  @androidx.compose.runtime.Stable public interface ChipBorder {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.foundation.BorderStroke?> borderStroke(boolean enabled);
+  }
+
+  @androidx.compose.runtime.Stable public interface ChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.painter.Painter> background(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> iconColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled);
+  }
+
+  public final class ChipDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors childChipColors(optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipBorder chipBorder(optional androidx.compose.foundation.BorderStroke? borderStroke, optional androidx.compose.foundation.BorderStroke? disabledBorderStroke);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public androidx.wear.compose.material.ChipColors chipColors(androidx.compose.ui.graphics.painter.Painter backgroundPainter, long contentColor, long secondaryContentColor, long iconColor, androidx.compose.ui.graphics.painter.Painter disabledBackgroundPainter, long disabledContentColor, long disabledSecondaryContentColor, long disabledIconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors chipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor, optional long disabledBackgroundColor, optional long disabledContentColor, optional long disabledSecondaryContentColor, optional long disabledIconColor);
+    method public float getChipHorizontalPadding();
+    method public float getChipVerticalPadding();
+    method public androidx.compose.foundation.layout.PaddingValues getCompactChipContentPadding();
+    method public float getCompactChipHeight();
+    method public float getCompactChipHorizontalPadding();
+    method public androidx.compose.foundation.layout.PaddingValues getCompactChipTapTargetPadding();
+    method public float getCompactChipVerticalPadding();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public float getHeight();
+    method public float getIconSize();
+    method public float getLargeIconSize();
+    method public float getSmallIconSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors gradientBackgroundChipColors(optional long startBackgroundColor, optional long endBackgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors imageBackgroundChipColors(androidx.compose.ui.graphics.painter.Painter backgroundImagePainter, optional androidx.compose.ui.graphics.Brush backgroundImageScrimBrush, optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipBorder outlinedChipBorder(optional long borderColor, optional long disabledBorderColor, optional float borderWidth);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors outlinedChipColors(optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors primaryChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors secondaryChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long iconColor);
+    property public final float ChipHorizontalPadding;
+    property public final float ChipVerticalPadding;
+    property public final androidx.compose.foundation.layout.PaddingValues CompactChipContentPadding;
+    property public final float CompactChipHeight;
+    property public final float CompactChipHorizontalPadding;
+    property public final androidx.compose.foundation.layout.PaddingValues CompactChipTapTargetPadding;
+    property public final float CompactChipVerticalPadding;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final float Height;
+    property public final float IconSize;
+    property public final float LargeIconSize;
+    property public final float SmallIconSize;
+    field public static final androidx.wear.compose.material.ChipDefaults INSTANCE;
+  }
+
+  public final class ChipKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.wear.compose.material.ChipColors colors, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.semantics.Role? role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.wear.compose.material.ChipColors colors, androidx.wear.compose.material.ChipBorder border, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.semantics.Role? role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method @androidx.compose.runtime.Composable public static void Chip(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+    method @Deprecated @androidx.compose.runtime.Composable public static void CompactChip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? label, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method @androidx.compose.runtime.Composable public static void CompactChip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? label, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+    method @androidx.compose.runtime.Composable public static void OutlinedChip(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+    method @androidx.compose.runtime.Composable public static void OutlinedCompactChip(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? label, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional androidx.wear.compose.material.ChipBorder border);
+  }
+
+  @androidx.compose.runtime.Immutable @androidx.compose.runtime.Stable public final class Colors {
+    ctor public Colors(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onSurfaceVariant, optional long onError);
+    method public androidx.wear.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onSurfaceVariant, optional long onError);
+    method public long getBackground();
+    method public long getError();
+    method public long getOnBackground();
+    method public long getOnError();
+    method public long getOnPrimary();
+    method public long getOnSecondary();
+    method public long getOnSurface();
+    method public long getOnSurfaceVariant();
+    method public long getPrimary();
+    method public long getPrimaryVariant();
+    method public long getSecondary();
+    method public long getSecondaryVariant();
+    method public long getSurface();
+    property public final long background;
+    property public final long error;
+    property public final long onBackground;
+    property public final long onError;
+    property public final long onPrimary;
+    property public final long onSecondary;
+    property public final long onSurface;
+    property public final long onSurfaceVariant;
+    property public final long primary;
+    property public final long primaryVariant;
+    property public final long secondary;
+    property public final long secondaryVariant;
+    property public final long surface;
+  }
+
+  public final class ColorsKt {
+    method public static long contentColorFor(androidx.wear.compose.material.Colors, long backgroundColor);
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public static long contentColorFor(long backgroundColor);
+  }
+
+  public final class ContentAlpha {
+    method @androidx.compose.runtime.Composable public float getDisabled();
+    method @androidx.compose.runtime.Composable public float getHigh();
+    method @androidx.compose.runtime.Composable public float getMedium();
+    property @androidx.compose.runtime.Composable public final float disabled;
+    property @androidx.compose.runtime.Composable public final float high;
+    property @androidx.compose.runtime.Composable public final float medium;
+    field public static final androidx.wear.compose.material.ContentAlpha INSTANCE;
+  }
+
+  public final class ContentAlphaKt {
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Float> getLocalContentAlpha();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Float> LocalContentAlpha;
+  }
+
+  public final class ContentColorKt {
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalContentColor();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
+  }
+
+  public final class CurvedTextKt {
+    method public static void curvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional long background, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontSynthesis? fontSynthesis, optional androidx.wear.compose.foundation.CurvedTextStyle? style, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
+    method @Deprecated public static void curvedText(androidx.wear.compose.foundation.CurvedScope, String text, optional androidx.wear.compose.foundation.CurvedModifier modifier, optional long background, optional long color, optional long fontSize, optional androidx.wear.compose.foundation.CurvedTextStyle? style, optional androidx.wear.compose.foundation.CurvedDirection.Angular? angularDirection, optional int overflow);
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(message="This Wear Material API is experimental and is likely to change or to be removed in" + " the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWearMaterialApi {
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FixedThreshold implements androidx.wear.compose.material.ThresholdConfig {
+    ctor public FixedThreshold(float offset);
+    method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
+    method public androidx.wear.compose.material.FixedThreshold copy-0680j_4(float offset);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class FractionalThreshold implements androidx.wear.compose.material.ThresholdConfig {
+    ctor public FractionalThreshold(@FloatRange(from=0.0, to=1.0) float fraction);
+    method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
+    method public androidx.wear.compose.material.FractionalThreshold copy(@FloatRange(from=0.0, to=1.0) float fraction);
+  }
+
+  public final class HorizontalPageIndicatorKt {
+    method @androidx.compose.runtime.Composable public static void HorizontalPageIndicator(androidx.wear.compose.material.PageIndicatorState pageIndicatorState, optional androidx.compose.ui.Modifier modifier, optional int indicatorStyle, optional long selectedColor, optional long unselectedColor, optional float indicatorSize, optional float spacing, optional androidx.compose.ui.graphics.Shape indicatorShape);
+  }
+
+  public final class IconKt {
+    method @androidx.compose.runtime.Composable public static void Icon(androidx.compose.ui.graphics.ImageBitmap bitmap, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional long tint);
+    method @androidx.compose.runtime.Composable public static void Icon(androidx.compose.ui.graphics.painter.Painter painter, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional long tint);
+    method @androidx.compose.runtime.Composable public static void Icon(androidx.compose.ui.graphics.vector.ImageVector imageVector, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional long tint);
+  }
+
+  @androidx.compose.runtime.Stable public interface InlineSliderColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> barColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> spacerColor(boolean enabled);
+  }
+
+  public final class InlineSliderDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.InlineSliderColors colors(optional long backgroundColor, optional long spacerColor, optional long selectedBarColor, optional long unselectedBarColor, optional long disabledBackgroundColor, optional long disabledSpacerColor, optional long disabledSelectedBarColor, optional long disabledUnselectedBarColor);
+    method public androidx.compose.ui.graphics.vector.ImageVector getDecrease();
+    method public androidx.compose.ui.graphics.vector.ImageVector getIncrease();
+    property public final androidx.compose.ui.graphics.vector.ImageVector Decrease;
+    property public final androidx.compose.ui.graphics.vector.ImageVector Increase;
+    field public static final androidx.wear.compose.material.InlineSliderDefaults INSTANCE;
+  }
+
+  public final class ListHeaderKt {
+    method @androidx.compose.runtime.Composable public static void ListHeader(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+  }
+
+  public final class MaterialTheme {
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.wear.compose.material.Colors getColors();
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.wear.compose.material.Shapes getShapes();
+    method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.wear.compose.material.Typography getTypography();
+    property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public final androidx.wear.compose.material.Colors colors;
+    property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public final androidx.wear.compose.material.Shapes shapes;
+    property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public final androidx.wear.compose.material.Typography typography;
+    field public static final androidx.wear.compose.material.MaterialTheme INSTANCE;
+  }
+
+  public final class MaterialThemeKt {
+    method @androidx.compose.runtime.Composable public static void MaterialTheme(optional androidx.wear.compose.material.Colors colors, optional androidx.wear.compose.material.Typography typography, optional androidx.wear.compose.material.Shapes shapes, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+  public final class PageIndicatorDefaults {
+    method @androidx.compose.runtime.Composable public int style();
+    field public static final androidx.wear.compose.material.PageIndicatorDefaults INSTANCE;
+  }
+
+  public interface PageIndicatorState {
+    method public int getPageCount();
+    method public float getPageOffset();
+    method public int getSelectedPage();
+    property public abstract int pageCount;
+    property public abstract float pageOffset;
+    property public abstract int selectedPage;
+  }
+
+  @kotlin.jvm.JvmInline public final value class PageIndicatorStyle {
+    field public static final androidx.wear.compose.material.PageIndicatorStyle.Companion Companion;
+  }
+
+  public static final class PageIndicatorStyle.Companion {
+    method public int getCurved();
+    method public int getLinear();
+    property public final int Curved;
+    property public final int Linear;
+  }
+
+  public final class PickerDefaults {
+    method public androidx.wear.compose.foundation.lazy.ScalingParams defaultScalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    method @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior flingBehavior(androidx.wear.compose.material.PickerState state, optional androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> decay);
+    method public float getDefaultGradientRatio();
+    method @Deprecated public androidx.wear.compose.material.ScalingParams scalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    property public final float DefaultGradientRatio;
+    field public static final androidx.wear.compose.material.PickerDefaults INSTANCE;
+  }
+
+  public final class PickerGroupItem {
+    ctor public PickerGroupItem(androidx.wear.compose.material.PickerState pickerState, optional androidx.compose.ui.Modifier modifier, optional String? contentDescription, optional androidx.compose.ui.focus.FocusRequester? focusRequester, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> option);
+    method public String? getContentDescription();
+    method public androidx.compose.ui.focus.FocusRequester? getFocusRequester();
+    method public androidx.compose.ui.Modifier getModifier();
+    method public kotlin.jvm.functions.Function0<kotlin.Unit> getOnSelected();
+    method public kotlin.jvm.functions.Function3<androidx.wear.compose.material.PickerScope,java.lang.Integer,java.lang.Boolean,kotlin.Unit> getOption();
+    method public androidx.wear.compose.material.PickerState getPickerState();
+    method public kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? getReadOnlyLabel();
+    property public final String? contentDescription;
+    property public final androidx.compose.ui.focus.FocusRequester? focusRequester;
+    property public final androidx.compose.ui.Modifier modifier;
+    property public final kotlin.jvm.functions.Function0<kotlin.Unit> onSelected;
+    property public final kotlin.jvm.functions.Function3<androidx.wear.compose.material.PickerScope,java.lang.Integer,java.lang.Boolean,kotlin.Unit> option;
+    property public final androidx.wear.compose.material.PickerState pickerState;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel;
+  }
+
+  public final class PickerGroupKt {
+    method @androidx.compose.runtime.Composable public static void PickerGroup(androidx.wear.compose.material.PickerGroupItem[] pickers, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.PickerGroupState pickerGroupState, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onSelected, optional boolean autoCenter, optional boolean propagateMinConstraints, optional androidx.wear.compose.material.TouchExplorationStateProvider touchExplorationStateProvider, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit>? separator);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.material.PickerGroupState rememberPickerGroupState(optional int initiallySelectedIndex);
+  }
+
+  public final class PickerGroupState {
+    ctor public PickerGroupState(optional int initiallySelectedIndex);
+    method public int getSelectedIndex();
+    method public void setSelectedIndex(int);
+    property public final int selectedIndex;
+    field public static final androidx.wear.compose.material.PickerGroupState.Companion Companion;
+  }
+
+  public static final class PickerGroupState.Companion {
+    method public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerGroupState,java.lang.Object> getSaver();
+    property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerGroupState,java.lang.Object> Saver;
+  }
+
+  public final class PickerKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional androidx.wear.compose.material.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior? rotaryScrollableBehavior, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.foundation.lazy.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.material.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Picker(androidx.wear.compose.material.PickerState state, String? contentDescription, optional androidx.compose.ui.Modifier modifier, optional boolean readOnly, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? readOnlyLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, optional androidx.wear.compose.material.ScalingParams scalingParams, optional float separation, optional @FloatRange(from=0.0, to=0.5) float gradientRatio, optional long gradientColor, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.PickerScope,? super java.lang.Integer,kotlin.Unit> option);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.material.PickerState rememberPickerState(int initialNumberOfOptions, optional int initiallySelectedOption, optional boolean repeatItems);
+  }
+
+  public interface PickerScope {
+    method public int getSelectedOption();
+    property public abstract int selectedOption;
+  }
+
+  @androidx.compose.runtime.Stable public final class PickerState implements androidx.compose.foundation.gestures.ScrollableState {
+    ctor public PickerState(int initialNumberOfOptions, optional int initiallySelectedOption, optional boolean repeatItems);
+    method public suspend Object? animateScrollToOption(int index, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public float dispatchRawDelta(float delta);
+    method public int getNumberOfOptions();
+    method public boolean getRepeatItems();
+    method public int getSelectedOption();
+    method public boolean isScrollInProgress();
+    method public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public suspend Object? scrollToOption(int index, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public void setNumberOfOptions(int);
+    property public boolean canScrollBackward;
+    property public boolean canScrollForward;
+    property public boolean isScrollInProgress;
+    property public final int numberOfOptions;
+    property public final boolean repeatItems;
+    property public final int selectedOption;
+    field public static final androidx.wear.compose.material.PickerState.Companion Companion;
+  }
+
+  public static final class PickerState.Companion {
+    method public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> getSaver();
+    property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderDefaults {
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter painterWithPlaceholderOverlayBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, androidx.compose.ui.graphics.painter.Painter painter, optional long color);
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.painter.Painter placeholderBackgroundBrush(androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors placeholderChipColors(androidx.wear.compose.material.ChipColors originalChipColors, androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ChipColors placeholderChipColors(androidx.wear.compose.material.PlaceholderState placeholderState, optional long color);
+    field public static final androidx.wear.compose.material.PlaceholderDefaults INSTANCE;
+  }
+
+  public final class PlaceholderKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholder(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.ui.Modifier placeholderShimmer(androidx.compose.ui.Modifier, androidx.wear.compose.material.PlaceholderState placeholderState, optional androidx.compose.ui.graphics.Shape shape, optional long color);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.wear.compose.material.PlaceholderState rememberPlaceholderState(kotlin.jvm.functions.Function0<java.lang.Boolean> isContentReady);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class PlaceholderState {
+    method public float getPlaceholderProgression();
+    method public boolean isShowContent();
+    method public boolean isWipeOff();
+    method public suspend Object? startPlaceholderAnimation(kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final boolean isShowContent;
+    property public final boolean isWipeOff;
+    property public final float placeholderProgression;
+  }
+
+  @kotlin.jvm.JvmInline public final value class PositionIndicatorAlignment {
+    field public static final androidx.wear.compose.material.PositionIndicatorAlignment.Companion Companion;
+  }
+
+  public static final class PositionIndicatorAlignment.Companion {
+    method public int getEnd();
+    method public int getLeft();
+    method public int getOppositeRsb();
+    method public int getRight();
+    property public final int End;
+    property public final int Left;
+    property public final int OppositeRsb;
+    property public final int Right;
+  }
+
+  public final class PositionIndicatorDefaults {
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getPositionAnimationSpec();
+    method public androidx.compose.animation.core.AnimationSpec<java.lang.Float> getVisibilityAnimationSpec();
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec;
+    property public final androidx.compose.animation.core.AnimationSpec<java.lang.Float> visibilityAnimationSpec;
+    field public static final androidx.wear.compose.material.PositionIndicatorDefaults INSTANCE;
+  }
+
+  public final class PositionIndicatorKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.lazy.LazyListState lazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.lazy.LazyListState lazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.foundation.lazy.ScalingLazyListState scalingLazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.foundation.lazy.ScalingLazyListState scalingLazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.material.PositionIndicatorState state, float indicatorHeight, float indicatorWidth, float paddingHorizontal, optional androidx.compose.ui.Modifier modifier, optional long background, optional long color, optional boolean reverseDirection, optional int position);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.material.PositionIndicatorState state, float indicatorHeight, float indicatorWidth, float paddingHorizontal, optional androidx.compose.ui.Modifier modifier, optional long background, optional long color, optional boolean reverseDirection, optional int position, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(androidx.wear.compose.material.ScalingLazyListState scalingLazyListState, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection);
+    method @Deprecated @androidx.compose.runtime.Composable public static void PositionIndicator(kotlin.jvm.functions.Function0<java.lang.Float> value, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> range, optional long color, optional boolean reverseDirection, optional int position);
+    method @androidx.compose.runtime.Composable public static void PositionIndicator(kotlin.jvm.functions.Function0<java.lang.Float> value, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> range, optional long color, optional boolean reverseDirection, optional int position, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeInAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> fadeOutAnimationSpec, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
+  }
+
+  @androidx.compose.runtime.Stable public interface PositionIndicatorState {
+    method @FloatRange(from=0.0, to=1.0) public float getPositionFraction();
+    method @FloatRange(from=0.0, to=1.0) public float sizeFraction(@FloatRange(from=0.0) float scrollableContainerSizePx);
+    method public int visibility(@FloatRange(from=0.0) float scrollableContainerSizePx);
+    property @FloatRange(from=0.0, to=1.0) public abstract float positionFraction;
+  }
+
+  @kotlin.jvm.JvmInline public final value class PositionIndicatorVisibility {
+    field public static final androidx.wear.compose.material.PositionIndicatorVisibility.Companion Companion;
+  }
+
+  public static final class PositionIndicatorVisibility.Companion {
+    method public int getAutoHide();
+    method public int getHide();
+    method public int getShow();
+    property public final int AutoHide;
+    property public final int Hide;
+    property public final int Show;
+  }
+
+  public final class ProgressIndicatorDefaults {
+    method public float getFullScreenStrokeWidth();
+    method public float getIndeterminateStrokeWidth();
+    method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getProgressAnimationSpec();
+    method public float getStrokeWidth();
+    property public final float FullScreenStrokeWidth;
+    property public final float IndeterminateStrokeWidth;
+    property public final androidx.compose.animation.core.SpringSpec<java.lang.Float> ProgressAnimationSpec;
+    property public final float StrokeWidth;
+    field public static final androidx.wear.compose.material.ProgressIndicatorDefaults INSTANCE;
+  }
+
+  public final class ProgressIndicatorKt {
+    method @androidx.compose.runtime.Composable public static void CircularProgressIndicator(optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional long indicatorColor, optional long trackColor, optional float strokeWidth);
+    method @androidx.compose.runtime.Composable public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional float endAngle, optional long indicatorColor, optional long trackColor, optional float strokeWidth);
+  }
+
+  @androidx.compose.runtime.Stable public interface RadioButtonColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> dotColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> ringColor(boolean enabled, boolean selected);
+  }
+
+  public final class RadioButtonDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.RadioButtonColors colors(optional long selectedRingColor, optional long selectedDotColor, optional long unselectedRingColor, optional long unselectedDotColor);
+    field public static final androidx.wear.compose.material.RadioButtonDefaults INSTANCE;
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class ResistanceConfig {
+    ctor public ResistanceConfig(@FloatRange(from=0.0, fromInclusive=false) float basis, optional @FloatRange(from=0.0) float factorAtMin, optional @FloatRange(from=0.0) float factorAtMax);
+    method public float computeResistance(float overflow);
+    method public float getBasis();
+    method public float getFactorAtMax();
+    method public float getFactorAtMin();
+    property public final float basis;
+    property public final float factorAtMax;
+    property public final float factorAtMin;
+  }
+
+  public final class RippleKt {
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Boolean> getLocalUseFallbackRippleImplementation();
+    method @androidx.compose.runtime.Stable public static androidx.compose.foundation.IndicationNodeFactory ripple(androidx.compose.ui.graphics.ColorProducer color, optional boolean bounded, optional float radius);
+    method @androidx.compose.runtime.Stable public static androidx.compose.foundation.IndicationNodeFactory ripple(optional boolean bounded, optional float radius, optional long color);
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static final androidx.compose.runtime.ProvidableCompositionLocal<java.lang.Boolean> LocalUseFallbackRippleImplementation;
+  }
+
+  public final class ScaffoldKt {
+    method @androidx.compose.runtime.Composable public static void Scaffold(optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? vignette, optional kotlin.jvm.functions.Function0<kotlin.Unit>? positionIndicator, optional kotlin.jvm.functions.Function0<kotlin.Unit>? pageIndicator, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+  @Deprecated public final class ScalingLazyColumnDefaults {
+    method @Deprecated public androidx.wear.compose.material.ScalingParams scalingParams(optional float edgeScale, optional float edgeAlpha, optional float minElementHeight, optional float maxElementHeight, optional float minTransitionArea, optional float maxTransitionArea, optional androidx.compose.animation.core.Easing scaleInterpolator, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.unit.Constraints,java.lang.Integer> viewportVerticalOffsetResolver);
+    method @Deprecated @androidx.compose.runtime.Composable public androidx.compose.foundation.gestures.FlingBehavior snapFlingBehavior(androidx.wear.compose.material.ScalingLazyListState state, optional float snapOffset, optional androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> decay);
+    field @Deprecated public static final androidx.wear.compose.material.ScalingLazyColumnDefaults INSTANCE;
+  }
+
+  public final class ScalingLazyColumnKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void ScalingLazyColumn(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.ScalingLazyListState state, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional boolean reverseLayout, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.ui.Alignment.Horizontal horizontalAlignment, optional androidx.compose.foundation.gestures.FlingBehavior flingBehavior, optional boolean userScrollEnabled, optional androidx.wear.compose.material.ScalingParams scalingParams, optional int anchorType, optional androidx.wear.compose.material.AutoCenteringParams? autoCentering, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListScope,kotlin.Unit> content);
+    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void items(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function1<? super T,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, java.util.List<? extends T> items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+    method @Deprecated public static inline <T> void itemsIndexed(androidx.wear.compose.material.ScalingLazyListScope, T[] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
+  }
+
+  @Deprecated @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
+    field @Deprecated public static final androidx.wear.compose.material.ScalingLazyListAnchorType.Companion Companion;
+  }
+
+  @Deprecated public static final class ScalingLazyListAnchorType.Companion {
+    method @Deprecated public int getItemCenter();
+    method @Deprecated public int getItemStart();
+    property @Deprecated public final int ItemCenter;
+    property @Deprecated public final int ItemStart;
+  }
+
+  @Deprecated public sealed interface ScalingLazyListItemInfo {
+    method @Deprecated public float getAlpha();
+    method @Deprecated public int getIndex();
+    method @Deprecated public Object getKey();
+    method @Deprecated public int getOffset();
+    method @Deprecated public float getScale();
+    method @Deprecated public int getSize();
+    method @Deprecated public int getUnadjustedOffset();
+    method @Deprecated public int getUnadjustedSize();
+    property @Deprecated public abstract float alpha;
+    property @Deprecated public abstract int index;
+    property @Deprecated public abstract Object key;
+    property @Deprecated public abstract int offset;
+    property @Deprecated public abstract float scale;
+    property @Deprecated public abstract int size;
+    property @Deprecated public abstract int unadjustedOffset;
+    property @Deprecated public abstract int unadjustedSize;
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable @androidx.wear.compose.material.ScalingLazyScopeMarker public sealed interface ScalingLazyListItemScope {
+    method @Deprecated public androidx.compose.ui.Modifier fillParentMaxHeight(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method @Deprecated public androidx.compose.ui.Modifier fillParentMaxSize(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+    method @Deprecated public androidx.compose.ui.Modifier fillParentMaxWidth(androidx.compose.ui.Modifier, optional @FloatRange(from=0.0, to=1.0) float fraction);
+  }
+
+  @Deprecated public sealed interface ScalingLazyListLayoutInfo {
+    method @Deprecated public int getAfterAutoCenteringPadding();
+    method @Deprecated public int getAfterContentPadding();
+    method @Deprecated public int getBeforeAutoCenteringPadding();
+    method @Deprecated public int getBeforeContentPadding();
+    method @Deprecated public androidx.compose.foundation.gestures.Orientation getOrientation();
+    method @Deprecated public boolean getReverseLayout();
+    method @Deprecated public int getTotalItemsCount();
+    method @Deprecated public int getViewportEndOffset();
+    method @Deprecated public long getViewportSize();
+    method @Deprecated public int getViewportStartOffset();
+    method @Deprecated public java.util.List<androidx.wear.compose.material.ScalingLazyListItemInfo> getVisibleItemsInfo();
+    property @Deprecated public abstract int afterAutoCenteringPadding;
+    property @Deprecated public abstract int afterContentPadding;
+    property @Deprecated public abstract int beforeAutoCenteringPadding;
+    property @Deprecated public abstract int beforeContentPadding;
+    property @Deprecated public abstract androidx.compose.foundation.gestures.Orientation orientation;
+    property @Deprecated public abstract boolean reverseLayout;
+    property @Deprecated public abstract int totalItemsCount;
+    property @Deprecated public abstract int viewportEndOffset;
+    property @Deprecated public abstract long viewportSize;
+    property @Deprecated public abstract int viewportStartOffset;
+    property @Deprecated public abstract java.util.List<androidx.wear.compose.material.ScalingLazyListItemInfo> visibleItemsInfo;
+  }
+
+  @Deprecated @androidx.wear.compose.material.ScalingLazyScopeMarker public sealed interface ScalingLazyListScope {
+    method @Deprecated public void item(optional Object? key, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListItemScope,kotlin.Unit> content);
+    method @Deprecated public void items(int count, optional kotlin.jvm.functions.Function1<? super java.lang.Integer,?>? key, kotlin.jvm.functions.Function2<? super androidx.wear.compose.material.ScalingLazyListItemScope,? super java.lang.Integer,kotlin.Unit> itemContent);
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public final class ScalingLazyListState implements androidx.compose.foundation.gestures.ScrollableState {
+    ctor @Deprecated public ScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+    method @Deprecated public suspend Object? animateScrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public float dispatchRawDelta(float delta);
+    method @Deprecated public int getCenterItemIndex();
+    method @Deprecated public int getCenterItemScrollOffset();
+    method @Deprecated public androidx.wear.compose.material.ScalingLazyListLayoutInfo getLayoutInfo();
+    method @Deprecated public boolean isScrollInProgress();
+    method @Deprecated public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,? extends java.lang.Object?> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @Deprecated public suspend Object? scrollToItem(int index, optional int scrollOffset, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property @Deprecated public boolean canScrollBackward;
+    property @Deprecated public boolean canScrollForward;
+    property @Deprecated public final int centerItemIndex;
+    property @Deprecated public final int centerItemScrollOffset;
+    property @Deprecated public boolean isScrollInProgress;
+    property @Deprecated public final androidx.wear.compose.material.ScalingLazyListLayoutInfo layoutInfo;
+    field @Deprecated public static final androidx.wear.compose.material.ScalingLazyListState.Companion Companion;
+  }
+
+  @Deprecated public static final class ScalingLazyListState.Companion {
+    method @Deprecated public androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.ScalingLazyListState,java.lang.Object> getSaver();
+    property @Deprecated public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.ScalingLazyListState,java.lang.Object> Saver;
+  }
+
+  public final class ScalingLazyListStateKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.wear.compose.material.ScalingLazyListState rememberScalingLazyListState(optional int initialCenterItemIndex, optional int initialCenterItemScrollOffset);
+  }
+
+  @Deprecated @kotlin.DslMarker public @interface ScalingLazyScopeMarker {
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public interface ScalingParams {
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getEdgeAlpha();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getEdgeScale();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMaxElementHeight();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMaxTransitionArea();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMinElementHeight();
+    method @Deprecated @FloatRange(from=0.0, to=1.0) public float getMinTransitionArea();
+    method @Deprecated public androidx.compose.animation.core.Easing getScaleInterpolator();
+    method @Deprecated public int resolveViewportVerticalOffset(long viewportConstraints);
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float edgeAlpha;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float edgeScale;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float maxElementHeight;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float maxTransitionArea;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float minElementHeight;
+    property @Deprecated @FloatRange(from=0.0, to=1.0) public abstract float minTransitionArea;
+    property @Deprecated public abstract androidx.compose.animation.core.Easing scaleInterpolator;
+  }
+
+  public final class ScrollAwayKt {
+    method public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.compose.foundation.lazy.LazyListState scrollState, optional int itemIndex, optional float offset);
+    method public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.compose.foundation.ScrollState scrollState, optional float offset);
+    method public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional int itemIndex, optional float offset);
+    method @Deprecated public static androidx.compose.ui.Modifier scrollAway(androidx.compose.ui.Modifier, androidx.wear.compose.material.ScalingLazyListState scrollState, optional int itemIndex, optional float offset);
+  }
+
+  @androidx.compose.runtime.Stable public interface SelectableChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.painter.Painter> background(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> selectionControlColor(boolean enabled, boolean selected);
+  }
+
+  public final class SelectableChipDefaults {
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public float getHeight();
+    method public float getIconSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SelectableChipColors selectableChipColors(optional long selectedStartBackgroundColor, optional long selectedEndBackgroundColor, optional long selectedContentColor, optional long selectedSecondaryContentColor, optional long selectedSelectionControlColor, optional long unselectedStartBackgroundColor, optional long unselectedEndBackgroundColor, optional long unselectedContentColor, optional long unselectedSecondaryContentColor, optional long unselectedSelectionControlColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SplitSelectableChipColors splitSelectableChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long selectedSelectionControlColor, optional long unselectedSelectionControlColor, optional long splitBackgroundOverlayColor);
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final float Height;
+    property public final float IconSize;
+    field public static final androidx.wear.compose.material.SelectableChipDefaults INSTANCE;
+  }
+
+  public final class SelectableChipKt {
+    method @androidx.compose.runtime.Composable public static void SelectableChip(boolean selected, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? appIcon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.SelectableChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional kotlin.jvm.functions.Function0<kotlin.Unit> selectionControl);
+    method @androidx.compose.runtime.Composable public static void SplitSelectableChip(boolean selected, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onSelectionClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onContainerClick, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.SplitSelectableChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? selectionInteractionSource, optional androidx.compose.foundation.interaction.MutableInteractionSource? containerInteractionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> selectionControl);
+  }
+
+  @androidx.compose.runtime.Immutable public final class Shapes {
+    ctor public Shapes(optional androidx.compose.foundation.shape.CornerBasedShape small, optional androidx.compose.foundation.shape.CornerBasedShape medium, optional androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.wear.compose.material.Shapes copy(optional androidx.compose.foundation.shape.CornerBasedShape small, optional androidx.compose.foundation.shape.CornerBasedShape medium, optional androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
+    property public final androidx.compose.foundation.shape.CornerBasedShape large;
+    property public final androidx.compose.foundation.shape.CornerBasedShape medium;
+    property public final androidx.compose.foundation.shape.CornerBasedShape small;
+  }
+
+  public final class SliderKt {
+    method @androidx.compose.runtime.Composable public static void InlineSlider(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, int steps, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional boolean segmented, optional androidx.wear.compose.material.InlineSliderColors colors);
+    method @androidx.compose.runtime.Composable public static void InlineSlider(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean segmented, optional androidx.wear.compose.material.InlineSliderColors colors);
+  }
+
+  @androidx.compose.runtime.Stable public interface SplitSelectableChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> selectionControlColor(boolean enabled, boolean selected);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> splitBackgroundOverlay(boolean enabled, boolean selected);
+  }
+
+  @androidx.compose.runtime.Stable public interface SplitToggleChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> splitBackgroundOverlay(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> toggleControlColor(boolean enabled, boolean checked);
+  }
+
+  public final class StepperDefaults {
+    method public androidx.compose.ui.graphics.vector.ImageVector getDecrease();
+    method public androidx.compose.ui.graphics.vector.ImageVector getIncrease();
+    property public final androidx.compose.ui.graphics.vector.ImageVector Decrease;
+    property public final androidx.compose.ui.graphics.vector.ImageVector Increase;
+    field public static final androidx.wear.compose.material.StepperDefaults INSTANCE;
+  }
+
+  public final class StepperKt {
+    method @androidx.compose.runtime.Composable public static void Stepper(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, int steps, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional long backgroundColor, optional long contentColor, optional long iconColor, optional boolean enableRangeSemantics, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Stepper(float value, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onValueChange, int steps, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional long backgroundColor, optional long contentColor, optional long iconColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Stepper(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional long iconColor, optional boolean enableRangeSemantics, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Stepper(int value, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> onValueChange, kotlin.ranges.IntProgression valueProgression, kotlin.jvm.functions.Function0<kotlin.Unit> decreaseIcon, kotlin.jvm.functions.Function0<kotlin.Unit> increaseIcon, optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional long iconColor, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeProgress<T> {
+    ctor public SwipeProgress(T from, T to, @FloatRange(from=0.0, to=1.0) float fraction);
+    method public float getFraction();
+    method public T getFrom();
+    method public T getTo();
+    property public final float fraction;
+    property public final T from;
+    property public final T to;
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public final class SwipeToDismissBoxDefaults {
+    method @Deprecated public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
+    method @Deprecated public float getEdgeWidth();
+    property @Deprecated public final androidx.compose.animation.core.SpringSpec<java.lang.Float> AnimationSpec;
+    property @Deprecated public final float EdgeWidth;
+    field @Deprecated public static final androidx.wear.compose.material.SwipeToDismissBoxDefaults INSTANCE;
+  }
+
+  public final class SwipeToDismissBoxKt {
+    method @androidx.compose.runtime.Composable public static void SwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional androidx.compose.ui.Modifier modifier, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeToDismissBox(androidx.wear.compose.material.SwipeToDismissBoxState state, optional androidx.compose.ui.Modifier modifier, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void SwipeToDismissBox(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissed, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.SwipeToDismissBoxState state, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeToDismissBox(kotlin.jvm.functions.Function0<kotlin.Unit> onDismissed, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.SwipeToDismissBoxState state, optional long backgroundScrimColor, optional long contentScrimColor, optional Object backgroundKey, optional Object contentKey, optional boolean hasBackground, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.layout.BoxScope,? super java.lang.Boolean,kotlin.Unit> content);
+    method @Deprecated public static androidx.compose.ui.Modifier edgeSwipeToDismiss(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeToDismissBoxState swipeToDismissBoxState, optional float edgeWidth);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.wear.compose.material.SwipeToDismissBoxState rememberSwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+  }
+
+  @Deprecated @androidx.compose.runtime.Stable public final class SwipeToDismissBoxState {
+    ctor @Deprecated public SwipeToDismissBoxState(optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.SwipeToDismissValue,java.lang.Boolean> confirmStateChange);
+    method @Deprecated public androidx.wear.compose.material.SwipeToDismissValue getCurrentValue();
+    method @Deprecated public androidx.wear.compose.material.SwipeToDismissValue getTargetValue();
+    method @Deprecated public boolean isAnimationRunning();
+    method @Deprecated public suspend Object? snapTo(androidx.wear.compose.material.SwipeToDismissValue targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property @Deprecated public final androidx.wear.compose.material.SwipeToDismissValue currentValue;
+    property @Deprecated public final boolean isAnimationRunning;
+    property @Deprecated public final androidx.wear.compose.material.SwipeToDismissValue targetValue;
+  }
+
+  public enum SwipeToDismissKeys {
+    enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Background;
+    enum_constant public static final androidx.wear.compose.material.SwipeToDismissKeys Content;
+  }
+
+  @Deprecated public enum SwipeToDismissValue {
+    enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Default;
+    enum_constant @Deprecated public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeToRevealActionColors {
+    ctor public SwipeToRevealActionColors(long primaryActionBackgroundColor, long primaryActionContentColor, long secondaryActionBackgroundColor, long secondaryActionContentColor, long undoActionBackgroundColor, long undoActionContentColor);
+    method public long getPrimaryActionBackgroundColor();
+    method public long getPrimaryActionContentColor();
+    method public long getSecondaryActionBackgroundColor();
+    method public long getSecondaryActionContentColor();
+    method public long getUndoActionBackgroundColor();
+    method public long getUndoActionContentColor();
+    property public final long primaryActionBackgroundColor;
+    property public final long primaryActionContentColor;
+    property public final long secondaryActionBackgroundColor;
+    property public final long secondaryActionContentColor;
+    property public final long undoActionBackgroundColor;
+    property public final long undoActionContentColor;
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeToRevealDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SwipeToRevealActionColors actionColors(optional long primaryActionBackgroundColor, optional long primaryActionContentColor, optional long secondaryActionBackgroundColor, optional long secondaryActionContentColor, optional long undoActionBackgroundColor, optional long undoActionContentColor);
+    method public androidx.compose.foundation.shape.RoundedCornerShape getCardActionShape();
+    method public androidx.compose.ui.graphics.vector.ImageVector getDelete();
+    method public androidx.compose.ui.graphics.vector.ImageVector getMoreOptions();
+    property public final androidx.compose.foundation.shape.RoundedCornerShape CardActionShape;
+    property public final androidx.compose.ui.graphics.vector.ImageVector Delete;
+    property public final androidx.compose.ui.graphics.vector.ImageVector MoreOptions;
+    field public static final androidx.wear.compose.material.SwipeToRevealDefaults INSTANCE;
+  }
+
+  public final class SwipeToRevealKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealCard(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> primaryAction, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? secondaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoPrimaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoSecondaryAction, optional androidx.wear.compose.material.SwipeToRevealActionColors colors, optional androidx.compose.ui.graphics.Shape shape, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealChip(kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit> primaryAction, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onFullSwipe, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? secondaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoPrimaryAction, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.RevealScope,kotlin.Unit>? undoSecondaryAction, optional androidx.wear.compose.material.SwipeToRevealActionColors colors, optional androidx.compose.ui.graphics.Shape shape, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealPrimaryAction(androidx.wear.compose.foundation.RevealScope, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> label, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealSecondaryAction(androidx.wear.compose.foundation.RevealScope, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static void SwipeToRevealUndoAction(androidx.wear.compose.foundation.RevealScope, androidx.wear.compose.foundation.RevealState revealState, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function0<kotlin.Unit>? icon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label);
+  }
+
+  @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final class SwipeableDefaults {
+    method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
+    method public float getVelocityThreshold();
+    method public androidx.wear.compose.material.ResistanceConfig? resistanceConfig(java.util.Set<java.lang.Float> anchors, optional float factorAtMin, optional float factorAtMax);
+    property public final androidx.compose.animation.core.SpringSpec<java.lang.Float> AnimationSpec;
+    property public final float VelocityThreshold;
+    field public static final androidx.wear.compose.material.SwipeableDefaults INSTANCE;
+    field public static final float StandardResistanceFactor = 10.0f;
+    field public static final float StiffResistanceFactor = 20.0f;
+  }
+
+  public final class SwipeableKt {
+    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.wear.compose.material.SwipeableState<T> rememberSwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public static <T> androidx.compose.ui.Modifier swipeable(androidx.compose.ui.Modifier, androidx.wear.compose.material.SwipeableState<T> state, java.util.Map<java.lang.Float,? extends T> anchors, androidx.compose.foundation.gestures.Orientation orientation, optional boolean enabled, optional boolean reverseDirection, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends androidx.wear.compose.material.ThresholdConfig> thresholds, optional androidx.wear.compose.material.ResistanceConfig? resistance, optional float velocityThreshold);
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public class SwipeableState<T> {
+    ctor public SwipeableState(T initialValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? animateTo(T targetValue, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> anim, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public final T getCurrentValue();
+    method public final float getDirection();
+    method public final androidx.compose.runtime.State<java.lang.Float> getOffset();
+    method public final androidx.compose.runtime.State<java.lang.Float> getOverflow();
+    method public final androidx.wear.compose.material.SwipeProgress<T> getProgress();
+    method public final T getTargetValue();
+    method public final boolean isAnimationRunning();
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? performFling(float velocity, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final suspend Object? snapTo(T targetValue, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    property public final T currentValue;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final float direction;
+    property public final boolean isAnimationRunning;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> offset;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.compose.runtime.State<java.lang.Float> overflow;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final androidx.wear.compose.material.SwipeProgress<T> progress;
+    property @SuppressCompatibility @androidx.wear.compose.material.ExperimentalWearMaterialApi public final T targetValue;
+    field public static final androidx.wear.compose.material.SwipeableState.Companion Companion;
+  }
+
+  public static final class SwipeableState.Companion {
+    method public <T> androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.SwipeableState<T>,T> Saver(androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, kotlin.jvm.functions.Function1<? super T,java.lang.Boolean> confirmStateChange);
+  }
+
+  @androidx.compose.runtime.Stable public interface SwitchColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
+  }
+
+  public final class SwitchDefaults {
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SwitchColors colors(optional long checkedThumbColor, optional long checkedTrackColor, optional long uncheckedThumbColor, optional long uncheckedTrackColor);
+    field public static final androidx.wear.compose.material.SwitchDefaults INSTANCE;
+  }
+
+  public final class TextKt {
+    method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Text(androidx.compose.ui.text.AnnotatedString text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional java.util.Map<java.lang.String,androidx.compose.foundation.text.InlineTextContent> inlineContent, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Text(androidx.compose.ui.text.AnnotatedString text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional java.util.Map<java.lang.String,androidx.compose.foundation.text.InlineTextContent> inlineContent, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> getLocalTextStyle();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
+  }
+
+  @SuppressCompatibility @androidx.compose.runtime.Stable @androidx.wear.compose.material.ExperimentalWearMaterialApi public interface ThresholdConfig {
+    method public float computeThreshold(androidx.compose.ui.unit.Density, float fromValue, float toValue);
+  }
+
+  public interface TimeSource {
+    method @androidx.compose.runtime.Composable public String getCurrentTime();
+    property @androidx.compose.runtime.Composable public abstract String currentTime;
+  }
+
+  public final class TimeTextDefaults {
+    method public void CurvedTextSeparator(androidx.wear.compose.foundation.CurvedScope, optional androidx.wear.compose.foundation.CurvedTextStyle? curvedTextStyle, optional androidx.wear.compose.foundation.ArcPaddingValues contentArcPadding);
+    method @androidx.compose.runtime.Composable public void TextSeparator(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.text.TextStyle textStyle, optional androidx.compose.foundation.layout.PaddingValues contentPadding);
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method @androidx.compose.runtime.Composable public String timeFormat();
+    method public androidx.wear.compose.material.TimeSource timeSource(String timeFormat);
+    method @androidx.compose.runtime.Composable public androidx.compose.ui.text.TextStyle timeTextStyle(optional long background, optional long color, optional long fontSize);
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    field public static final androidx.wear.compose.material.TimeTextDefaults INSTANCE;
+    field public static final String TimeFormat12Hours = "h:mm";
+    field public static final String TimeFormat24Hours = "HH:mm";
+  }
+
+  public final class TimeTextKt {
+    method @androidx.compose.runtime.Composable public static void TimeText(optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.TimeSource timeSource, optional androidx.compose.ui.text.TextStyle timeTextStyle, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit>? startLinearContent, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit>? startCurvedContent, optional kotlin.jvm.functions.Function0<kotlin.Unit>? endLinearContent, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit>? endCurvedContent, optional kotlin.jvm.functions.Function0<kotlin.Unit> textLinearSeparator, optional kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.CurvedScope,kotlin.Unit> textCurvedSeparator);
+  }
+
+  @androidx.compose.runtime.Stable public interface ToggleButtonColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled, boolean checked);
+  }
+
+  public final class ToggleButtonDefaults {
+    method public float getDefaultIconSize();
+    method public int getDefaultRole();
+    method public float getDefaultToggleButtonSize();
+    method public float getSmallIconSize();
+    method public float getSmallToggleButtonSize();
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ToggleButtonColors toggleButtonColors(optional long checkedBackgroundColor, optional long checkedContentColor, optional long disabledCheckedBackgroundColor, optional long disabledCheckedContentColor, optional long uncheckedBackgroundColor, optional long uncheckedContentColor, optional long disabledUncheckedBackgroundColor, optional long disabledUncheckedContentColor);
+    property public final float DefaultIconSize;
+    property public final int DefaultRole;
+    property public final float DefaultToggleButtonSize;
+    property public final float SmallIconSize;
+    property public final float SmallToggleButtonSize;
+    field public static final androidx.wear.compose.material.ToggleButtonDefaults INSTANCE;
+  }
+
+  public final class ToggleButtonKt {
+    method @androidx.compose.runtime.Composable public static void ToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional int role, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void ToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.ui.graphics.Shape shape, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void ToggleButton(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.wear.compose.material.ToggleButtonColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+  }
+
+  @androidx.compose.runtime.Stable public interface ToggleChipColors {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.painter.Painter> background(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> secondaryContentColor(boolean enabled, boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> toggleControlColor(boolean enabled, boolean checked);
+  }
+
+  public final class ToggleChipDefaults {
+    method public androidx.compose.ui.graphics.vector.ImageVector checkboxIcon(boolean checked);
+    method public androidx.compose.ui.graphics.vector.ImageVector getCheckboxOn();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public float getHeight();
+    method public float getIconSize();
+    method public androidx.compose.ui.graphics.vector.ImageVector getRadioOff();
+    method public androidx.compose.ui.graphics.vector.ImageVector getRadioOn();
+    method @androidx.compose.runtime.Composable public long getSwitchUncheckedIconColor();
+    method public androidx.compose.ui.graphics.vector.ImageVector radioIcon(boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.SplitToggleChipColors splitToggleChipColors(optional long backgroundColor, optional long contentColor, optional long secondaryContentColor, optional long checkedToggleControlColor, optional long uncheckedToggleControlColor, optional long splitBackgroundOverlayColor);
+    method public androidx.compose.ui.graphics.vector.ImageVector switchIcon(boolean checked);
+    method @androidx.compose.runtime.Composable public androidx.wear.compose.material.ToggleChipColors toggleChipColors(optional long checkedStartBackgroundColor, optional long checkedEndBackgroundColor, optional long checkedContentColor, optional long checkedSecondaryContentColor, optional long checkedToggleControlColor, optional long uncheckedStartBackgroundColor, optional long uncheckedEndBackgroundColor, optional long uncheckedContentColor, optional long uncheckedSecondaryContentColor, optional long uncheckedToggleControlColor, optional androidx.compose.ui.unit.LayoutDirection gradientDirection);
+    property public final androidx.compose.ui.graphics.vector.ImageVector CheckboxOn;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final float Height;
+    property public final float IconSize;
+    property public final androidx.compose.ui.graphics.vector.ImageVector RadioOff;
+    property public final androidx.compose.ui.graphics.vector.ImageVector RadioOn;
+    property @androidx.compose.runtime.Composable public final long SwitchUncheckedIconColor;
+    field public static final androidx.wear.compose.material.ToggleChipDefaults INSTANCE;
+  }
+
+  public final class ToggleChipKt {
+    method @androidx.compose.runtime.Composable public static void SplitToggleChip(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> toggleControl, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.SplitToggleChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? checkedInteractionSource, optional androidx.compose.foundation.interaction.MutableInteractionSource? clickInteractionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape);
+    method @androidx.compose.runtime.Composable public static void ToggleChip(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit> onCheckedChange, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> label, kotlin.jvm.functions.Function0<kotlin.Unit> toggleControl, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? appIcon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? secondaryLabel, optional androidx.wear.compose.material.ToggleChipColors colors, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.ui.graphics.Shape shape);
+  }
+
+  public final class ToggleControlKt {
+    method @androidx.compose.runtime.Composable public static void Checkbox(boolean checked, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.CheckboxColors colors, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void RadioButton(boolean selected, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.RadioButtonColors colors, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void Switch(boolean checked, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.SwitchColors colors, optional boolean enabled, optional kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+  }
+
+  public fun interface TouchExplorationStateProvider {
+    method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<java.lang.Boolean> touchExplorationState();
+  }
+
+  @androidx.compose.runtime.Immutable public final class Typography {
+    ctor public Typography(optional androidx.compose.ui.text.font.FontFamily defaultFontFamily, optional androidx.compose.ui.text.TextStyle display1, optional androidx.compose.ui.text.TextStyle display2, optional androidx.compose.ui.text.TextStyle display3, optional androidx.compose.ui.text.TextStyle title1, optional androidx.compose.ui.text.TextStyle title2, optional androidx.compose.ui.text.TextStyle title3, optional androidx.compose.ui.text.TextStyle body1, optional androidx.compose.ui.text.TextStyle body2, optional androidx.compose.ui.text.TextStyle button, optional androidx.compose.ui.text.TextStyle caption1, optional androidx.compose.ui.text.TextStyle caption2, optional androidx.compose.ui.text.TextStyle caption3);
+    method public androidx.wear.compose.material.Typography copy(optional androidx.compose.ui.text.TextStyle display1, optional androidx.compose.ui.text.TextStyle display2, optional androidx.compose.ui.text.TextStyle display3, optional androidx.compose.ui.text.TextStyle title1, optional androidx.compose.ui.text.TextStyle title2, optional androidx.compose.ui.text.TextStyle title3, optional androidx.compose.ui.text.TextStyle body1, optional androidx.compose.ui.text.TextStyle body2, optional androidx.compose.ui.text.TextStyle button, optional androidx.compose.ui.text.TextStyle caption1, optional androidx.compose.ui.text.TextStyle caption2, optional androidx.compose.ui.text.TextStyle caption3);
+    method public androidx.compose.ui.text.TextStyle getBody1();
+    method public androidx.compose.ui.text.TextStyle getBody2();
+    method public androidx.compose.ui.text.TextStyle getButton();
+    method public androidx.compose.ui.text.TextStyle getCaption1();
+    method public androidx.compose.ui.text.TextStyle getCaption2();
+    method public androidx.compose.ui.text.TextStyle getCaption3();
+    method public androidx.compose.ui.text.TextStyle getDisplay1();
+    method public androidx.compose.ui.text.TextStyle getDisplay2();
+    method public androidx.compose.ui.text.TextStyle getDisplay3();
+    method public androidx.compose.ui.text.TextStyle getTitle1();
+    method public androidx.compose.ui.text.TextStyle getTitle2();
+    method public androidx.compose.ui.text.TextStyle getTitle3();
+    property public final androidx.compose.ui.text.TextStyle body1;
+    property public final androidx.compose.ui.text.TextStyle body2;
+    property public final androidx.compose.ui.text.TextStyle button;
+    property public final androidx.compose.ui.text.TextStyle caption1;
+    property public final androidx.compose.ui.text.TextStyle caption2;
+    property public final androidx.compose.ui.text.TextStyle caption3;
+    property public final androidx.compose.ui.text.TextStyle display1;
+    property public final androidx.compose.ui.text.TextStyle display2;
+    property public final androidx.compose.ui.text.TextStyle display3;
+    property public final androidx.compose.ui.text.TextStyle title1;
+    property public final androidx.compose.ui.text.TextStyle title2;
+    property public final androidx.compose.ui.text.TextStyle title3;
+  }
+
+  public final class VignetteKt {
+    method @androidx.compose.runtime.Composable public static void Vignette(int vignettePosition, optional androidx.compose.ui.Modifier modifier);
+  }
+
+  @kotlin.jvm.JvmInline public final value class VignettePosition {
+    ctor public VignettePosition(int key);
+    field public static final androidx.wear.compose.material.VignettePosition.Companion Companion;
+  }
+
+  public static final class VignettePosition.Companion {
+    method public int getBottom();
+    method public int getTop();
+    method public int getTopAndBottom();
+    property public final int Bottom;
+    property public final int Top;
+    property public final int TopAndBottom;
+  }
+
+}
+
+package androidx.wear.compose.material.dialog {
+
+  public final class DialogDefaults {
+    method public androidx.compose.foundation.layout.Arrangement.Vertical getAlertVerticalArrangement();
+    method public androidx.compose.foundation.layout.Arrangement.Vertical getConfirmationVerticalArrangement();
+    method public androidx.compose.foundation.layout.PaddingValues getContentPadding();
+    method public long getIndefiniteDurationMillis();
+    method public long getLongDurationMillis();
+    method public long getShortDurationMillis();
+    property public final androidx.compose.foundation.layout.Arrangement.Vertical AlertVerticalArrangement;
+    property public final androidx.compose.foundation.layout.Arrangement.Vertical ConfirmationVerticalArrangement;
+    property public final androidx.compose.foundation.layout.PaddingValues ContentPadding;
+    property public final long IndefiniteDurationMillis;
+    property public final long LongDurationMillis;
+    property public final long ShortDurationMillis;
+    field public static final androidx.wear.compose.material.dialog.DialogDefaults INSTANCE;
+  }
+
+  public final class DialogKt {
+    method @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? message, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional long backgroundColor, optional long titleColor, optional long messageColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.wear.compose.foundation.lazy.ScalingLazyListScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? message, optional androidx.wear.compose.material.ScalingLazyListState scrollState, optional long backgroundColor, optional long titleColor, optional long messageColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.wear.compose.material.ScalingLazyListScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, kotlin.jvm.functions.Function0<kotlin.Unit> negativeButton, kotlin.jvm.functions.Function0<kotlin.Unit> positiveButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional long backgroundColor, optional long contentColor, optional long titleColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Alert(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> title, kotlin.jvm.functions.Function0<kotlin.Unit> negativeButton, kotlin.jvm.functions.Function0<kotlin.Unit> positiveButton, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ScalingLazyListState scrollState, optional long backgroundColor, optional long contentColor, optional long titleColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? content);
+    method @androidx.compose.runtime.Composable public static void Confirmation(kotlin.jvm.functions.Function0<kotlin.Unit> onTimeout, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional long durationMillis, optional long backgroundColor, optional long contentColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Confirmation(kotlin.jvm.functions.Function0<kotlin.Unit> onTimeout, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit>? icon, optional androidx.wear.compose.material.ScalingLazyListState scrollState, optional long durationMillis, optional long backgroundColor, optional long contentColor, optional long iconColor, optional androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement, optional androidx.compose.foundation.layout.PaddingValues contentPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> content);
+  }
+
+  public final class Dialog_androidKt {
+    method @androidx.compose.runtime.Composable public static void Dialog(boolean showDialog, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.foundation.lazy.ScalingLazyListState? scrollState, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @Deprecated @androidx.compose.runtime.Composable public static void Dialog(boolean showDialog, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.material.ScalingLazyListState? scrollState, optional androidx.compose.ui.window.DialogProperties properties, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+}
+
diff --git a/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/PickerGroup.kt b/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/PickerGroup.kt
index 61a2bcf..1b56621 100644
--- a/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/PickerGroup.kt
+++ b/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/PickerGroup.kt
@@ -290,7 +290,7 @@
  */
 private fun Modifier.scrollablePicker(
     pickerState: PickerState
-) = Modifier.composed {
+) = composed {
     this.scrollable(
         state = pickerState,
         orientation = Orientation.Vertical,
diff --git a/wear/compose/compose-navigation/api/1.2.0-beta01.txt b/wear/compose/compose-navigation/api/1.2.0-beta01.txt
index 96ffadf..885cdb2 100644
--- a/wear/compose/compose-navigation/api/1.2.0-beta01.txt
+++ b/wear/compose/compose-navigation/api/1.2.0-beta01.txt
@@ -6,7 +6,7 @@
   }
 
   public final class SwipeDismissableNavHostControllerKt {
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
     method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberSwipeDismissableNavController();
   }
 
diff --git a/wear/compose/compose-navigation/api/1.4.0-beta02.txt b/wear/compose/compose-navigation/api/1.4.0-beta02.txt
new file mode 100644
index 0000000..e5e75bb
--- /dev/null
+++ b/wear/compose/compose-navigation/api/1.4.0-beta02.txt
@@ -0,0 +1,37 @@
+// Signature format: 4.0
+package androidx.wear.compose.navigation {
+
+  public final class NavGraphBuilderKt {
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+  public final class SwipeDismissableNavHostControllerKt {
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberSwipeDismissableNavController();
+  }
+
+  public final class SwipeDismissableNavHostKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state);
+    method @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional boolean userSwipeEnabled, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state);
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional boolean userSwipeEnabled, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.navigation.SwipeDismissableNavHostState rememberSwipeDismissableNavHostState(optional androidx.wear.compose.foundation.SwipeToDismissBoxState swipeToDismissBoxState);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.wear.compose.navigation.SwipeDismissableNavHostState rememberSwipeDismissableNavHostState(optional androidx.wear.compose.material.SwipeToDismissBoxState swipeToDismissBoxState);
+  }
+
+  public final class SwipeDismissableNavHostState {
+    ctor public SwipeDismissableNavHostState(androidx.wear.compose.foundation.SwipeToDismissBoxState swipeToDismissBoxState);
+    ctor @Deprecated public SwipeDismissableNavHostState(androidx.wear.compose.material.SwipeToDismissBoxState swipeToDismissBoxState);
+  }
+
+  @androidx.navigation.Navigator.Name("wear-navigator") public final class WearNavigator extends androidx.navigation.Navigator<androidx.wear.compose.navigation.WearNavigator.Destination> {
+    ctor public WearNavigator();
+    method public androidx.wear.compose.navigation.WearNavigator.Destination createDestination();
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class WearNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor public WearNavigator.Destination(androidx.wear.compose.navigation.WearNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+}
+
diff --git a/wear/compose/compose-navigation/api/res-1.4.0-beta02.txt b/wear/compose/compose-navigation/api/res-1.4.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/wear/compose/compose-navigation/api/res-1.4.0-beta02.txt
diff --git a/wear/compose/compose-navigation/api/restricted_1.2.0-beta01.txt b/wear/compose/compose-navigation/api/restricted_1.2.0-beta01.txt
index 96ffadf..885cdb2 100644
--- a/wear/compose/compose-navigation/api/restricted_1.2.0-beta01.txt
+++ b/wear/compose/compose-navigation/api/restricted_1.2.0-beta01.txt
@@ -6,7 +6,7 @@
   }
 
   public final class SwipeDismissableNavHostControllerKt {
-    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
     method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberSwipeDismissableNavController();
   }
 
diff --git a/wear/compose/compose-navigation/api/restricted_1.4.0-beta02.txt b/wear/compose/compose-navigation/api/restricted_1.4.0-beta02.txt
new file mode 100644
index 0000000..e5e75bb
--- /dev/null
+++ b/wear/compose/compose-navigation/api/restricted_1.4.0-beta02.txt
@@ -0,0 +1,37 @@
+// Signature format: 4.0
+package androidx.wear.compose.navigation {
+
+  public final class NavGraphBuilderKt {
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+  public final class SwipeDismissableNavHostControllerKt {
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberSwipeDismissableNavController();
+  }
+
+  public final class SwipeDismissableNavHostKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state);
+    method @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional boolean userSwipeEnabled, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state);
+    method @Deprecated @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void SwipeDismissableNavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional boolean userSwipeEnabled, optional androidx.wear.compose.navigation.SwipeDismissableNavHostState state, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static androidx.wear.compose.navigation.SwipeDismissableNavHostState rememberSwipeDismissableNavHostState(optional androidx.wear.compose.foundation.SwipeToDismissBoxState swipeToDismissBoxState);
+    method @Deprecated @androidx.compose.runtime.Composable public static androidx.wear.compose.navigation.SwipeDismissableNavHostState rememberSwipeDismissableNavHostState(optional androidx.wear.compose.material.SwipeToDismissBoxState swipeToDismissBoxState);
+  }
+
+  public final class SwipeDismissableNavHostState {
+    ctor public SwipeDismissableNavHostState(androidx.wear.compose.foundation.SwipeToDismissBoxState swipeToDismissBoxState);
+    ctor @Deprecated public SwipeDismissableNavHostState(androidx.wear.compose.material.SwipeToDismissBoxState swipeToDismissBoxState);
+  }
+
+  @androidx.navigation.Navigator.Name("wear-navigator") public final class WearNavigator extends androidx.navigation.Navigator<androidx.wear.compose.navigation.WearNavigator.Destination> {
+    ctor public WearNavigator();
+    method public androidx.wear.compose.navigation.WearNavigator.Destination createDestination();
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class WearNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor public WearNavigator.Destination(androidx.wear.compose.navigation.WearNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+}
+
diff --git a/wear/compose/compose-ui-tooling/api/1.4.0-beta02.txt b/wear/compose/compose-ui-tooling/api/1.4.0-beta02.txt
new file mode 100644
index 0000000..f725a3b
--- /dev/null
+++ b/wear/compose/compose-ui-tooling/api/1.4.0-beta02.txt
@@ -0,0 +1,20 @@
+// Signature format: 4.0
+package androidx.wear.compose.ui.tooling.preview {
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SQUARE, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Square", showSystemUi=true) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.LARGE_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Large Round", showSystemUi=true) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Round", showSystemUi=true) public @interface WearPreviewDevices {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Small", fontScale=0.94f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Normal", fontScale=1.0f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Medium", fontScale=1.06f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Large", fontScale=1.12f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Larger", fontScale=1.18f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Largest", fontScale=1.24f) public @interface WearPreviewFontScales {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.LARGE_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Large Round", showSystemUi=true) public @interface WearPreviewLargeRound {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Round", showSystemUi=true) public @interface WearPreviewSmallRound {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SQUARE, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Square", showSystemUi=true) public @interface WearPreviewSquare {
+  }
+
+}
+
diff --git a/wear/compose/compose-ui-tooling/api/res-1.4.0-beta02.txt b/wear/compose/compose-ui-tooling/api/res-1.4.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/wear/compose/compose-ui-tooling/api/res-1.4.0-beta02.txt
diff --git a/wear/compose/compose-ui-tooling/api/restricted_1.4.0-beta02.txt b/wear/compose/compose-ui-tooling/api/restricted_1.4.0-beta02.txt
new file mode 100644
index 0000000..f725a3b
--- /dev/null
+++ b/wear/compose/compose-ui-tooling/api/restricted_1.4.0-beta02.txt
@@ -0,0 +1,20 @@
+// Signature format: 4.0
+package androidx.wear.compose.ui.tooling.preview {
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SQUARE, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Square", showSystemUi=true) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.LARGE_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Large Round", showSystemUi=true) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Round", showSystemUi=true) public @interface WearPreviewDevices {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Small", fontScale=0.94f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Normal", fontScale=1.0f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Medium", fontScale=1.06f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Large", fontScale=1.12f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Larger", fontScale=1.18f) @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, showSystemUi=true, backgroundColor=4278190080L, showBackground=true, group="Fonts - Largest", fontScale=1.24f) public @interface WearPreviewFontScales {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.LARGE_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Large Round", showSystemUi=true) public @interface WearPreviewLargeRound {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SMALL_ROUND, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Round", showSystemUi=true) public @interface WearPreviewSmallRound {
+  }
+
+  @androidx.compose.ui.tooling.preview.Preview(device=androidx.wear.tooling.preview.devices.WearDevices.SQUARE, backgroundColor=4278190080L, showBackground=true, group="Devices - Small Square", showSystemUi=true) public @interface WearPreviewSquare {
+  }
+
+}
+
diff --git a/wear/protolayout/protolayout-expression/api/1.1.0-beta01.txt b/wear/protolayout/protolayout-expression/api/1.1.0-beta01.txt
index f309942..bc3520f9 100644
--- a/wear/protolayout/protolayout-expression/api/1.1.0-beta01.txt
+++ b/wear/protolayout/protolayout-expression/api/1.1.0-beta01.txt
@@ -61,7 +61,7 @@
     method @androidx.wear.protolayout.expression.RequiresSchemaVersion(major=1, minor=200) public androidx.wear.protolayout.expression.AnimationParameterBuilders.Repeatable.Builder setReverseRepeatOverride(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationParameters);
   }
 
-  public final class AppDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+  public final class AppDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T!> {
     ctor public AppDataKey(String);
   }
 
@@ -334,7 +334,7 @@
   @SuppressCompatibility @RequiresOptIn(level=androidx.annotation.RequiresOptIn.Level.ERROR) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD}) public @interface ExperimentalProtoLayoutExtensionApi {
   }
 
-  public final class PlatformDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+  public final class PlatformDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T!> {
     ctor public PlatformDataKey(String, String);
   }
 
@@ -389,7 +389,7 @@
   public final class VersionBuilders {
   }
 
-  @androidx.wear.protolayout.expression.RequiresSchemaVersion(major=1, minor=0) public static final class VersionBuilders.VersionInfo implements java.lang.Comparable<androidx.wear.protolayout.expression.VersionBuilders.VersionInfo> {
+  @androidx.wear.protolayout.expression.RequiresSchemaVersion(major=1, minor=0) public static final class VersionBuilders.VersionInfo implements java.lang.Comparable<androidx.wear.protolayout.expression.VersionBuilders.VersionInfo!> {
     method public int compareTo(androidx.wear.protolayout.expression.VersionBuilders.VersionInfo);
     method public int getMajor();
     method public int getMinor();
diff --git a/wear/protolayout/protolayout-expression/api/restricted_1.1.0-beta01.txt b/wear/protolayout/protolayout-expression/api/restricted_1.1.0-beta01.txt
index f309942..bc3520f9 100644
--- a/wear/protolayout/protolayout-expression/api/restricted_1.1.0-beta01.txt
+++ b/wear/protolayout/protolayout-expression/api/restricted_1.1.0-beta01.txt
@@ -61,7 +61,7 @@
     method @androidx.wear.protolayout.expression.RequiresSchemaVersion(major=1, minor=200) public androidx.wear.protolayout.expression.AnimationParameterBuilders.Repeatable.Builder setReverseRepeatOverride(androidx.wear.protolayout.expression.AnimationParameterBuilders.AnimationParameters);
   }
 
-  public final class AppDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+  public final class AppDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T!> {
     ctor public AppDataKey(String);
   }
 
@@ -334,7 +334,7 @@
   @SuppressCompatibility @RequiresOptIn(level=androidx.annotation.RequiresOptIn.Level.ERROR) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.FIELD}) public @interface ExperimentalProtoLayoutExtensionApi {
   }
 
-  public final class PlatformDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T> {
+  public final class PlatformDataKey<T extends androidx.wear.protolayout.expression.DynamicBuilders.DynamicType> extends androidx.wear.protolayout.expression.DynamicDataKey<T!> {
     ctor public PlatformDataKey(String, String);
   }
 
@@ -389,7 +389,7 @@
   public final class VersionBuilders {
   }
 
-  @androidx.wear.protolayout.expression.RequiresSchemaVersion(major=1, minor=0) public static final class VersionBuilders.VersionInfo implements java.lang.Comparable<androidx.wear.protolayout.expression.VersionBuilders.VersionInfo> {
+  @androidx.wear.protolayout.expression.RequiresSchemaVersion(major=1, minor=0) public static final class VersionBuilders.VersionInfo implements java.lang.Comparable<androidx.wear.protolayout.expression.VersionBuilders.VersionInfo!> {
     method public int compareTo(androidx.wear.protolayout.expression.VersionBuilders.VersionInfo);
     method public int getMajor();
     method public int getMinor();
diff --git a/wear/wear/api/1.3.0-beta01.txt b/wear/wear/api/1.3.0-beta01.txt
index 40f7aad..46ea6ae 100644
--- a/wear/wear/api/1.3.0-beta01.txt
+++ b/wear/wear/api/1.3.0-beta01.txt
@@ -226,7 +226,7 @@
     method public long getTotalTime();
     method public boolean isIndeterminate();
     method public boolean isTimerRunning();
-    method public void setColorSchemeColors(int...);
+    method public void setColorSchemeColors(int...!);
     method public void setIndeterminate(boolean);
     method public void setOnTimerFinishedListener(androidx.wear.widget.CircularProgressLayout.OnTimerFinishedListener?);
     method public void setStartingRotation(float);
diff --git a/wear/wear/api/restricted_1.3.0-beta01.txt b/wear/wear/api/restricted_1.3.0-beta01.txt
index 31c3f46..d6a35fe 100644
--- a/wear/wear/api/restricted_1.3.0-beta01.txt
+++ b/wear/wear/api/restricted_1.3.0-beta01.txt
@@ -232,7 +232,7 @@
     method public long getTotalTime();
     method public boolean isIndeterminate();
     method public boolean isTimerRunning();
-    method public void setColorSchemeColors(int...);
+    method public void setColorSchemeColors(int...!);
     method public void setIndeterminate(boolean);
     method public void setOnTimerFinishedListener(androidx.wear.widget.CircularProgressLayout.OnTimerFinishedListener?);
     method public void setStartingRotation(float);
diff --git a/window/extensions/core/core/build.gradle b/window/extensions/core/core/build.gradle
index 10a8d6f..3f919e9 100644
--- a/window/extensions/core/core/build.gradle
+++ b/window/extensions/core/core/build.gradle
@@ -31,9 +31,9 @@
 }
 
 dependencies {
-    api(libs.kotlinStdlib)
     implementation("androidx.annotation:annotation:1.6.0")
 
+    testApi(libs.kotlinStdlib)
     testImplementation(libs.kotlinTest)
     testImplementation(libs.kotlinTestAnnotationsCommon)
 }
diff --git a/window/extensions/extensions/build.gradle b/window/extensions/extensions/build.gradle
index 19a4615..611e695 100644
--- a/window/extensions/extensions/build.gradle
+++ b/window/extensions/extensions/build.gradle
@@ -32,7 +32,7 @@
 dependencies {
     implementation("androidx.annotation:annotation:1.6.0")
     implementation("androidx.annotation:annotation-experimental:1.4.0")
-    implementation("androidx.window.extensions.core:core:1.0.0")
+    compileOnly(implementation("androidx.window.extensions.core:core:1.0.0"))
 
     testImplementation(libs.robolectric)
     testImplementation(libs.testExtJunit)
diff --git a/window/window/build.gradle b/window/window/build.gradle
index 8ab02de..0a42571 100644
--- a/window/window/build.gradle
+++ b/window/window/build.gradle
@@ -58,7 +58,17 @@
 
     def extensions_core_version = "androidx.window.extensions.core:core:1.0.0"
     def extensions_version = "androidx.window.extensions:extensions:1.2.0"
-    implementation(extensions_core_version)
+    // A compile only dependency on extnensions.core so that other libraries do not expose it
+    // transitively.
+    compileOnly(extensions_core_version)
+    // A compile only dependency on extnensions.core so that other libraries do not expose it
+    // transitively. The testCompile is added because tests are not getting the dependency
+    // transitively.
+    testCompileOnly(extensions_core_version)
+    // A compile only dependency on extnensions.core so that other libraries do not expose it
+    // transitively. The androidTestCompile is added because tests are not getting the dependency
+    // transitively.
+    androidTestCompileOnly(extensions_core_version)
     compileOnly(project(":window:sidecar:sidecar"))
     compileOnly(extensions_version)
 
diff --git a/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowBackendApi2.kt b/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowBackendApi2.kt
index bc6fb57..996f60a 100644
--- a/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowBackendApi2.kt
+++ b/window/window/src/main/java/androidx/window/layout/adapter/extensions/ExtensionWindowBackendApi2.kt
@@ -36,7 +36,7 @@
     private val globalLock = ReentrantLock()
 
     @GuardedBy("globalLock")
-    private val contextToListeners = mutableMapOf<Context, MulticastConsumer>()
+    private val contextToListeners = mutableMapOf<Context, MulticastConsumerApi2>()
 
     @GuardedBy("globalLock")
     private val listenerToContext = mutableMapOf<Consumer<WindowLayoutInfo>, Context>()
@@ -61,7 +61,7 @@
                 listener.addListener(callback)
                 listenerToContext[callback] = context
             } ?: run {
-                val consumer = MulticastConsumer(context)
+                val consumer = MulticastConsumerApi2(context)
                 contextToListeners[context] = consumer
                 listenerToContext[callback] = context
                 consumer.addListener(callback)
diff --git a/window/window/src/main/java/androidx/window/layout/adapter/extensions/MulticastConsumer.kt b/window/window/src/main/java/androidx/window/layout/adapter/extensions/MulticastConsumer.kt
index e122e1c..94672c3 100644
--- a/window/window/src/main/java/androidx/window/layout/adapter/extensions/MulticastConsumer.kt
+++ b/window/window/src/main/java/androidx/window/layout/adapter/extensions/MulticastConsumer.kt
@@ -19,7 +19,6 @@
 import android.content.Context
 import androidx.annotation.GuardedBy
 import androidx.core.util.Consumer
-import androidx.window.extensions.core.util.function.Consumer as OEMConsumer
 import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
 import androidx.window.layout.WindowLayoutInfo
 import java.util.concurrent.locks.ReentrantLock
@@ -30,7 +29,7 @@
  */
 internal class MulticastConsumer(
     private val context: Context
-) : Consumer<OEMWindowLayoutInfo>, OEMConsumer<OEMWindowLayoutInfo> {
+) : Consumer<OEMWindowLayoutInfo> {
     private val globalLock = ReentrantLock()
 
     @GuardedBy("globalLock")
diff --git a/window/window/src/main/java/androidx/window/layout/adapter/extensions/MulticastConsumerApi2.kt b/window/window/src/main/java/androidx/window/layout/adapter/extensions/MulticastConsumerApi2.kt
new file mode 100644
index 0000000..0326f02
--- /dev/null
+++ b/window/window/src/main/java/androidx/window/layout/adapter/extensions/MulticastConsumerApi2.kt
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.window.layout.adapter.extensions
+
+import android.content.Context
+import androidx.annotation.GuardedBy
+import androidx.core.util.Consumer
+import androidx.window.RequiresWindowSdkExtension
+import androidx.window.extensions.core.util.function.Consumer as OEMConsumer
+import androidx.window.extensions.layout.WindowLayoutInfo as OEMWindowLayoutInfo
+import androidx.window.layout.WindowLayoutInfo
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.concurrent.withLock
+
+/**
+ * A [Consumer] that handles multicasting to multiple [Consumer]s downstream. Implements the
+ * [androidx.window.extensions.core.util.function.Consumer] interface for compatibility with
+ * extensions.
+ */
+@RequiresWindowSdkExtension(2)
+internal class MulticastConsumerApi2(
+    private val context: Context
+) : Consumer<OEMWindowLayoutInfo>, OEMConsumer<OEMWindowLayoutInfo> {
+    private val globalLock = ReentrantLock()
+
+    @GuardedBy("globalLock")
+    private var lastKnownValue: WindowLayoutInfo? = null
+    @GuardedBy("globalLock")
+    private val registeredListeners = mutableSetOf<Consumer<WindowLayoutInfo>>()
+
+    override fun accept(value: OEMWindowLayoutInfo) {
+        globalLock.withLock {
+            val newValue = ExtensionsWindowLayoutInfoAdapter.translate(context, value)
+            lastKnownValue = newValue
+            registeredListeners.forEach { consumer -> consumer.accept(newValue) }
+        }
+    }
+
+    fun addListener(listener: Consumer<WindowLayoutInfo>) {
+        globalLock.withLock {
+            lastKnownValue?.let { value -> listener.accept(value) }
+            registeredListeners.add(listener)
+        }
+    }
+
+    fun removeListener(listener: Consumer<WindowLayoutInfo>) {
+        globalLock.withLock {
+            registeredListeners.remove(listener)
+        }
+    }
+
+    fun isEmpty(): Boolean {
+        return registeredListeners.isEmpty()
+    }
+}
diff --git a/work/work-runtime/api/2.9.0-beta01.txt b/work/work-runtime/api/2.9.0-beta01.txt
index 4c1e9d7..03f0451 100644
--- a/work/work-runtime/api/2.9.0-beta01.txt
+++ b/work/work-runtime/api/2.9.0-beta01.txt
@@ -7,8 +7,6 @@
   }
 
   public enum BackoffPolicy {
-    method public static androidx.work.BackoffPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.BackoffPolicy[] values();
     enum_constant public static final androidx.work.BackoffPolicy EXPONENTIAL;
     enum_constant public static final androidx.work.BackoffPolicy LINEAR;
   }
@@ -179,7 +177,7 @@
 
   public final class DataKt {
     method public static inline <reified T> boolean hasKeyWithValueOfType(androidx.work.Data, String key);
-    method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
+    method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,? extends java.lang.Object?>... pairs);
   }
 
   public class DelegatingWorkerFactory extends androidx.work.WorkerFactory {
@@ -189,8 +187,6 @@
   }
 
   public enum ExistingPeriodicWorkPolicy {
-    method public static androidx.work.ExistingPeriodicWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingPeriodicWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy CANCEL_AND_REENQUEUE;
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy KEEP;
     enum_constant @Deprecated public static final androidx.work.ExistingPeriodicWorkPolicy REPLACE;
@@ -198,8 +194,6 @@
   }
 
   public enum ExistingWorkPolicy {
-    method public static androidx.work.ExistingWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND;
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND_OR_REPLACE;
     enum_constant public static final androidx.work.ExistingWorkPolicy KEEP;
@@ -257,8 +251,6 @@
   }
 
   public enum NetworkType {
-    method public static androidx.work.NetworkType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.NetworkType[] values();
     enum_constant public static final androidx.work.NetworkType CONNECTED;
     enum_constant public static final androidx.work.NetworkType METERED;
     enum_constant public static final androidx.work.NetworkType NOT_REQUIRED;
@@ -312,8 +304,6 @@
   }
 
   public enum OutOfQuotaPolicy {
-    method public static androidx.work.OutOfQuotaPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.OutOfQuotaPolicy[] values();
     enum_constant public static final androidx.work.OutOfQuotaPolicy DROP_WORK_REQUEST;
     enum_constant public static final androidx.work.OutOfQuotaPolicy RUN_AS_NON_EXPEDITED_WORK_REQUEST;
   }
@@ -331,9 +321,9 @@
 
   public static final class PeriodicWorkRequest.Builder extends androidx.work.WorkRequest.Builder<androidx.work.PeriodicWorkRequest.Builder,androidx.work.PeriodicWorkRequest> {
     ctor @RequiresApi(26) public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, java.time.Duration repeatInterval);
-    ctor @RequiresApi(26) public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, java.time.Duration repeatInterval, java.time.Duration flexInterval);
-    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit);
-    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit, long flexInterval, java.util.concurrent.TimeUnit flexIntervalTimeUnit);
+    ctor @RequiresApi(26) public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker?> workerClass, java.time.Duration repeatInterval, java.time.Duration flexInterval);
+    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker?> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit);
+    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker?> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit, long flexInterval, java.util.concurrent.TimeUnit flexIntervalTimeUnit);
     method public androidx.work.PeriodicWorkRequest.Builder clearNextScheduleTimeOverride();
     method public androidx.work.PeriodicWorkRequest.Builder setNextScheduleTimeOverride(long nextScheduleTimeOverrideMillis);
   }
@@ -434,9 +424,7 @@
   }
 
   public enum WorkInfo.State {
-    method public final boolean isFinished();
-    method public static androidx.work.WorkInfo.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.WorkInfo.State[] values();
+    method public boolean isFinished();
     property public final boolean isFinished;
     enum_constant public static final androidx.work.WorkInfo.State BLOCKED;
     enum_constant public static final androidx.work.WorkInfo.State CANCELLED;
@@ -457,7 +445,7 @@
     method public abstract androidx.work.Operation cancelWorkById(java.util.UUID);
     method public abstract android.app.PendingIntent createCancelPendingIntent(java.util.UUID);
     method public final androidx.work.Operation enqueue(androidx.work.WorkRequest);
-    method public abstract androidx.work.Operation enqueue(java.util.List<? extends androidx.work.WorkRequest>);
+    method public abstract androidx.work.Operation enqueue(java.util.List<? extends androidx.work.WorkRequest!>);
     method public abstract androidx.work.Operation enqueueUniquePeriodicWork(String, androidx.work.ExistingPeriodicWorkPolicy, androidx.work.PeriodicWorkRequest);
     method public androidx.work.Operation enqueueUniqueWork(String, androidx.work.ExistingWorkPolicy, androidx.work.OneTimeWorkRequest);
     method public abstract androidx.work.Operation enqueueUniqueWork(String, androidx.work.ExistingWorkPolicy, java.util.List<androidx.work.OneTimeWorkRequest!>);
@@ -490,10 +478,10 @@
     enum_constant public static final androidx.work.WorkManager.UpdateResult NOT_APPLIED;
   }
 
-  public final class WorkManagerInitializer implements androidx.startup.Initializer<androidx.work.WorkManager> {
+  public final class WorkManagerInitializer implements androidx.startup.Initializer<androidx.work.WorkManager!> {
     ctor public WorkManagerInitializer();
     method public androidx.work.WorkManager create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
   public final class WorkQuery {
diff --git a/work/work-runtime/api/restricted_2.9.0-beta01.txt b/work/work-runtime/api/restricted_2.9.0-beta01.txt
index 4c1e9d7..03f0451 100644
--- a/work/work-runtime/api/restricted_2.9.0-beta01.txt
+++ b/work/work-runtime/api/restricted_2.9.0-beta01.txt
@@ -7,8 +7,6 @@
   }
 
   public enum BackoffPolicy {
-    method public static androidx.work.BackoffPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.BackoffPolicy[] values();
     enum_constant public static final androidx.work.BackoffPolicy EXPONENTIAL;
     enum_constant public static final androidx.work.BackoffPolicy LINEAR;
   }
@@ -179,7 +177,7 @@
 
   public final class DataKt {
     method public static inline <reified T> boolean hasKeyWithValueOfType(androidx.work.Data, String key);
-    method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
+    method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,? extends java.lang.Object?>... pairs);
   }
 
   public class DelegatingWorkerFactory extends androidx.work.WorkerFactory {
@@ -189,8 +187,6 @@
   }
 
   public enum ExistingPeriodicWorkPolicy {
-    method public static androidx.work.ExistingPeriodicWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingPeriodicWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy CANCEL_AND_REENQUEUE;
     enum_constant public static final androidx.work.ExistingPeriodicWorkPolicy KEEP;
     enum_constant @Deprecated public static final androidx.work.ExistingPeriodicWorkPolicy REPLACE;
@@ -198,8 +194,6 @@
   }
 
   public enum ExistingWorkPolicy {
-    method public static androidx.work.ExistingWorkPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.ExistingWorkPolicy[] values();
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND;
     enum_constant public static final androidx.work.ExistingWorkPolicy APPEND_OR_REPLACE;
     enum_constant public static final androidx.work.ExistingWorkPolicy KEEP;
@@ -257,8 +251,6 @@
   }
 
   public enum NetworkType {
-    method public static androidx.work.NetworkType valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.NetworkType[] values();
     enum_constant public static final androidx.work.NetworkType CONNECTED;
     enum_constant public static final androidx.work.NetworkType METERED;
     enum_constant public static final androidx.work.NetworkType NOT_REQUIRED;
@@ -312,8 +304,6 @@
   }
 
   public enum OutOfQuotaPolicy {
-    method public static androidx.work.OutOfQuotaPolicy valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.OutOfQuotaPolicy[] values();
     enum_constant public static final androidx.work.OutOfQuotaPolicy DROP_WORK_REQUEST;
     enum_constant public static final androidx.work.OutOfQuotaPolicy RUN_AS_NON_EXPEDITED_WORK_REQUEST;
   }
@@ -331,9 +321,9 @@
 
   public static final class PeriodicWorkRequest.Builder extends androidx.work.WorkRequest.Builder<androidx.work.PeriodicWorkRequest.Builder,androidx.work.PeriodicWorkRequest> {
     ctor @RequiresApi(26) public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, java.time.Duration repeatInterval);
-    ctor @RequiresApi(26) public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, java.time.Duration repeatInterval, java.time.Duration flexInterval);
-    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit);
-    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit, long flexInterval, java.util.concurrent.TimeUnit flexIntervalTimeUnit);
+    ctor @RequiresApi(26) public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker?> workerClass, java.time.Duration repeatInterval, java.time.Duration flexInterval);
+    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker?> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit);
+    ctor public PeriodicWorkRequest.Builder(Class<? extends androidx.work.ListenableWorker?> workerClass, long repeatInterval, java.util.concurrent.TimeUnit repeatIntervalTimeUnit, long flexInterval, java.util.concurrent.TimeUnit flexIntervalTimeUnit);
     method public androidx.work.PeriodicWorkRequest.Builder clearNextScheduleTimeOverride();
     method public androidx.work.PeriodicWorkRequest.Builder setNextScheduleTimeOverride(long nextScheduleTimeOverrideMillis);
   }
@@ -434,9 +424,7 @@
   }
 
   public enum WorkInfo.State {
-    method public final boolean isFinished();
-    method public static androidx.work.WorkInfo.State valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
-    method public static androidx.work.WorkInfo.State[] values();
+    method public boolean isFinished();
     property public final boolean isFinished;
     enum_constant public static final androidx.work.WorkInfo.State BLOCKED;
     enum_constant public static final androidx.work.WorkInfo.State CANCELLED;
@@ -457,7 +445,7 @@
     method public abstract androidx.work.Operation cancelWorkById(java.util.UUID);
     method public abstract android.app.PendingIntent createCancelPendingIntent(java.util.UUID);
     method public final androidx.work.Operation enqueue(androidx.work.WorkRequest);
-    method public abstract androidx.work.Operation enqueue(java.util.List<? extends androidx.work.WorkRequest>);
+    method public abstract androidx.work.Operation enqueue(java.util.List<? extends androidx.work.WorkRequest!>);
     method public abstract androidx.work.Operation enqueueUniquePeriodicWork(String, androidx.work.ExistingPeriodicWorkPolicy, androidx.work.PeriodicWorkRequest);
     method public androidx.work.Operation enqueueUniqueWork(String, androidx.work.ExistingWorkPolicy, androidx.work.OneTimeWorkRequest);
     method public abstract androidx.work.Operation enqueueUniqueWork(String, androidx.work.ExistingWorkPolicy, java.util.List<androidx.work.OneTimeWorkRequest!>);
@@ -490,10 +478,10 @@
     enum_constant public static final androidx.work.WorkManager.UpdateResult NOT_APPLIED;
   }
 
-  public final class WorkManagerInitializer implements androidx.startup.Initializer<androidx.work.WorkManager> {
+  public final class WorkManagerInitializer implements androidx.startup.Initializer<androidx.work.WorkManager!> {
     ctor public WorkManagerInitializer();
     method public androidx.work.WorkManager create(android.content.Context);
-    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<?>>!> dependencies();
+    method public java.util.List<java.lang.Class<? extends androidx.startup.Initializer<? extends java.lang.Object!>!>!> dependencies();
   }
 
   public final class WorkQuery {
diff --git a/work/work-testing/api/2.9.0-beta01.txt b/work/work-testing/api/2.9.0-beta01.txt
index 2812b61..6af87ec 100644
--- a/work/work-testing/api/2.9.0-beta01.txt
+++ b/work/work-testing/api/2.9.0-beta01.txt
@@ -14,7 +14,7 @@
 
   public class TestListenableWorkerBuilder<W extends androidx.work.ListenableWorker> {
     method public W build();
-    method public static androidx.work.testing.TestListenableWorkerBuilder<? extends androidx.work.ListenableWorker> from(android.content.Context, androidx.work.WorkRequest);
+    method public static androidx.work.testing.TestListenableWorkerBuilder<? extends androidx.work.ListenableWorker!> from(android.content.Context, androidx.work.WorkRequest);
     method public static <W extends androidx.work.ListenableWorker> androidx.work.testing.TestListenableWorkerBuilder<W!> from(android.content.Context, Class<W!>);
     method public androidx.work.testing.TestListenableWorkerBuilder<W!> setForegroundUpdater(androidx.work.ForegroundUpdater);
     method public androidx.work.testing.TestListenableWorkerBuilder<W!> setId(java.util.UUID);
@@ -32,8 +32,8 @@
     method public static inline <reified W extends androidx.work.ListenableWorker> androidx.work.testing.TestListenableWorkerBuilder<W> TestListenableWorkerBuilder(android.content.Context context, optional androidx.work.Data inputData, optional java.util.List<java.lang.String> tags, optional int runAttemptCount, optional java.util.List<? extends android.net.Uri> triggeredContentUris, optional java.util.List<java.lang.String> triggeredContentAuthorities);
   }
 
-  public class TestWorkerBuilder<W extends androidx.work.Worker> extends androidx.work.testing.TestListenableWorkerBuilder<W> {
-    method public static androidx.work.testing.TestWorkerBuilder<? extends androidx.work.Worker> from(android.content.Context, androidx.work.WorkRequest, java.util.concurrent.Executor);
+  public class TestWorkerBuilder<W extends androidx.work.Worker> extends androidx.work.testing.TestListenableWorkerBuilder<W!> {
+    method public static androidx.work.testing.TestWorkerBuilder<? extends androidx.work.Worker!> from(android.content.Context, androidx.work.WorkRequest, java.util.concurrent.Executor);
     method public static <W extends androidx.work.Worker> androidx.work.testing.TestWorkerBuilder<W!> from(android.content.Context, Class<W!>, java.util.concurrent.Executor);
   }
 
diff --git a/work/work-testing/api/restricted_2.9.0-beta01.txt b/work/work-testing/api/restricted_2.9.0-beta01.txt
index 2812b61..6af87ec 100644
--- a/work/work-testing/api/restricted_2.9.0-beta01.txt
+++ b/work/work-testing/api/restricted_2.9.0-beta01.txt
@@ -14,7 +14,7 @@
 
   public class TestListenableWorkerBuilder<W extends androidx.work.ListenableWorker> {
     method public W build();
-    method public static androidx.work.testing.TestListenableWorkerBuilder<? extends androidx.work.ListenableWorker> from(android.content.Context, androidx.work.WorkRequest);
+    method public static androidx.work.testing.TestListenableWorkerBuilder<? extends androidx.work.ListenableWorker!> from(android.content.Context, androidx.work.WorkRequest);
     method public static <W extends androidx.work.ListenableWorker> androidx.work.testing.TestListenableWorkerBuilder<W!> from(android.content.Context, Class<W!>);
     method public androidx.work.testing.TestListenableWorkerBuilder<W!> setForegroundUpdater(androidx.work.ForegroundUpdater);
     method public androidx.work.testing.TestListenableWorkerBuilder<W!> setId(java.util.UUID);
@@ -32,8 +32,8 @@
     method public static inline <reified W extends androidx.work.ListenableWorker> androidx.work.testing.TestListenableWorkerBuilder<W> TestListenableWorkerBuilder(android.content.Context context, optional androidx.work.Data inputData, optional java.util.List<java.lang.String> tags, optional int runAttemptCount, optional java.util.List<? extends android.net.Uri> triggeredContentUris, optional java.util.List<java.lang.String> triggeredContentAuthorities);
   }
 
-  public class TestWorkerBuilder<W extends androidx.work.Worker> extends androidx.work.testing.TestListenableWorkerBuilder<W> {
-    method public static androidx.work.testing.TestWorkerBuilder<? extends androidx.work.Worker> from(android.content.Context, androidx.work.WorkRequest, java.util.concurrent.Executor);
+  public class TestWorkerBuilder<W extends androidx.work.Worker> extends androidx.work.testing.TestListenableWorkerBuilder<W!> {
+    method public static androidx.work.testing.TestWorkerBuilder<? extends androidx.work.Worker!> from(android.content.Context, androidx.work.WorkRequest, java.util.concurrent.Executor);
     method public static <W extends androidx.work.Worker> androidx.work.testing.TestWorkerBuilder<W!> from(android.content.Context, Class<W!>, java.util.concurrent.Executor);
   }