Merge "Suppress flaky tests" into androidx-main
diff --git a/benchmark/common/src/main/java/androidx/benchmark/Outputs.kt b/benchmark/common/src/main/java/androidx/benchmark/Outputs.kt
index 2fbbcaa..bf333e1 100644
--- a/benchmark/common/src/main/java/androidx/benchmark/Outputs.kt
+++ b/benchmark/common/src/main/java/androidx/benchmark/Outputs.kt
@@ -16,7 +16,6 @@
 
 package androidx.benchmark
 
-import android.annotation.SuppressLint
 import android.os.Build
 import android.os.Environment
 import android.util.Log
@@ -50,7 +49,6 @@
         // Be explicit about the TimeZone for stable formatting
         formatter.timeZone = TimeZone.getTimeZone("UTC")
 
-        @SuppressLint("UnsafeNewApiCall", "NewApi")
         @Suppress("DEPRECATION")
         dirUsableByAppAndShell = when {
             Build.VERSION.SDK_INT == 30 -> {
diff --git a/benchmark/common/src/main/java/androidx/benchmark/Profiler.kt b/benchmark/common/src/main/java/androidx/benchmark/Profiler.kt
index 2ed9bec..2fe9622 100644
--- a/benchmark/common/src/main/java/androidx/benchmark/Profiler.kt
+++ b/benchmark/common/src/main/java/androidx/benchmark/Profiler.kt
@@ -16,7 +16,6 @@
 
 package androidx.benchmark
 
-import android.annotation.SuppressLint
 import android.os.Build
 import android.os.Debug
 import android.util.Log
@@ -86,7 +85,6 @@
     }
 }
 
-@SuppressLint("UnsafeNewApiCall")
 internal fun startRuntimeMethodTracing(traceFileName: String, sampled: Boolean) {
     val path = Outputs.testOutputFile(traceFileName).absolutePath
 
@@ -189,4 +187,4 @@
     }
 
     override val requiresLibraryOutputDir: Boolean = false
-}
\ No newline at end of file
+}
diff --git a/benchmark/macro-junit4/src/main/java/androidx/benchmark/macro/junit4/MacrobenchmarkRule.kt b/benchmark/macro-junit4/src/main/java/androidx/benchmark/macro/junit4/MacrobenchmarkRule.kt
index fa87ce4..dee3d44 100644
--- a/benchmark/macro-junit4/src/main/java/androidx/benchmark/macro/junit4/MacrobenchmarkRule.kt
+++ b/benchmark/macro-junit4/src/main/java/androidx/benchmark/macro/junit4/MacrobenchmarkRule.kt
@@ -17,7 +17,6 @@
 package androidx.benchmark.macro.junit4
 
 import android.Manifest
-import android.annotation.SuppressLint
 import androidx.annotation.IntRange
 import androidx.annotation.RequiresApi
 import androidx.benchmark.macro.CompilationMode
@@ -89,7 +88,6 @@
     }
 
     private fun applyInternal(base: Statement, description: Description) = object : Statement() {
-        @SuppressLint("UnsafeNewApiCall")
         override fun evaluate() {
             currentDescription = description
             base.evaluate()
diff --git a/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt b/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
index d09755d..b4a72dd 100644
--- a/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
+++ b/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
@@ -16,7 +16,6 @@
 
 package androidx.benchmark.macro
 
-import android.annotation.SuppressLint
 import android.content.pm.ApplicationInfo.FLAG_DEBUGGABLE
 import android.content.pm.PackageManager
 import android.os.Build
@@ -44,7 +43,6 @@
         )
     }
 
-    @SuppressLint("UnsafeNewApiCall")
     val errorNotProfileable = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
         !applicationInfo.isProfileableByShell
     } else {
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/AffectedModuleDetectorImplTest.kt b/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/AffectedModuleDetectorImplTest.kt
index d8b6782..cdb91693 100644
--- a/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/AffectedModuleDetectorImplTest.kt
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/dependencyTracker/AffectedModuleDetectorImplTest.kt
@@ -61,6 +61,7 @@
     private lateinit var p10: Project
     private lateinit var p11: Project
     private val cobuiltTestPaths = setOf(setOf("cobuilt1", "cobuilt2"))
+    private val ignoredPaths = setOf("ignored/")
 
     @Before
     fun init() {
@@ -592,6 +593,106 @@
         )
     }
 
+    @Test
+    fun `Only ignored file`() {
+        val detector = AffectedModuleDetectorImpl(
+            rootProject = root,
+            logger = logger,
+            ignoreUnknownProjects = false,
+            cobuiltTestPaths = cobuiltTestPaths,
+            ignoredPaths = ignoredPaths,
+            injectedGitClient = MockGitClient(
+                lastMergeSha = "foo",
+                changedFiles = listOf(convertToFilePath("ignored", "example.txt"))
+            )
+        )
+        MatcherAssert.assertThat(
+            detector.buildAll,
+            CoreMatchers.`is`(
+                false
+            )
+        )
+    }
+
+    @Test
+    fun `Ignored file and changed file`() {
+        val detector = AffectedModuleDetectorImpl(
+            rootProject = root,
+            logger = logger,
+            ignoreUnknownProjects = false,
+            cobuiltTestPaths = cobuiltTestPaths,
+            ignoredPaths = ignoredPaths,
+            injectedGitClient = MockGitClient(
+                lastMergeSha = "foo",
+                changedFiles = listOf(
+                    convertToFilePath("ignored", "example.txt"),
+                    convertToFilePath("p1", "foo.kt")
+                )
+            )
+        )
+        MatcherAssert.assertThat(
+            detector.changedProjects,
+            CoreMatchers.`is`(
+                setOf(p1, p11)
+            )
+        )
+        MatcherAssert.assertThat(
+            detector.buildAll,
+            CoreMatchers.`is`(
+                false
+            )
+        )
+    }
+
+    @Test
+    fun `Ignored file and unknown file`() {
+        val detector = AffectedModuleDetectorImpl(
+            rootProject = root,
+            logger = logger,
+            ignoreUnknownProjects = false,
+            cobuiltTestPaths = cobuiltTestPaths,
+            ignoredPaths = ignoredPaths,
+            injectedGitClient = MockGitClient(
+                lastMergeSha = "foo",
+                changedFiles = listOf(
+                    convertToFilePath("ignored", "example.txt"),
+                    convertToFilePath("unknown", "foo.kt")
+                )
+            )
+        )
+        MatcherAssert.assertThat(
+            detector.buildAll,
+            CoreMatchers.`is`(
+                true
+            )
+        )
+    }
+
+    @Test
+    fun `Ignored file, unknown file, and changed file`() {
+        val detector = AffectedModuleDetectorImpl(
+            rootProject = root,
+            logger = logger,
+            ignoreUnknownProjects = false,
+            cobuiltTestPaths = cobuiltTestPaths,
+            ignoredPaths = ignoredPaths,
+            injectedGitClient = MockGitClient(
+                lastMergeSha = "foo",
+                changedFiles = listOf(
+                    "ignored/eg.txt",
+                    convertToFilePath("unknown", "foo.kt"),
+                    convertToFilePath("p1", "bar.kt")
+                )
+            )
+        )
+        MatcherAssert.assertThat(
+            detector.buildAll,
+            CoreMatchers.`is`(
+                true
+            )
+        )
+    }
+
     // For both Linux/Windows
     fun convertToFilePath(vararg list: String): String {
         return list.toList().joinToString(File.separator)
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index 5d3e47a..5f58c68 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -95,7 +95,7 @@
     val PRINT = Version("1.1.0-beta01")
     val PERCENTLAYOUT = Version("1.1.0-alpha01")
     val PREFERENCE = Version("1.2.0-alpha01")
-    val PROFILEINSTALLER = Version("1.0.0-alpha01")
+    val PROFILEINSTALLER = Version("1.0.0-beta01")
     val RECOMMENDATION = Version("1.1.0-alpha01")
     val RECYCLERVIEW = Version("1.3.0-alpha01")
     val RECYCLERVIEW_SELECTION = Version("1.2.0-alpha02")
diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
index 08a3c28..6457f22 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
@@ -55,7 +55,7 @@
 const val MOCKITO_CORE = "org.mockito:mockito-core:2.25.0"
 const val MOCKITO_ANDROID = "org.mockito:mockito-android:2.25.0"
 const val MULTIDEX = "androidx.multidex:multidex:2.0.1"
-val SKIKO_VERSION = System.getenv("SKIKO_VERSION") ?: "0.3.1"
+val SKIKO_VERSION = System.getenv("SKIKO_VERSION") ?: "0.3.3"
 val SKIKO = "org.jetbrains.skiko:skiko-jvm:$SKIKO_VERSION"
 val SKIKO_LINUX_X64 = "org.jetbrains.skiko:skiko-jvm-runtime-linux-x64:$SKIKO_VERSION"
 val SKIKO_MACOS_X64 = "org.jetbrains.skiko:skiko-jvm-runtime-macos-x64:$SKIKO_VERSION"
diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/AffectedModuleDetector.kt b/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/AffectedModuleDetector.kt
index b32a04c..147c312 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/AffectedModuleDetector.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencyTracker/AffectedModuleDetector.kt
@@ -217,6 +217,7 @@
     private val ignoreUnknownProjects: Boolean = false,
     private val cobuiltTestPaths: Set<Set<String>> = COBUILT_TEST_PATHS,
     private val alwaysBuildIfExistsPaths: Set<String> = ALWAYS_BUILD_IF_EXISTS,
+    private val ignoredPaths: Set<String> = IGNORED_PATHS,
     private val injectedGitClient: GitClient? = null,
     private val baseCommitOverride: String? = null
 ) : AffectedModuleDetector(logger) {
@@ -250,6 +251,9 @@
 
     private var unknownFiles: MutableSet<String> = mutableSetOf()
 
+    // Files tracked by git that are not expected to effect the build, thus require no consideration
+    private var ignoredFiles: MutableSet<String> = mutableSetOf()
+
     val buildAll by lazy {
         shouldBuildAll()
     }
@@ -311,18 +315,29 @@
         val changedProjects: MutableSet<Project> = alwaysBuild.toMutableSet()
 
         for (filePath in changedFiles) {
-            val containingProject = findContainingProject(filePath)
-            if (containingProject == null) {
-                unknownFiles.add(filePath)
+            if (ignoredPaths.any {
+                filePath.startsWith(it)
+            }
+            ) {
+                ignoredFiles.add(filePath)
                 logger?.info(
-                    "Couldn't find containing project for file$filePath. Adding to unknownFiles."
+                    "Ignoring file: $filePath"
                 )
             } else {
-                changedProjects.add(containingProject)
-                logger?.info(
-                    "For file $filePath containing project is $containingProject. " +
-                        "Adding to changedProjects."
-                )
+                val containingProject = findContainingProject(filePath)
+                if (containingProject == null) {
+                    unknownFiles.add(filePath)
+                    logger?.info(
+                        "Couldn't find containing project for file: $filePath. Adding to " +
+                            "unknownFiles."
+                    )
+                } else {
+                    changedProjects.add(containingProject)
+                    logger?.info(
+                        "For file $filePath containing project is $containingProject. " +
+                            "Adding to changedProjects."
+                    )
+                }
             }
         }
 
@@ -350,8 +365,11 @@
      */
     private fun shouldBuildAll(): Boolean {
         var shouldBuildAll = false
-        // Should only trigger if there are no changedFiles
-        if (changedProjects.size == alwaysBuild.size && unknownFiles.isEmpty()) {
+        // Should only trigger if there are no changedFiles and no ignored files
+        if (changedProjects.size == alwaysBuild.size &&
+            unknownFiles.isEmpty() &&
+            ignoredFiles.isEmpty()
+        ) {
             shouldBuildAll = true
         } else if (unknownFiles.isNotEmpty() && !isGithubInfraChange()) {
             shouldBuildAll = true
@@ -366,7 +384,7 @@
             if (unknownFiles.isEmpty()) {
                 logger?.info("because no changed files were detected")
             } else {
-                logger?.info("because one of the unknown files affects everything in the build")
+                logger?.info("because one of the unknown files may affect everything in the build")
                 logger?.info(
                     """
                     The modules detected as affected by changed files are
@@ -492,5 +510,10 @@
                 ":emoji2:integration-tests:init-enabled-macrobenchmark-target",
             ),
         )
+
+        private val IGNORED_PATHS = setOf(
+            "docs/",
+            "development/"
+        )
     }
 }
diff --git a/buildSrc/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt b/buildSrc/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
index 0cb6f6a..838efb9 100644
--- a/buildSrc/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
@@ -175,7 +175,8 @@
             .isServicePrevious(isServicePrevious)
             .tag("androidx_unit_tests")
             .tag("media_compat")
-        configBuilder.isPostsubmit(!isPresubmitBuild())
+        val isPresubmit = isPresubmitBuild()
+        configBuilder.isPostsubmit(!isPresubmit)
         when (affectedModuleDetectorSubset.get()) {
             ProjectSubset.DEPENDENT_PROJECTS -> {
                 if (isConstrained) {
@@ -184,6 +185,13 @@
                     configBuilder.runAllTests(true)
                 }
             }
+            ProjectSubset.NONE -> {
+                if (isPresubmit) {
+                    configBuilder.runAllTests(false)
+                } else {
+                    configBuilder.runAllTests(true)
+                }
+            }
             else -> {
                 configBuilder.runAllTests(true)
             }
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt
index 8f9b59d..1365663 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2CameraMetadata.kt
@@ -16,7 +16,6 @@
 
 package androidx.camera.camera2.pipe.compat
 
-import android.annotation.SuppressLint
 import android.hardware.camera2.CameraCharacteristics
 import android.hardware.camera2.CaptureRequest
 import android.hardware.camera2.CaptureResult
@@ -125,7 +124,6 @@
             }
         }
 
-    @SuppressLint("UnsafeNewApiCall")
     private val _physicalCameraIds: Lazy<Set<CameraId>> =
         lazy(LazyThreadSafetyMode.PUBLICATION) {
             if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
@@ -176,4 +174,4 @@
                 }
             }
         }
-}
\ No newline at end of file
+}
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/CaptureSessionFactory.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/CaptureSessionFactory.kt
index 7eefdc5..b5def51 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/CaptureSessionFactory.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/CaptureSessionFactory.kt
@@ -119,7 +119,6 @@
     private val threads: Threads,
     private val graphConfig: CameraGraph.Config
 ) : CaptureSessionFactory {
-    @SuppressLint("NewApi")
     override fun create(
         cameraDevice: CameraDeviceWrapper,
         surfaces: Map<StreamId, Surface>,
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Configuration.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Configuration.kt
index 6d120e6..2b533ea 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Configuration.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Configuration.kt
@@ -16,7 +16,6 @@
 
 package androidx.camera.camera2.pipe.compat
 
-import android.annotation.SuppressLint
 import android.graphics.SurfaceTexture
 import android.hardware.camera2.CaptureRequest
 import android.hardware.camera2.params.OutputConfiguration
@@ -118,7 +117,6 @@
 }
 
 @RequiresApi(24)
-@SuppressLint("UnsafeNewApiCall")
 internal class AndroidOutputConfiguration(
     private val output: OutputConfiguration,
     override val surfaceSharing: Boolean,
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCameraManager.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCameraManager.kt
index 05bfaee3..209ea86e 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCameraManager.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCameraManager.kt
@@ -298,7 +298,6 @@
     /**
      * Wait for the specified duration, or until the availability callback is invoked.
      */
-    @SuppressLint("UnsafeNewApiCall")
     private suspend fun awaitAvailableCameraId(
         cameraId: CameraId,
         timeoutMillis: Long = 200
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/VideoCaptureLegacy.java b/camera/camera-video/src/main/java/androidx/camera/video/VideoCaptureLegacy.java
index b8a4537..7db9551 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/VideoCaptureLegacy.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/VideoCaptureLegacy.java
@@ -43,7 +43,6 @@
 import static androidx.camera.video.impl.VideoCaptureLegacyConfig.OPTION_VIDEO_FRAME_RATE;
 
 import android.Manifest;
-import android.annotation.SuppressLint;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.location.Location;
@@ -1024,7 +1023,6 @@
         }
     }
 
-    @SuppressLint("UnsafeNewApiCall")
     @NonNull
     private MediaMuxer initMediaMuxer(@NonNull OutputFileOptions outputFileOptions)
             throws IOException {
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/AudioSource.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/AudioSource.java
index 1830f64..d69288a 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/AudioSource.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/AudioSource.java
@@ -21,7 +21,6 @@
 import static androidx.camera.video.internal.AudioSource.InternalState.STARTED;
 
 import android.Manifest;
-import android.annotation.SuppressLint;
 import android.media.AudioFormat;
 import android.media.AudioRecord;
 import android.media.AudioTimestamp;
@@ -269,7 +268,6 @@
     }
 
     @SuppressWarnings("WeakerAccess") /* synthetic accessor */
-    @SuppressLint("UnsafeNewApiCall")
     long generatePresentationTimeUs() {
         long presentationTimeUs = -1;
         if (Build.VERSION.SDK_INT >= 24) {
diff --git a/camera/camera-view/src/main/java/androidx/camera/view/PreviewView.java b/camera/camera-view/src/main/java/androidx/camera/view/PreviewView.java
index 7062c6a..720ba9b 100644
--- a/camera/camera-view/src/main/java/androidx/camera/view/PreviewView.java
+++ b/camera/camera-view/src/main/java/androidx/camera/view/PreviewView.java
@@ -156,7 +156,6 @@
     @SuppressWarnings("WeakerAccess")
     final Preview.SurfaceProvider mSurfaceProvider = new Preview.SurfaceProvider() {
 
-        @SuppressLint("NewApi")
         @OptIn(markerClass = ExperimentalUseCaseGroup.class)
         @Override
         @AnyThread
diff --git a/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/car/NavigationCarAppService.java b/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/car/NavigationCarAppService.java
index e555e2b..eadd1ad 100644
--- a/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/car/NavigationCarAppService.java
+++ b/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/car/NavigationCarAppService.java
@@ -16,7 +16,6 @@
 
 package androidx.car.app.sample.navigation.common.car;
 
-import android.annotation.SuppressLint;
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
@@ -97,7 +96,6 @@
         }
     }
 
-    @SuppressLint("UnsafeNewApiCall")
     private void createNotificationChannel() {
         NotificationManager notificationManager = getSystemService(NotificationManager.class);
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
diff --git a/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/nav/NavigationService.java b/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/nav/NavigationService.java
index 21dd896..0dbe1c4 100644
--- a/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/nav/NavigationService.java
+++ b/car/app/app-samples/navigation/common/src/main/java/androidx/car/app/sample/navigation/common/nav/NavigationService.java
@@ -18,7 +18,6 @@
 
 import static android.media.AudioManager.AUDIOFOCUS_REQUEST_GRANTED;
 
-import android.annotation.SuppressLint;
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
@@ -420,7 +419,6 @@
         stopSelf();
     }
 
-    @SuppressLint("UnsafeNewApiCall")
     private void playNavigationDirection(@RawRes int resourceId) {
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
             return;
@@ -496,7 +494,6 @@
         stopNavigation();
     }
 
-    @SuppressLint("UnsafeNewApiCall")
     private void createNotificationChannel() {
         mNotificationManager = getSystemService(NotificationManager.class);
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java
index 3bfc510..da975f2 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/misc/NotificationDemoScreen.java
@@ -215,7 +215,7 @@
 
     // Suppressing 'ObsoleteSdkInt' as this code is shared between APKs with different min SDK
     // levels
-    @SuppressLint({"UnsafeNewApiCall", "ObsoleteSdkInt"})
+    @SuppressLint("ObsoleteSdkInt")
     private void sendNotification(CharSequence title, CharSequence text, String channelId,
             CharSequence channelName, int notificationId, int importance) {
         CarNotificationManager carNotificationManager =
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java
index 8d2b6da..3d1b041 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationService.java
@@ -104,7 +104,7 @@
      */
     // Suppressing 'ObsoleteSdkInt' as this code is shared between APKs with different min SDK
     // levels
-    @SuppressLint({"UnsafeNewApiCall", "ObsoleteSdkInt"})
+    @SuppressLint({"ObsoleteSdkInt"})
     private static void initNotifications(Context context) {
         NotificationChannelCompat navChannel =
                 new NotificationChannelCompat.Builder(
diff --git a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java
index 27b7cdf..2db959c 100644
--- a/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java
+++ b/car/app/app-samples/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/navigation/NavigationNotificationsDemoScreen.java
@@ -40,7 +40,7 @@
 
     // Suppressing 'ObsoleteSdkInt' as this code is shared between APKs with different min SDK
     // levels
-    @SuppressLint({"UnsafeNewApiCall", "ObsoleteSdkInt"})
+    @SuppressLint({"ObsoleteSdkInt"})
     @NonNull
     @Override
     public Template onGetTemplate() {
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java
index 16ff2cf6..68c5ed0 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/TravelEstimate.java
@@ -199,7 +199,6 @@
          * @throws NullPointerException if {@code remainingDistance} or
          *                              {@code arrivalTimeAtDestination} are {@code null}
          */
-        @SuppressLint("UnsafeNewApiCall")
         @RequiresApi(26)
         @SuppressWarnings("AndroidJdkLibsChecker")
         public Builder(
diff --git a/compose/animation/animation-core/src/androidMain/baseline-prof.txt b/compose/animation/animation-core/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..cc79ea0
--- /dev/null
+++ b/compose/animation/animation-core/src/androidMain/baseline-prof.txt
@@ -0,0 +1,8 @@
+# Baseline profile rules for androidx.compose.animation.core
+# =============================================
+# In practice it seems like almost every class in animation/core ends up getting loaded in even a
+# relatively small sample, and most end up getting marked as "HSP". Since Animation is a high value
+# target for performance (fade in, scroll, etc) we are going to be liberal in the animation profile
+# rules and just mark the entire module.
+HSPLandroidx/compose/animation/core/**;->**(**)**
+Landroidx/compose/animation/core/**;
\ No newline at end of file
diff --git a/compose/animation/animation/src/androidMain/baseline-prof.txt b/compose/animation/animation/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..3abf971
--- /dev/null
+++ b/compose/animation/animation/src/androidMain/baseline-prof.txt
@@ -0,0 +1,22 @@
+# Baseline profile rules for androidx.compose.animation
+# =============================================
+HSPLandroidx/compose/animation/FlingCalculatorKt;->**(**)**
+HSPLandroidx/compose/animation/SplineBasedDecayKt;->**(**)**
+HSPLandroidx/compose/animation/AndroidFlingSpline$FlingResult;-><init>(FF)V
+HSPLandroidx/compose/animation/AndroidFlingSpline$FlingResult;->getDistanceCoefficient()F
+HSPLandroidx/compose/animation/AndroidFlingSpline$FlingResult;->getVelocityCoefficient()F
+HSPLandroidx/compose/animation/AndroidFlingSpline;->**(**)**
+HSPLandroidx/compose/animation/FlingCalculator;->**(**)**
+HSPLandroidx/compose/animation/FlingCalculator$FlingInfo;-><init>(FFJ)V
+HSPLandroidx/compose/animation/FlingCalculator$FlingInfo;->position(J)F
+HSPLandroidx/compose/animation/FlingCalculator$FlingInfo;->velocity(J)F
+HSPLandroidx/compose/animation/AndroidFlingSpline;->**(**)**
+HSPLandroidx/compose/animation/AnimatedVisibilityKt**->**(**)**
+HSPLandroidx/compose/animation/AnimatedVisibilityScope;-><init>(**)V
+HSPLandroidx/compose/animation/CrossfadeKt**->**(**)**
+HSPLandroidx/compose/animation/TransitionData;->**(**)**
+HSPLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec**->**(**)**
+HSPLandroidx/compose/animation/ChangeSize;->**(**)**
+HSPLandroidx/compose/animation/CrossfadeAnimationItem;->**(**)**
+HSPLandroidx/compose/animation/EnterExitTransitionKt;->**(**)**
+Landroidx/compose/animation/*;
\ No newline at end of file
diff --git a/compose/foundation/foundation-layout/src/androidMain/baseline-prof.txt b/compose/foundation/foundation-layout/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..78b1a2f
--- /dev/null
+++ b/compose/foundation/foundation-layout/src/androidMain/baseline-prof.txt
@@ -0,0 +1,6 @@
+# Baseline profile rules for androidx.compose.foundation.layout
+# =============================================
+# Layout is incredibly important for performance, and represents many hot code paths. For now, we
+# will include all of the layout namespace
+HSPLandroidx/compose/foundation/layout/**->**(**)**
+Landroidx/compose/foundation/layout/**;
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/TextSelectionColorsScreenshotTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/TextSelectionColorsScreenshotTest.kt
index 13ee796..18d3368 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/TextSelectionColorsScreenshotTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/TextSelectionColorsScreenshotTest.kt
@@ -27,23 +27,21 @@
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.testutils.assertAgainstGolden
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.center
 import androidx.compose.ui.test.click
-import androidx.compose.ui.test.height
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.longClick
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onNodeWithText
 import androidx.compose.ui.test.performGesture
-import androidx.compose.ui.test.width
+import androidx.compose.ui.text.TextRange
+import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.text.style.ResolvedTextDirection
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.FlakyTest
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.screenshot.AndroidXScreenshotTestRule
@@ -68,7 +66,6 @@
     @get:Rule
     val screenshotRule = AndroidXScreenshotTestRule(GOLDEN_UI)
 
-    @FlakyTest(bugId = 179770443)
     @Test
     fun text_defaultSelectionColors() {
         rule.setContent {
@@ -87,7 +84,6 @@
             .assertAgainstGolden(screenshotRule, "text_defaultSelectionColors")
     }
 
-    @FlakyTest(bugId = 179770443)
     @Test
     fun text_customSelectionColors() {
         rule.setContent {
@@ -111,7 +107,6 @@
             .assertAgainstGolden(screenshotRule, "text_customSelectionColors")
     }
 
-    @FlakyTest(bugId = 179770443)
     @Test
     fun textField_defaultSelectionColors() {
         rule.setContent {
@@ -127,20 +122,11 @@
 
         rule.waitForIdle()
 
-        // Long click to start text selection
-        rule.onNodeWithText(Text)
-            .performGesture {
-                longClick(Offset(width / 5f, height / 2f))
-            }
-
-        rule.waitForIdle()
-
         rule.onNodeWithTag(Tag)
             .captureToImage()
             .assertAgainstGolden(screenshotRule, "textField_defaultSelectionColors")
     }
 
-    @FlakyTest(bugId = 188572883)
     @Test
     fun textField_customSelectionColors() {
         rule.setContent {
@@ -161,14 +147,6 @@
 
         rule.waitForIdle()
 
-        // Long click to start text selection
-        rule.onNodeWithText(Text)
-            .performGesture {
-                longClick(Offset(width / 5f, height / 2f))
-            }
-
-        rule.waitForIdle()
-
         rule.onNodeWithTag(Tag)
             .captureToImage()
             .assertAgainstGolden(screenshotRule, "textField_customSelectionColors")
@@ -205,10 +183,15 @@
 private fun TextFieldTestContent(textSelectionColors: TextSelectionColors) {
     CompositionLocalProvider(LocalTextSelectionColors provides textSelectionColors) {
         Box(Modifier.testTag(Tag)) {
-            BasicTextField(value = Text, onValueChange = {})
+            BasicTextField(value = TextFieldText, onValueChange = {})
         }
     }
 }
 
 private const val Text = "Selected text"
+private val TextFieldText = TextFieldValue(
+    text = "Selected text",
+    selection = TextRange(0, 8),
+    composition = TextRange(0, 8)
+)
 private const val Tag = "TestTag"
diff --git a/compose/foundation/foundation/src/androidMain/baseline-prof.txt b/compose/foundation/foundation/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..a43178c
--- /dev/null
+++ b/compose/foundation/foundation/src/androidMain/baseline-prof.txt
@@ -0,0 +1,41 @@
+# Baseline profile rules for androidx.compose.foundation
+# =============================================
+#
+# Include all methods in common top level classes
+HSPLandroidx/compose/foundation/Background;->**(**)**
+HSPLandroidx/compose/foundation/BackgroundKt;->**(**)**
+HSPLandroidx/compose/foundation/BorderKt**->**(**)**
+HSPLandroidx/compose/foundation/BorderStroke;->**(**)**
+HSPLandroidx/compose/foundation/CanvasKt;->**(**)**
+HSPLandroidx/compose/foundation/Clickable**->**(**)**
+HSPLandroidx/compose/foundation/Focusable**->**(**)**
+HSPLandroidx/compose/foundation/ImageKt**->**(**)**
+HSPLandroidx/compose/foundation/IndicationKt**->**(**)**
+HSPLandroidx/compose/foundation/IndicationModifier;->**(**)**
+HSPLandroidx/compose/foundation/MutatorMutex;->**(**)**
+HSPLandroidx/compose/foundation/ScrollKt**->**(**)**
+HSPLandroidx/compose/foundation/ScrollState**->**(**)**
+HSPLandroidx/compose/foundation/ScrollingLayoutModifier**->**(**)**
+#
+# Include everything inside of the gestures namespace
+HSPLandroidx/compose/foundation/gestures/**;->**(**)**
+#
+# Include everything inside of the interaction namespace
+HSPLandroidx/compose/foundation/interaction/*;->**(**)**
+#
+# Include everything inside of the lazy namespace
+HSPLandroidx/compose/foundation/lazy/*;->**(**)**
+#
+# common shape classes
+HSPLandroidx/compose/foundation/shape/CornerBasedShape;->**(**)**
+HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->**(**)**
+HSPLandroidx/compose/foundation/shape/CornerSizeKt;->**(**)**
+HSPLandroidx/compose/foundation/shape/DpCornerSize;->**(**)**
+#
+# Include everything inside of the text namespace
+HSPLandroidx/compose/foundation/text/*;->**(**)**
+HSPLandroidx/compose/foundation/text/selection/SimpleLayoutKt**->**(**)**
+HSPLandroidx/compose/foundation/text/selection/TextFieldSelectionManager;->**(**)**
+#
+# Include all of foundation
+Landroidx/compose/foundation/**;
\ No newline at end of file
diff --git a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/DarkTheme.desktop.kt b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/DarkTheme.desktop.kt
index 074ee43..de92935 100644
--- a/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/DarkTheme.desktop.kt
+++ b/compose/foundation/foundation/src/desktopMain/kotlin/androidx/compose/foundation/DarkTheme.desktop.kt
@@ -18,6 +18,8 @@
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ReadOnlyComposable
+import org.jetbrains.skiko.SystemTheme
+import org.jetbrains.skiko.currentSystemTheme
 
 /**
  * This function should be used to help build responsive UIs that follow the system setting, to
@@ -43,6 +45,5 @@
 @Composable
 @ReadOnlyComposable
 internal actual fun _isSystemInDarkTheme(): Boolean {
-    // TODO: Fix after we get a skiko build with https://github.com/JetBrains/skiko/pull/118
-    return false
+    return currentSystemTheme == SystemTheme.DARK
 }
diff --git a/compose/material/material-ripple/src/androidMain/baseline-prof.txt b/compose/material/material-ripple/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..2533c51
--- /dev/null
+++ b/compose/material/material-ripple/src/androidMain/baseline-prof.txt
@@ -0,0 +1,11 @@
+# Baseline profile rules for androidx.compose.material.ripple
+# =============================================
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->**(**)**
+HSPLandroidx/compose/material/ripple/PlatformRipple;->**(**)**
+HSPLandroidx/compose/material/ripple/Ripple;->**(**)**
+HSPLandroidx/compose/material/ripple/UnprojectedRipple;->**(**)**
+HSPLandroidx/compose/material/ripple/RippleHostView;->**(**)**
+HSPLandroidx/compose/material/ripple/RippleHostMap;->**(**)**
+HSPLandroidx/compose/material/ripple/RippleContainer;->**(**)**
+HSPLandroidx/compose/material/ripple/RippleAlpha;->**(**)**
+Landroidx/compose/material/ripple/*;
\ No newline at end of file
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialTextSelectionColorsScreenshotTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialTextSelectionColorsScreenshotTest.kt
index c8853dd..e73e6c7 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialTextSelectionColorsScreenshotTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialTextSelectionColorsScreenshotTest.kt
@@ -23,21 +23,19 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.testutils.assertAgainstGolden
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.click
-import androidx.compose.ui.test.height
 import androidx.compose.ui.test.junit4.createComposeRule
 import androidx.compose.ui.test.longClick
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.test.onNodeWithText
 import androidx.compose.ui.test.performGesture
-import androidx.compose.ui.test.width
+import androidx.compose.ui.text.TextRange
+import androidx.compose.ui.text.input.TextFieldValue
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.FlakyTest
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
 import androidx.test.screenshot.AndroidXScreenshotTestRule
@@ -87,7 +85,6 @@
             .isEqualTo(darkPrimary.copy(alpha = 0.375f))
     }
 
-    @FlakyTest(bugId = 179770443)
     @Test
     fun text_lightThemeSelectionColors() {
         rule.setContent {
@@ -106,7 +103,6 @@
             .assertAgainstGolden(screenshotRule, "text_lightThemeSelectionColors")
     }
 
-    @FlakyTest(bugId = 179770443)
     @Test
     fun text_darkThemeSelectionColors() {
         rule.setContent {
@@ -140,14 +136,6 @@
 
         rule.waitForIdle()
 
-        // Long click to start text selection
-        rule.onNodeWithText(Text)
-            .performGesture {
-                longClick(Offset(width / 5f, height / 2f))
-            }
-
-        rule.waitForIdle()
-
         rule.onNodeWithTag(Tag)
             .captureToImage()
             .assertAgainstGolden(screenshotRule, "filledTextField_lightThemeSelectionColors")
@@ -168,20 +156,11 @@
 
         rule.waitForIdle()
 
-        // Long click to start text selection
-        rule.onNodeWithText(Text)
-            .performGesture {
-                longClick(Offset(width / 5f, height / 2f))
-            }
-
-        rule.waitForIdle()
-
         rule.onNodeWithTag(Tag)
             .captureToImage()
             .assertAgainstGolden(screenshotRule, "filledTextField_darkThemeSelectionColors")
     }
 
-    @FlakyTest(bugId = 190120675)
     @Test
     fun outlinedTextField_lightThemeSelectionColors() {
         rule.setContent {
@@ -197,14 +176,6 @@
 
         rule.waitForIdle()
 
-        // Long click to start text selection
-        rule.onNodeWithText(Text)
-            .performGesture {
-                longClick(Offset(width / 5f, height / 2f))
-            }
-
-        rule.waitForIdle()
-
         rule.onNodeWithTag(Tag)
             .captureToImage()
             .assertAgainstGolden(screenshotRule, "outlinedTextField_lightThemeSelectionColors")
@@ -225,14 +196,6 @@
 
         rule.waitForIdle()
 
-        // Long click to start text selection
-        rule.onNodeWithText(Text)
-            .performGesture {
-                longClick(Offset(width / 5f, height / 2f))
-            }
-
-        rule.waitForIdle()
-
         rule.onNodeWithTag(Tag)
             .captureToImage()
             .assertAgainstGolden(screenshotRule, "outlinedTextField_darkThemeSelectionColors")
@@ -254,7 +217,11 @@
 private fun FilledTextFieldTestContent(colors: Colors) {
     MaterialTheme(colors) {
         Surface(Modifier.testTag(Tag)) {
-            TextField(value = Text, onValueChange = {}, modifier = Modifier.requiredWidth(280.dp))
+            TextField(
+                value = TextFieldText,
+                onValueChange = {},
+                modifier = Modifier.requiredWidth(280.dp)
+            )
         }
     }
 }
@@ -264,7 +231,7 @@
     MaterialTheme(colors) {
         Surface(Modifier.testTag(Tag)) {
             OutlinedTextField(
-                value = Text,
+                value = TextFieldText,
                 onValueChange = {},
                 modifier = Modifier.requiredWidth(280.dp)
             )
@@ -273,4 +240,9 @@
 }
 
 private const val Text = "Selected text"
+private val TextFieldText = TextFieldValue(
+    text = "Selected text",
+    selection = TextRange(0, 8),
+    composition = TextRange(0, 8)
+)
 private const val Tag = "TestTag"
\ No newline at end of file
diff --git a/compose/material/material/src/androidMain/baseline-prof.txt b/compose/material/material/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..e98ec55
--- /dev/null
+++ b/compose/material/material/src/androidMain/baseline-prof.txt
@@ -0,0 +1,26 @@
+# Baseline profile rules for androidx.compose.material
+# =============================================
+HSPLandroidx/compose/material/Colors;->**(**)**
+HSPLandroidx/compose/material/ButtonKt**->**(**)**
+HSPLandroidx/compose/material/AppBarKt**->**(**)**
+HPLandroidx/compose/material/ProgressIndicatorKt;->**(**)**
+HPLandroidx/compose/material/IconKt;->**(**)**
+HSPLandroidx/compose/material/ContentAlpha;->**(**)**
+HSPLandroidx/compose/material/ComposableSingletons$**->**(**)**
+HSPLandroidx/compose/material/DrawerKt;->**(**)**
+HSPLandroidx/compose/material/DrawerState;->**(**)**
+HSPLandroidx/compose/material/FadeInFadeOutState;->**(**)**
+HSPLandroidx/compose/material/FabPosition;->**(**)**
+HSPLandroidx/compose/material/FloatingActionButtonKt**->**(**)**
+HSPLandroidx/compose/material/MaterialTheme;->**(**)**
+HSPLandroidx/compose/material/MaterialTextSelectionColorsKt;->**(**)**
+HSPLandroidx/compose/material/MaterialRippleTheme;->**(**)**
+HSPLandroidx/compose/material/ScaffoldKt**->**(**)**
+HSPLandroidx/compose/material/SnackbarHostKt**->**(**)**
+HSPLandroidx/compose/material/SurfaceKt**->**(**)**
+HSPLandroidx/compose/material/SwipeableKt**->**(**)**
+HSPLandroidx/compose/material/SwipeableState**->**(**)**
+HSPLandroidx/compose/material/TextKt**->**(**)**
+HSPLandroidx/compose/material/Typography;->**(**)**
+# Prioritize only the top level classes for material. (Notably, this ignores icons)
+Landroidx/compose/material/*;
\ No newline at end of file
diff --git a/compose/runtime/runtime-saveable/src/androidMain/baseline-prof.txt b/compose/runtime/runtime-saveable/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..1127602
--- /dev/null
+++ b/compose/runtime/runtime-saveable/src/androidMain/baseline-prof.txt
@@ -0,0 +1,8 @@
+# Baseline profile rules for androidx.compose.runtime.saveable
+# =============================================
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt**->**(**)**
+HSPLandroidx/compose/runtime/saveable/SaveableStateHolderImpl**->**(**)**
+HSPLandroidx/compose/runtime/saveable/SaveableStateHolderKt**->**(**)**
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->**(**)**
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->**(**)**
+Landroidx/compose/runtime/saveable/*;
\ No newline at end of file
diff --git a/compose/runtime/runtime/src/androidMain/baseline-prof.txt b/compose/runtime/runtime/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..bd32703
--- /dev/null
+++ b/compose/runtime/runtime/src/androidMain/baseline-prof.txt
@@ -0,0 +1,945 @@
+# Baseline profile rules for androidx.compose.runtime
+# =============================================
+#
+# We prioritize everything at the top level, and a few sub-namespaces
+Landroidx/compose/runtime/*;
+Landroidx/compose/runtime/snapshots/*;
+Landroidx/compose/runtime/internal/*;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/**;
+#
+# Core runtime classes
+# ====
+# Note: AbstractApplier might benefit from inline caches. consider removing.
+HSPLandroidx/compose/runtime/AbstractApplier;->**(**)**
+HSPLandroidx/compose/runtime/Anchor;->**(**)**
+HSPLandroidx/compose/runtime/Applier$DefaultImpls;->**(**)**
+HSPLandroidx/compose/runtime/BroadcastFrameClock**->**(**)**
+HSPLandroidx/compose/runtime/ComposablesKt;->**(**)**
+HSPLandroidx/compose/runtime/ComposerImpl**->**(**)**
+HSPLandroidx/compose/runtime/ComposerKt**->**(**)**
+HSPLandroidx/compose/runtime/CompositionContext;->**(**)**
+HSPLandroidx/compose/runtime/CompositionImpl**->**(**)**
+HSPLandroidx/compose/runtime/CompositionKt;->**(**)**
+HSPLandroidx/compose/runtime/CompositionLocal;->**(**)**
+HSPLandroidx/compose/runtime/CompositionLocalKt;->**(**)**
+HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->**(**)**
+HSPLandroidx/compose/runtime/DerivedSnapshotState**->**(**)**
+HSPLandroidx/compose/runtime/DisposableEffectImpl;->**(**)**
+HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->**(**)**
+HSPLandroidx/compose/runtime/EffectsKt;->**(**)**
+HSPLandroidx/compose/runtime/GroupInfo;->**(**)**
+HSPLandroidx/compose/runtime/InvalidationResult;->**(**)**
+HSPLandroidx/compose/runtime/Invalidation;->**(**)**
+HSPLandroidx/compose/runtime/KeyInfo;->**(**)**
+HSPLandroidx/compose/runtime/Latch;->**(**)**
+HSPLandroidx/compose/runtime/LaunchedEffectImpl;->**(**)**
+HSPLandroidx/compose/runtime/LazyValueHolder;->**(**)**
+HSPLandroidx/compose/runtime/MonotonicFrameClock**->**(**)**
+HSPLandroidx/compose/runtime/NeverEqualPolicy;->**(**)**
+HSPLandroidx/compose/runtime/OpaqueKey;->**(**)**
+HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState**->**(**)**
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->**(**)**
+HSPLandroidx/compose/runtime/Pending**->**(**)**
+HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->**(**)**
+HSPLandroidx/compose/runtime/ProvidedValue;->**(**)**
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->**(**)**
+HSPLandroidx/compose/runtime/Recomposer**->**(**)**
+HSPLandroidx/compose/runtime/SkippableUpdater;->**(**)**
+HSPLandroidx/compose/runtime/SlotReader;->**(**)**
+HSPLandroidx/compose/runtime/SlotTable;->**(**)**
+HSPLandroidx/compose/runtime/SlotTableKt;->**(**)**
+HSPLandroidx/compose/runtime/SlotWriter;->**(**)**
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl**->**(**)**
+HSPLandroidx/compose/runtime/SnapshotStateKt**->**(**)**
+HSPLandroidx/compose/runtime/SnapshotThreadLocal;->**(**)**
+HSPLandroidx/compose/runtime/StaticProvidableCompositionLocal;->**(**)**
+HSPLandroidx/compose/runtime/StaticValueHolder;->**(**)**
+HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->**(**)**
+HSPLandroidx/compose/runtime/Trace;->**(**)**
+HSPLandroidx/compose/runtime/Updater**->**(**)**
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl**->**(**)**
+HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->**(**)**
+HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->identityHashCode(Ljava/lang/Object;)I
+#
+# Snapshot related stuff
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->**(**)**
+HSPLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->**(**)**
+HSPLandroidx/compose/runtime/snapshots/Snapshot**->**(**)**
+HSPLandroidx/compose/runtime/snapshots/ListUtilsKt;->fastToSet(Ljava/util/List;)Ljava/util/Set;
+HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult**->**(**)**
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet**->**(**)**
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateList**->**(**)**
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver**->**(**)**
+HSPLandroidx/compose/runtime/snapshots/StateRecord;->**(**)**
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->**(**)**
+#
+# MutableVector and other purpose-built data structures are hot paths
+HSPLandroidx/compose/runtime/collection/**->**(**)**
+HSPLandroidx/compose/runtime/Stack;->**(**)**
+HSPLandroidx/compose/runtime/IntStack;->**(**)**
+HSPLandroidx/compose/runtime/internal/ThreadMap;->**(**)**
+#
+# kotlinx.collections.immutable copy
+# ====
+# We only use a subset of these methods but haven't gotten rid of all of the APIs to preserve
+# source. Since this is very niche usage, this should stay pretty consistent.
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentHashMapOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentListOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentSetOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->getEMPTY()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;-><init>([Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->addAll(Ljava/util/Collection;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->get(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/UtilsKt;->persistentVectorOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getKey()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap$Builder;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->containsKey(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->createEntries()Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getEntries()Ljava/util/Set;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getNode$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;[Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->checkHasNext()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->ensureNextEntryIsReady()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->hasNext()Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->moveToNextNodeWithData(I)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->next()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getModCount$runtime_release()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getOwnership$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->putAll(Ljava/util/Map;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setModCount$runtime_release(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setOperationResult$runtime_release(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setSize(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->iterator()Ljava/util/Iterator;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntriesIterator;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->getEMPTY$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getNode()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getSizeDelta()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;-><init>(II[Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;-><init>(II[Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asInsertResult()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->containsKey(ILjava/lang/Object;I)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->elementsIdentityEquals(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryCount$runtime_release()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryKeyIndex$runtime_release(I)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->get(ILjava/lang/Object;I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->getBuffer$runtime_release()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasEntryAt$runtime_release(I)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasNodeAt(I)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->insertEntryAt(ILjava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->keyAtIndex(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->makeNode(ILjava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableInsertEntryAt(ILjava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePut(ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAll(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAllFromOtherNodeCell(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableUpdateValueAtIndex(ILjava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeAtIndex$runtime_release(I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeIndex$runtime_release(I)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->put(ILjava/lang/Object;Ljava/lang/Object;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->valueAtKeyIndex(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getBuffer()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getIndex()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextKey()Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextNode()Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;II)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->setIndex(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/util/Map$Entry;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->indexSegment(II)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;-><init>(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/CommonFunctionsKt;->assert(Z)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;-><init>(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->getCount()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->setCount(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$runtime_release(II)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;-><init>()V
+#
+# important external / stdlib methods and classes
+# Since compose heavily relies on various kotlin standard libraries, it is important that these get
+# compiled as well. Since the std libraries are large and we don't use everything, we are
+# conservative here and avoid wildcards and instead use profile dumps to guide us
+HSPLkotlin/ULong$Companion;-><init>()V
+HSPLkotlin/ULong$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/ULong;->constructor-impl(J)J
+HSPLkotlin/UnsignedKt;->ulongToDouble(J)D
+HSPLkotlin/collections/AbstractCollection;-><init>()V
+HSPLkotlin/collections/AbstractCollection;->isEmpty()Z
+HSPLkotlin/collections/AbstractCollection;->size()I
+HSPLkotlin/collections/AbstractList$Companion;-><init>()V
+HSPLkotlin/collections/AbstractList$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/AbstractList$IteratorImpl;-><init>(Lkotlin/collections/AbstractList;)V
+HSPLkotlin/collections/AbstractList$IteratorImpl;->hasNext()Z
+HSPLkotlin/collections/AbstractList$IteratorImpl;->next()Ljava/lang/Object;
+HSPLkotlin/collections/AbstractList;-><init>()V
+HSPLkotlin/collections/AbstractList;->iterator()Ljava/util/Iterator;
+HSPLkotlin/collections/AbstractMap$Companion;-><init>()V
+HSPLkotlin/collections/AbstractMap$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/AbstractMap;-><init>()V
+HSPLkotlin/collections/AbstractMap;->containsEntry$kotlin_stdlib(Ljava/util/Map$Entry;)Z
+HSPLkotlin/collections/AbstractMap;->entrySet()Ljava/util/Set;
+HSPLkotlin/collections/AbstractMap;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/AbstractMap;->size()I
+HSPLkotlin/collections/AbstractMutableList;-><init>()V
+HSPLkotlin/collections/AbstractMutableList;->size()I
+HSPLkotlin/collections/AbstractMutableMap;-><init>()V
+HSPLkotlin/collections/AbstractMutableMap;->size()I
+HSPLkotlin/collections/AbstractSet$Companion;-><init>()V
+HSPLkotlin/collections/AbstractSet$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/AbstractSet$Companion;->setEquals$kotlin_stdlib(Ljava/util/Set;Ljava/util/Set;)Z
+HSPLkotlin/collections/AbstractSet;-><init>()V
+HSPLkotlin/collections/AbstractSet;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/ArrayAsCollection;-><init>([Ljava/lang/Object;Z)V
+HSPLkotlin/collections/ArrayAsCollection;->toArray()[Ljava/lang/Object;
+HSPLkotlin/collections/ArrayDeque$Companion;-><init>()V
+HSPLkotlin/collections/ArrayDeque$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/ArrayDeque$Companion;->newCapacity$kotlin_stdlib(II)I
+HSPLkotlin/collections/ArrayDeque;-><init>()V
+HSPLkotlin/collections/ArrayDeque;->access$getElementData$p(Lkotlin/collections/ArrayDeque;)[Ljava/lang/Object;
+HSPLkotlin/collections/ArrayDeque;->access$getHead$p(Lkotlin/collections/ArrayDeque;)I
+HSPLkotlin/collections/ArrayDeque;->access$positiveMod(Lkotlin/collections/ArrayDeque;I)I
+HSPLkotlin/collections/ArrayDeque;->addLast(Ljava/lang/Object;)V
+HSPLkotlin/collections/ArrayDeque;->copyElements(I)V
+HSPLkotlin/collections/ArrayDeque;->ensureCapacity(I)V
+HSPLkotlin/collections/ArrayDeque;->getSize()I
+HSPLkotlin/collections/ArrayDeque;->incremented(I)I
+HSPLkotlin/collections/ArrayDeque;->isEmpty()Z
+HSPLkotlin/collections/ArrayDeque;->positiveMod(I)I
+HSPLkotlin/collections/ArrayDeque;->removeFirst()Ljava/lang/Object;
+HSPLkotlin/collections/ArrayDeque;->removeFirstOrNull()Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt__ArraysJVMKt;->copyOfRangeToIndexCheck(II)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt$asList$5;-><init>([F)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt$asList$5;->get(I)Ljava/lang/Float;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt$asList$5;->get(I)Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt$asList$5;->getSize()I
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->asList([F)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->asList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([F[FIIIILjava/lang/Object;)[F
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([I[IIIIILjava/lang/Object;)[I
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([F[FIII)[F
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([I[IIII)[I
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([Ljava/lang/Object;[Ljava/lang/Object;III)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyOfRange([FII)[F
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill$default([IIIIILjava/lang/Object;)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([IIII)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([Ljava/lang/Object;Ljava/lang/Object;II)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->sort([Ljava/lang/Object;)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->sortWith([Ljava/lang/Object;Ljava/util/Comparator;II)V
+HSPLkotlin/collections/ArraysKt___ArraysKt;->contains([CC)Z
+HSPLkotlin/collections/ArraysKt___ArraysKt;->first([Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt___ArraysKt;->getLastIndex([Ljava/lang/Object;)I
+HSPLkotlin/collections/ArraysKt___ArraysKt;->indexOf([CC)I
+HSPLkotlin/collections/ArraysKt___ArraysKt;->slice([FLkotlin/ranges/IntRange;)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt___ArraysKt;->toList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt___ArraysKt;->toMutableList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysUtilJVM;->asList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->copyToArrayOfAny([Ljava/lang/Object;Z)[Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->listOf(Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->arrayListOf([Ljava/lang/Object;)Ljava/util/ArrayList;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->asCollection([Ljava/lang/Object;)Ljava/util/Collection;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->emptyList()Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->getLastIndex(Ljava/util/List;)I
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->listOf([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__IterablesKt;->collectionSizeOrDefault(Ljava/lang/Iterable;I)I
+HSPLkotlin/collections/CollectionsKt__MutableCollectionsJVMKt;->sortWith(Ljava/util/List;Ljava/util/Comparator;)V
+HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->addAll(Ljava/util/Collection;Ljava/lang/Iterable;)Z
+HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeFirstOrNull(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->distinct(Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->filterNotNull(Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->filterNotNullTo(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->first(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->firstOrNull(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->getOrNull(Ljava/util/List;I)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->last(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->lastOrNull(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->maxOrNull(Ljava/lang/Iterable;)Ljava/lang/Float;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->minOrNull(Ljava/lang/Iterable;)Ljava/lang/Float;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->plus(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toFloatArray(Ljava/util/Collection;)[F
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toIntArray(Ljava/util/Collection;)[I
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/util/Collection;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableSet(Ljava/lang/Iterable;)Ljava/util/Set;
+HSPLkotlin/collections/EmptyList;-><init>()V
+HSPLkotlin/collections/EmptyList;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/EmptyList;->getSize()I
+HSPLkotlin/collections/EmptyList;->isEmpty()Z
+HSPLkotlin/collections/EmptyList;->size()I
+HSPLkotlin/collections/EmptyList;->toArray()[Ljava/lang/Object;
+HSPLkotlin/collections/EmptyMap;-><init>()V
+HSPLkotlin/collections/EmptyMap;->containsKey(Ljava/lang/Object;)Z
+HSPLkotlin/collections/EmptyMap;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Void;
+HSPLkotlin/collections/EmptyMap;->isEmpty()Z
+HSPLkotlin/collections/IntIterator;-><init>()V
+HSPLkotlin/collections/MapsKt__MapWithDefaultKt;->getOrImplicitDefaultNullable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/collections/MapsKt__MapsJVMKt;->mapCapacity(I)I
+HSPLkotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->getValue(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/collections/MapsKt__MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;Ljava/lang/Iterable;)V
+HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V
+HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;Ljava/util/Map;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->toMap([Lkotlin/Pair;Ljava/util/Map;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->toMutableMap(Ljava/util/Map;)Ljava/util/Map;
+HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareValues(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
+HSPLkotlin/jvm/internal/CollectionToArray;->toArray(Ljava/util/Collection;)[Ljava/lang/Object;
+HSPLkotlin/jvm/internal/FloatCompanionObject;-><init>()V
+HSPLkotlin/jvm/internal/FunctionReference;-><init>(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/FunctionReference;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/jvm/internal/FunctionReferenceImpl;-><init>(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/FunctionReferenceImpl;-><init>(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/InlineMarker;->mark(I)V
+HSPLkotlin/jvm/internal/IntCompanionObject;-><init>()V
+HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLkotlin/jvm/internal/Intrinsics;->checkExpressionValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
+HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLkotlin/jvm/internal/Intrinsics;->compare(II)I
+HSPLkotlin/jvm/internal/Lambda;-><init>(I)V
+HSPLkotlin/jvm/internal/Lambda;->getArity()I
+HSPLkotlin/math/MathKt__MathJVMKt;->getSign(I)I
+HSPLkotlin/math/MathKt__MathJVMKt;->roundToInt(F)I
+HSPLkotlin/ranges/IntRange$Companion;-><init>()V
+HSPLkotlin/ranges/IntRange$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/ranges/IntRange;-><init>(II)V
+HSPLkotlin/ranges/IntRange;->getEndInclusive()Ljava/lang/Integer;
+HSPLkotlin/ranges/IntRange;->getStart()Ljava/lang/Integer;
+HSPLkotlin/ranges/IntRange;->isEmpty()Z
+HSPLkotlin/ranges/RangesKt__RangesKt;->checkStepIsPositive(ZLjava/lang/Number;)V
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(II)I
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(JJ)J
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(Ljava/lang/Comparable;Ljava/lang/Comparable;)Ljava/lang/Comparable;
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(II)I
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(JJ)J
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(DDD)D
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(FFF)F
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(III)I
+HSPLkotlin/ranges/RangesKt___RangesKt;->step(Lkotlin/ranges/IntProgression;I)Lkotlin/ranges/IntProgression;
+HSPLkotlin/ranges/RangesKt___RangesKt;->until(II)Lkotlin/ranges/IntRange;
+HSPLkotlinx/coroutines/AbstractCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Z)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->afterResume(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->cancellationExceptionMessage()Ljava/lang/String;
+HSPLkotlinx/coroutines/AbstractCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/AbstractCoroutine;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/AbstractCoroutine;->initParentJob$kotlinx_coroutines_core()V
+HSPLkotlinx/coroutines/AbstractCoroutine;->isActive()Z
+HSPLkotlinx/coroutines/AbstractCoroutine;->onCancelled(Ljava/lang/Throwable;Z)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->onCompleted(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->onCompletionInternal(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->resumeWith(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->start(Lkotlinx/coroutines/CoroutineStart;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLkotlinx/coroutines/Active;-><init>()V
+HSPLkotlinx/coroutines/BeforeResumeCancelHandler;-><init>()V
+HSPLkotlinx/coroutines/BlockingEventLoop;-><init>(Ljava/lang/Thread;)V
+HSPLkotlinx/coroutines/BuildersKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancelHandler;-><init>()V
+HSPLkotlinx/coroutines/CancelHandlerBase;-><init>()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;-><init>(Lkotlin/coroutines/Continuation;I)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->callCancelHandler(Lkotlinx/coroutines/CancelHandler;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancel(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancelCompletedResult$kotlinx_coroutines_core(Ljava/lang/Object;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancelLater(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->checkCompleted()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->completeResume(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChild$kotlinx_coroutines_core()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChildIfNonResuable()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->dispatchResume(I)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContinuationCancellationCause(Lkotlinx/coroutines/Job;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getDelegate$kotlinx_coroutines_core()Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getParentHandle()Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getResult()Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getState$kotlinx_coroutines_core()Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->initCancellability()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellation(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->isCompleted()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->isReusable()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->makeCancelHandler(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/CancelHandler;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->parentCancelled$kotlinx_coroutines_core(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resetStateReusable()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl$default(Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl(Ljava/lang/Object;ILkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeUndispatched(Lkotlinx/coroutines/CoroutineDispatcher;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeWith(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumedState(Lkotlinx/coroutines/NotCompleted;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->setParentHandle(Lkotlinx/coroutines/DisposableHandle;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->setupCancellation()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->takeState$kotlinx_coroutines_core()Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResumeImpl(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->trySuspend()Z
+HSPLkotlinx/coroutines/CancellableContinuationKt;->disposeOnCancellation(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/DisposableHandle;)V
+HSPLkotlinx/coroutines/CancellableContinuationKt;->getOrCreateCancellableContinuation(Lkotlin/coroutines/Continuation;)Lkotlinx/coroutines/CancellableContinuationImpl;
+HSPLkotlinx/coroutines/CancellableContinuationKt;->removeOnCancellation(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/CancelledContinuation;-><init>(Lkotlin/coroutines/Continuation;Ljava/lang/Throwable;Z)V
+HSPLkotlinx/coroutines/CancelledContinuation;->makeResumed()Z
+HSPLkotlinx/coroutines/ChildContinuation;-><init>(Lkotlinx/coroutines/CancellableContinuationImpl;)V
+HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/ChildHandleNode;-><init>(Lkotlinx/coroutines/ChildJob;)V
+HSPLkotlinx/coroutines/ChildHandleNode;->childCancelled(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/ChildHandleNode;->invoke(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CompletedContinuation;-><init>(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CompletedContinuation;-><init>(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/CompletedContinuation;->copy$default(Lkotlinx/coroutines/CompletedContinuation;Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;ILjava/lang/Object;)Lkotlinx/coroutines/CompletedContinuation;
+HSPLkotlinx/coroutines/CompletedContinuation;->copy(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;)Lkotlinx/coroutines/CompletedContinuation;
+HSPLkotlinx/coroutines/CompletedContinuation;->getCancelled()Z
+HSPLkotlinx/coroutines/CompletedContinuation;->invokeHandlers(Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CompletedExceptionally;-><init>(Ljava/lang/Throwable;Z)V
+HSPLkotlinx/coroutines/CompletedExceptionally;-><init>(Ljava/lang/Throwable;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/CompletedExceptionally;->getHandled()Z
+HSPLkotlinx/coroutines/CompletedExceptionally;->makeHandled()Z
+HSPLkotlinx/coroutines/CompletionHandlerBase;-><init>()V
+HSPLkotlinx/coroutines/CompletionStateKt;->recoverResult(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CompletionStateKt;->toState$default(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CoroutineContextKt;->createDefaultDispatcher()Lkotlinx/coroutines/CoroutineDispatcher;
+HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;-><init>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher$Key;-><init>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher$Key;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/CoroutineDispatcher;-><init>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/CoroutineDispatcher;->interceptContinuation(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/CoroutineDispatcher;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/CoroutineDispatcher;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CoroutineDispatcher;->releaseInterceptedContinuation(Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/CoroutineExceptionHandler$Key;-><init>()V
+HSPLkotlinx/coroutines/CoroutineScopeKt;->CoroutineScope(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/CoroutineScope;
+HSPLkotlinx/coroutines/CoroutineScopeKt;->cancel$default(Lkotlinx/coroutines/CoroutineScope;Ljava/util/concurrent/CancellationException;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/CoroutineScopeKt;->cancel(Lkotlinx/coroutines/CoroutineScope;Ljava/util/concurrent/CancellationException;)V
+HSPLkotlinx/coroutines/CoroutineScopeKt;->coroutineScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CoroutineScopeKt;->isActive(Lkotlinx/coroutines/CoroutineScope;)Z
+HSPLkotlinx/coroutines/CoroutineStart;-><init>(Ljava/lang/String;I)V
+HSPLkotlinx/coroutines/CoroutineStart;->invoke(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/CoroutineStart;->isLazy()Z
+HSPLkotlinx/coroutines/CoroutineStart;->values()[Lkotlinx/coroutines/CoroutineStart;
+HSPLkotlinx/coroutines/DebugKt;->getASSERTIONS_ENABLED()Z
+HSPLkotlinx/coroutines/DebugKt;->getDEBUG()Z
+HSPLkotlinx/coroutines/DebugKt;->getRECOVER_STACK_TRACES()Z
+HSPLkotlinx/coroutines/DebugStringsKt;->getClassSimpleName(Ljava/lang/Object;)Ljava/lang/String;
+HSPLkotlinx/coroutines/DefaultExecutor;-><init>()V
+HSPLkotlinx/coroutines/DefaultExecutor;->createThreadSync()Ljava/lang/Thread;
+HSPLkotlinx/coroutines/DefaultExecutor;->getThread()Ljava/lang/Thread;
+HSPLkotlinx/coroutines/DefaultExecutor;->isShutdownRequested()Z
+HSPLkotlinx/coroutines/DefaultExecutor;->notifyStartup()Z
+HSPLkotlinx/coroutines/DefaultExecutor;->run()V
+HSPLkotlinx/coroutines/DefaultExecutorKt;->getDefaultDelay()Lkotlinx/coroutines/Delay;
+HSPLkotlinx/coroutines/DelayKt;->delay(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/DelayKt;->getDelay(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Delay;
+HSPLkotlinx/coroutines/DispatchedTask;-><init>(I)V
+HSPLkotlinx/coroutines/DispatchedTask;->getExceptionalResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/DispatchedTask;->getSuccessfulResult$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/DispatchedTask;->handleFatalException(Ljava/lang/Throwable;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/DispatchedTask;->run()V
+HSPLkotlinx/coroutines/DispatchedTaskKt;->dispatch(Lkotlinx/coroutines/DispatchedTask;I)V
+HSPLkotlinx/coroutines/DispatchedTaskKt;->isCancellableMode(I)Z
+HSPLkotlinx/coroutines/DispatchedTaskKt;->isReusableMode(I)Z
+HSPLkotlinx/coroutines/DispatchedTaskKt;->resume(Lkotlinx/coroutines/DispatchedTask;Lkotlin/coroutines/Continuation;Z)V
+HSPLkotlinx/coroutines/DispatchedTaskKt;->resumeUnconfined(Lkotlinx/coroutines/DispatchedTask;)V
+HSPLkotlinx/coroutines/Dispatchers;-><init>()V
+HSPLkotlinx/coroutines/Dispatchers;->getDefault()Lkotlinx/coroutines/CoroutineDispatcher;
+HSPLkotlinx/coroutines/DisposeOnCancel;-><init>(Lkotlinx/coroutines/DisposableHandle;)V
+HSPLkotlinx/coroutines/Empty;-><init>(Z)V
+HSPLkotlinx/coroutines/Empty;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/Empty;->isActive()Z
+HSPLkotlinx/coroutines/EventLoop;-><init>()V
+HSPLkotlinx/coroutines/EventLoop;->decrementUseCount(Z)V
+HSPLkotlinx/coroutines/EventLoop;->delta(Z)J
+HSPLkotlinx/coroutines/EventLoop;->getNextTime()J
+HSPLkotlinx/coroutines/EventLoop;->incrementUseCount$default(Lkotlinx/coroutines/EventLoop;ZILjava/lang/Object;)V
+HSPLkotlinx/coroutines/EventLoop;->incrementUseCount(Z)V
+HSPLkotlinx/coroutines/EventLoop;->isUnconfinedLoopActive()Z
+HSPLkotlinx/coroutines/EventLoop;->processUnconfinedEvent()Z
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;-><init>(Lkotlinx/coroutines/EventLoopImplBase;JLkotlinx/coroutines/CancellableContinuation;)V
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;->run()V
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;-><init>(J)V
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->scheduleTask(JLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;Lkotlinx/coroutines/EventLoopImplBase;)I
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setHeap(Lkotlinx/coroutines/internal/ThreadSafeHeap;)V
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setIndex(I)V
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->timeToExecute(J)Z
+HSPLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;-><init>(J)V
+HSPLkotlinx/coroutines/EventLoopImplBase;-><init>()V
+HSPLkotlinx/coroutines/EventLoopImplBase;->access$isCompleted$p(Lkotlinx/coroutines/EventLoopImplBase;)Z
+HSPLkotlinx/coroutines/EventLoopImplBase;->dequeue()Ljava/lang/Runnable;
+HSPLkotlinx/coroutines/EventLoopImplBase;->enqueueImpl(Ljava/lang/Runnable;)Z
+HSPLkotlinx/coroutines/EventLoopImplBase;->getNextTime()J
+HSPLkotlinx/coroutines/EventLoopImplBase;->isCompleted()Z
+HSPLkotlinx/coroutines/EventLoopImplBase;->processNextEvent()J
+HSPLkotlinx/coroutines/EventLoopImplBase;->schedule(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)V
+HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleImpl(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)I
+HSPLkotlinx/coroutines/EventLoopImplBase;->scheduleResumeAfterDelay(JLkotlinx/coroutines/CancellableContinuation;)V
+HSPLkotlinx/coroutines/EventLoopImplBase;->shouldUnpark(Lkotlinx/coroutines/EventLoopImplBase$DelayedTask;)Z
+HSPLkotlinx/coroutines/EventLoopImplPlatform;-><init>()V
+HSPLkotlinx/coroutines/EventLoopImplPlatform;->unpark()V
+HSPLkotlinx/coroutines/EventLoopKt;->createEventLoop()Lkotlinx/coroutines/EventLoop;
+HSPLkotlinx/coroutines/EventLoop_commonKt;->access$getCLOSED_EMPTY$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/EventLoop_commonKt;->access$getDISPOSED_TASK$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/EventLoop_commonKt;->delayToNanos(J)J
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;-><init>()V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;-><init>()V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher;-><init>()V
+HSPLkotlinx/coroutines/GlobalScope;-><init>()V
+HSPLkotlinx/coroutines/GlobalScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/InvokeOnCancel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/InvokeOnCancel;->invoke(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/InvokeOnCompletion;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/Job$DefaultImpls;->cancel$default(Lkotlinx/coroutines/Job;Ljava/util/concurrent/CancellationException;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/Job$DefaultImpls;->fold(Lkotlinx/coroutines/Job;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/Job$DefaultImpls;->get(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/Job$DefaultImpls;->invokeOnCompletion$default(Lkotlinx/coroutines/Job;ZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/Job$DefaultImpls;->minusKey(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/Job$Key;-><init>()V
+HSPLkotlinx/coroutines/JobCancellationException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobCancellationException;->equals(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/JobCancellationException;->fillInStackTrace()Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobCancellingNode;-><init>()V
+HSPLkotlinx/coroutines/JobImpl;-><init>(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobImpl;->getHandlesException$kotlinx_coroutines_core()Z
+HSPLkotlinx/coroutines/JobImpl;->getOnCancelComplete$kotlinx_coroutines_core()Z
+HSPLkotlinx/coroutines/JobImpl;->handlesException()Z
+HSPLkotlinx/coroutines/JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/JobKt__JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt__JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt__JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobKt__JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/JobKt__JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/JobNode;-><init>()V
+HSPLkotlinx/coroutines/JobNode;->dispose()V
+HSPLkotlinx/coroutines/JobNode;->getJob()Lkotlinx/coroutines/JobSupport;
+HSPLkotlinx/coroutines/JobNode;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/JobNode;->isActive()Z
+HSPLkotlinx/coroutines/JobNode;->setJob(Lkotlinx/coroutines/JobSupport;)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;-><init>(Lkotlinx/coroutines/NodeList;ZLjava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;->addExceptionLocked(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;->allocateList()Ljava/util/ArrayList;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->getExceptionsHolder()Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->getRootCause()Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->isActive()Z
+HSPLkotlinx/coroutines/JobSupport$Finishing;->isCancelling()Z
+HSPLkotlinx/coroutines/JobSupport$Finishing;->isCompleting()Z
+HSPLkotlinx/coroutines/JobSupport$Finishing;->sealLocked(Ljava/lang/Throwable;)Ljava/util/List;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->setCompleting(Z)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;->setExceptionsHolder(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;->setRootCause(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/JobSupport;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;-><init>(Z)V
+HSPLkotlinx/coroutines/JobSupport;->access$cancellationExceptionMessage(Lkotlinx/coroutines/JobSupport;)Ljava/lang/String;
+HSPLkotlinx/coroutines/JobSupport;->addLastAtomic(Ljava/lang/Object;Lkotlinx/coroutines/NodeList;Lkotlinx/coroutines/JobNode;)Z
+HSPLkotlinx/coroutines/JobSupport;->addSuppressedExceptions(Ljava/lang/Throwable;Ljava/util/List;)V
+HSPLkotlinx/coroutines/JobSupport;->afterCompletion(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport;->attachChild(Lkotlinx/coroutines/ChildJob;)Lkotlinx/coroutines/ChildHandle;
+HSPLkotlinx/coroutines/JobSupport;->cancel(Ljava/util/concurrent/CancellationException;)V
+HSPLkotlinx/coroutines/JobSupport;->cancelImpl$kotlinx_coroutines_core(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/JobSupport;->cancelInternal(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->cancelMakeCompleting(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->cancelParent(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/JobSupport;->cancellationExceptionMessage()Ljava/lang/String;
+HSPLkotlinx/coroutines/JobSupport;->childCancelled(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/JobSupport;->completeStateFinalization(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport;->createCauseException(Ljava/lang/Object;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobSupport;->finalizeFinishingState(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->firstChild(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/ChildHandleNode;
+HSPLkotlinx/coroutines/JobSupport;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/JobSupport;->getCancellationException()Ljava/util/concurrent/CancellationException;
+HSPLkotlinx/coroutines/JobSupport;->getChildJobCancellationCause()Ljava/util/concurrent/CancellationException;
+HSPLkotlinx/coroutines/JobSupport;->getFinalRootCause(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/util/List;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobSupport;->getKey()Lkotlin/coroutines/CoroutineContext$Key;
+HSPLkotlinx/coroutines/JobSupport;->getOnCancelComplete$kotlinx_coroutines_core()Z
+HSPLkotlinx/coroutines/JobSupport;->getOrPromoteCancellingList(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/JobSupport;->getParentHandle$kotlinx_coroutines_core()Lkotlinx/coroutines/ChildHandle;
+HSPLkotlinx/coroutines/JobSupport;->getState$kotlinx_coroutines_core()Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->initParentJobInternal$kotlinx_coroutines_core(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/JobSupport;->isActive()Z
+HSPLkotlinx/coroutines/JobSupport;->isCompleted()Z
+HSPLkotlinx/coroutines/JobSupport;->isScopedCoroutine()Z
+HSPLkotlinx/coroutines/JobSupport;->makeCancelling(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->makeCompletingOnce$kotlinx_coroutines_core(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->makeNode(Lkotlin/jvm/functions/Function1;Z)Lkotlinx/coroutines/JobNode;
+HSPLkotlinx/coroutines/JobSupport;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/JobSupport;->nextChild(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/ChildHandleNode;
+HSPLkotlinx/coroutines/JobSupport;->notifyCancelling(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->notifyCompletion(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->onCancelling(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->onCompletionInternal(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport;->parentCancelled(Lkotlinx/coroutines/ParentJob;)V
+HSPLkotlinx/coroutines/JobSupport;->promoteSingleToNodeList(Lkotlinx/coroutines/JobNode;)V
+HSPLkotlinx/coroutines/JobSupport;->removeNode$kotlinx_coroutines_core(Lkotlinx/coroutines/JobNode;)V
+HSPLkotlinx/coroutines/JobSupport;->setParentHandle$kotlinx_coroutines_core(Lkotlinx/coroutines/ChildHandle;)V
+HSPLkotlinx/coroutines/JobSupport;->start()Z
+HSPLkotlinx/coroutines/JobSupport;->startInternal(Ljava/lang/Object;)I
+HSPLkotlinx/coroutines/JobSupport;->toCancellationException(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/util/concurrent/CancellationException;
+HSPLkotlinx/coroutines/JobSupport;->tryFinalizeSimpleState(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/JobSupport;->tryMakeCancelling(Lkotlinx/coroutines/Incomplete;Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/JobSupport;->tryMakeCompleting(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->tryMakeCompletingSlowPath(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_ALREADY$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_RETRY$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getEMPTY_ACTIVE$p()Lkotlinx/coroutines/Empty;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getSEALED$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getTOO_LATE_TO_CANCEL$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/JobSupportKt;->boxIncomplete(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupportKt;->unboxState(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/MainCoroutineDispatcher;-><init>()V
+HSPLkotlinx/coroutines/NodeList;-><init>()V
+HSPLkotlinx/coroutines/NodeList;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/NodeList;->isActive()Z
+HSPLkotlinx/coroutines/NonDisposableHandle;-><init>()V
+HSPLkotlinx/coroutines/NonDisposableHandle;->dispose()V
+HSPLkotlinx/coroutines/RemoveOnCancel;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/StandaloneCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Z)V
+HSPLkotlinx/coroutines/ThreadLocalEventLoop;-><init>()V
+HSPLkotlinx/coroutines/ThreadLocalEventLoop;->getEventLoop$kotlinx_coroutines_core()Lkotlinx/coroutines/EventLoop;
+HSPLkotlinx/coroutines/ThreadLocalEventLoop;->setEventLoop$kotlinx_coroutines_core(Lkotlinx/coroutines/EventLoop;)V
+HSPLkotlinx/coroutines/TimeSourceKt;->getTimeSource()Lkotlinx/coroutines/TimeSource;
+HSPLkotlinx/coroutines/Unconfined;-><init>()V
+HSPLkotlinx/coroutines/UndispatchedCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/UndispatchedMarker;-><init>()V
+HSPLkotlinx/coroutines/UndispatchedMarker;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/UndispatchedMarker;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/UndispatchedMarker;->getKey()Lkotlin/coroutines/CoroutineContext$Key;
+HSPLkotlinx/coroutines/YieldKt;->checkCompletion(Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlinx/coroutines/android/HandlerContext;-><init>(Landroid/os/Handler;Ljava/lang/String;)V
+HSPLkotlinx/coroutines/android/HandlerContext;-><init>(Landroid/os/Handler;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/android/HandlerContext;-><init>(Landroid/os/Handler;Ljava/lang/String;Z)V
+HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerContext;
+HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerDispatcher;
+HSPLkotlinx/coroutines/android/HandlerContext;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/android/HandlerDispatcher;-><init>()V
+HSPLkotlinx/coroutines/android/HandlerDispatcher;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->asHandler(Landroid/os/Looper;Z)Landroid/os/Handler;
+HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->from(Landroid/os/Handler;Ljava/lang/String;)Lkotlinx/coroutines/android/HandlerDispatcher;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;-><init>(Lkotlinx/coroutines/channels/AbstractChannel;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->hasNext(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->hasNextResult(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->hasNextSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->next()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->setResult(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;-><init>(Lkotlinx/coroutines/CancellableContinuation;I)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;->completeResumeReceive(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;->resumeValue(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;->tryResumeReceive(Ljava/lang/Object;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;-><init>(Lkotlinx/coroutines/channels/AbstractChannel$Itr;Lkotlinx/coroutines/CancellableContinuation;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;->completeResumeReceive(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;->resumeOnCancellationFun(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1;
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;->tryResumeReceive(Ljava/lang/Object;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/AbstractChannel$RemoveReceiveOnCancel;-><init>(Lkotlinx/coroutines/channels/AbstractChannel;Lkotlinx/coroutines/channels/Receive;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$RemoveReceiveOnCancel;->invoke(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$enqueueReceiveInternal$$inlined$addLastIfPrevAndIf$1;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/channels/AbstractChannel;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$enqueueReceiveInternal$$inlined$addLastIfPrevAndIf$1;->prepare(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$enqueueReceiveInternal$$inlined$addLastIfPrevAndIf$1;->prepare(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->access$enqueueReceive(Lkotlinx/coroutines/channels/AbstractChannel;Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel;->access$removeReceiveOnCancel(Lkotlinx/coroutines/channels/AbstractChannel;Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/channels/Receive;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->enqueueReceive(Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel;->enqueueReceiveInternal(Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel;->iterator()Lkotlinx/coroutines/channels/ChannelIterator;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->onReceiveDequeued()V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->onReceiveEnqueued()V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->pollInternal()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->receive(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->receiveSuspend(ILkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->removeReceiveOnCancel(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/channels/Receive;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->takeFirstReceiveOrPeekClosed()Lkotlinx/coroutines/channels/ReceiveOrClosed;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;-><init>(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;->completeResumeSend()V
+HSPLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;->getPollResult()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;->tryResumeSend(Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->getClosedForSend()Lkotlinx/coroutines/channels/Closed;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->getQueue()Lkotlinx/coroutines/internal/LockFreeLinkedListHead;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->offer(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->offerInternal(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->sendBuffered(Ljava/lang/Object;)Lkotlinx/coroutines/channels/ReceiveOrClosed;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->takeFirstReceiveOrPeekClosed()Lkotlinx/coroutines/channels/ReceiveOrClosed;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->takeFirstSendOrPeekClosed()Lkotlinx/coroutines/channels/Send;
+HSPLkotlinx/coroutines/channels/BufferOverflow;-><init>(Ljava/lang/String;I)V
+HSPLkotlinx/coroutines/channels/ChannelKt;->Channel$default(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/channels/Channel;
+HSPLkotlinx/coroutines/channels/ChannelKt;->Channel(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/channels/Channel;
+HSPLkotlinx/coroutines/channels/ConflatedChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->enqueueReceiveInternal(Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->isBufferAlwaysEmpty()Z
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->isBufferEmpty()Z
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->offerInternal(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->pollInternal()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->updateValueLocked(Ljava/lang/Object;)Lkotlinx/coroutines/internal/UndeliveredElementException;
+HSPLkotlinx/coroutines/channels/LinkedListChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/LinkedListChannel;->isBufferAlwaysEmpty()Z
+HSPLkotlinx/coroutines/channels/LinkedListChannel;->offerInternal(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/Receive;-><init>()V
+HSPLkotlinx/coroutines/channels/Receive;->getOfferResult()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/Receive;->getOfferResult()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/Receive;->resumeOnCancellationFun(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1;
+HSPLkotlinx/coroutines/channels/Send;-><init>()V
+HSPLkotlinx/coroutines/flow/AbstractFlow;-><init>()V
+HSPLkotlinx/coroutines/flow/FlowKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->take(Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1;-><init>(Lkotlinx/coroutines/flow/Flow;I)V
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt;->take(Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2$1;-><init>(Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;-><init>(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/Ref$ObjectRef;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SafeFlow;-><init>(Lkotlin/jvm/functions/Function2;)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;-><init>(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;-><init>(IILkotlinx/coroutines/channels/BufferOverflow;)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->access$tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlinx/coroutines/flow/SharedFlowSlot;)J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->awaitValue(Lkotlinx/coroutines/flow/SharedFlowSlot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->cleanupTailLocked()V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/SharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/SharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->enqueueLocked(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->findSlotsToResumeLocked([Lkotlin/coroutines/Continuation;)[Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getBufferEndIndex()J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getHead()J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getPeekedValueLockedAt(J)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getQueueEndIndex()J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getReplaySize()I
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getTotalSize()I
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->growBuffer([Ljava/lang/Object;II)[Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmit(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitNoCollectorsLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowSlot;)J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryTakeValue(Lkotlinx/coroutines/flow/SharedFlowSlot;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateBufferLocked(JJJJ)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateCollectorIndexLocked$kotlinx_coroutines_core(J)[Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateNewCollectorIndexLocked$kotlinx_coroutines_core()J
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow$default(IILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableSharedFlow;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow(IILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/MutableSharedFlow;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;-><init>()V
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Ljava/lang/Object;)[Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)[Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;-><init>(Lkotlinx/coroutines/flow/StateFlowImpl;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;-><init>(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/StateFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/StateFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->getValue()Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->setValue(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->updateState(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/StateFlowKt;->MutableStateFlow(Ljava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow;
+HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getNONE$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getPENDING$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/flow/StateFlowSlot;-><init>()V
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/StateFlowImpl;)Z
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->awaitPending(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->makePending()V
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->takePending()Z
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;-><init>()V
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getNCollectors$p(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)I
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getSlots$p(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->allocateSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->freeSlot(Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;)V
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getNCollectors()I
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getSlots()[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;-><init>()V
+HSPLkotlinx/coroutines/internal/AtomicOp;-><init>()V
+HSPLkotlinx/coroutines/internal/AtomicOp;->decide(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/AtomicOp;->perform(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ContextScope;-><init>(Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlinx/coroutines/internal/ContextScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;-><init>(Lkotlinx/coroutines/CoroutineDispatcher;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->checkPostponedCancellation(Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->claimReusableCancellableContinuation()Lkotlinx/coroutines/CancellableContinuationImpl;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getDelegate$kotlinx_coroutines_core()Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getReusableCancellableContinuation()Lkotlinx/coroutines/CancellableContinuationImpl;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->isReusable(Lkotlinx/coroutines/CancellableContinuationImpl;)Z
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->postponeCancellation(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->takeState$kotlinx_coroutines_core()Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->access$getUNDEFINED$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->resumeCancellableWith(Lkotlin/coroutines/Continuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;-><init>()V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;->isRemoved()Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListKt;->unwrap(Ljava/lang/Object;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;-><init>()V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->access$finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->addNext(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->addOneIfEmpty(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->correctPrev(Lkotlinx/coroutines/internal/OpDescriptor;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNext()Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNextNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getPrevNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->isRemoved()Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->remove()Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removeFirstOrNull()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removeOrNext()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removed()Lkotlinx/coroutines/internal/Removed;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->tryCondAddNext(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;)I
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;-><init>(Z)V
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;-><init>()V
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;-><init>(IZ)V
+HSPLkotlinx/coroutines/internal/OpDescriptor;-><init>()V
+HSPLkotlinx/coroutines/internal/Removed;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/ScopeCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterResume(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/ScopeCoroutine;->isScopedCoroutine()Z
+HSPLkotlinx/coroutines/internal/Symbol;-><init>(Ljava/lang/String;)V
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->getAVAILABLE_PROCESSORS()I
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String;
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;III)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;JJJ)J
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->getAVAILABLE_PROCESSORS()I
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String;
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;III)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;JJJ)J
+HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;-><init>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;-><init>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt$updateState$1;-><init>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt;->restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/ThreadContextKt;->threadContextElements(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ThreadContextKt;->updateThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;-><init>()V
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->addImpl(Lkotlinx/coroutines/internal/ThreadSafeHeapNode;)V
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->firstImpl()Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->getSize()I
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->isEmpty()Z
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->peek()Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->realloc()[Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->removeAtImpl(I)Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->setSize(I)V
+HSPLkotlinx/coroutines/internal/ThreadSafeHeap;->siftUpFrom(I)V
+HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable$default(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startCoroutineUndispatched(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startUndispatchedOrReturn(Lkotlinx/coroutines/internal/ScopeCoroutine;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;-><init>()V
+HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;-><init>(IIJLjava/lang/String;)V
+HSPLkotlinx/coroutines/scheduling/DefaultScheduler;-><init>()V
+HSPLkotlinx/coroutines/scheduling/DefaultScheduler;->getIO()Lkotlinx/coroutines/CoroutineDispatcher;
+HSPLkotlinx/coroutines/scheduling/ExperimentalCoroutineDispatcher;-><init>(IIJLjava/lang/String;)V
+HSPLkotlinx/coroutines/scheduling/ExperimentalCoroutineDispatcher;-><init>(IILjava/lang/String;)V
+HSPLkotlinx/coroutines/scheduling/ExperimentalCoroutineDispatcher;-><init>(IILjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/scheduling/ExperimentalCoroutineDispatcher;->createScheduler()Lkotlinx/coroutines/scheduling/CoroutineScheduler;
+HSPLkotlinx/coroutines/scheduling/GlobalQueue;-><init>()V
+HSPLkotlinx/coroutines/scheduling/LimitingDispatcher;-><init>(Lkotlinx/coroutines/scheduling/ExperimentalCoroutineDispatcher;ILjava/lang/String;I)V
+HSPLkotlinx/coroutines/scheduling/NanoTimeSource;-><init>()V
+HSPLkotlinx/coroutines/scheduling/NonBlockingContext;-><init>()V
+HSPLkotlinx/coroutines/scheduling/NonBlockingContext;->afterTask()V
+HSPLkotlinx/coroutines/scheduling/SchedulerTimeSource;-><init>()V
+HSPLkotlinx/coroutines/scheduling/Task;-><init>()V
+HSPLkotlinx/coroutines/scheduling/Task;-><init>(JLkotlinx/coroutines/scheduling/TaskContext;)V
+HSPLkotlinx/coroutines/sync/Empty;-><init>(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->lock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->tryLock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;ILjava/lang/Object;)Z
+HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->unlock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/MutexImpl$LockCont$tryResumeLockWaiter$1;-><init>(Lkotlinx/coroutines/sync/MutexImpl$LockCont;)V
+HSPLkotlinx/coroutines/sync/MutexImpl$LockCont;-><init>(Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;Lkotlinx/coroutines/CancellableContinuation;)V
+HSPLkotlinx/coroutines/sync/MutexImpl$LockCont;->completeResumeLockWaiter(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/MutexImpl$LockCont;->tryResumeLockWaiter()Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/MutexImpl$LockWaiter;-><init>(Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/MutexImpl$LockedQueue;-><init>(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/MutexImpl$lockSuspend$$inlined$suspendCancellableCoroutineReusable$lambda$2;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Ljava/lang/Object;Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/sync/MutexImpl$LockCont;Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/MutexImpl$lockSuspend$$inlined$suspendCancellableCoroutineReusable$lambda$2;->prepare(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/MutexImpl$lockSuspend$$inlined$suspendCancellableCoroutineReusable$lambda$2;->prepare(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/MutexImpl;-><init>(Z)V
+HSPLkotlinx/coroutines/sync/MutexImpl;->lock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/MutexImpl;->lockSuspend(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/MutexImpl;->tryLock(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/sync/MutexImpl;->unlock(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/MutexKt;->Mutex$default(ZILjava/lang/Object;)Lkotlinx/coroutines/sync/Mutex;
+HSPLkotlinx/coroutines/sync/MutexKt;->Mutex(Z)Lkotlinx/coroutines/sync/Mutex;
+HSPLkotlinx/coroutines/sync/MutexKt;->access$getEMPTY_LOCKED$p()Lkotlinx/coroutines/sync/Empty;
+HSPLkotlinx/coroutines/sync/MutexKt;->access$getEMPTY_UNLOCKED$p()Lkotlinx/coroutines/sync/Empty;
+HSPLkotlinx/coroutines/sync/MutexKt;->access$getLOCKED$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/sync/MutexKt;->access$getUNLOCKED$p()Lkotlinx/coroutines/internal/Symbol;
\ No newline at end of file
diff --git a/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/ViewCapture.android.kt b/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/ViewCapture.android.kt
index 6dec162..e03df74 100644
--- a/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/ViewCapture.android.kt
+++ b/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/ViewCapture.android.kt
@@ -134,4 +134,4 @@
     ) {
         PixelCopy.request(source, srcRect, dest, listener, listenerThread)
     }
-}
\ No newline at end of file
+}
diff --git a/compose/ui/ui-geometry/src/androidMain/baseline-prof.txt b/compose/ui/ui-geometry/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..f737387
--- /dev/null
+++ b/compose/ui/ui-geometry/src/androidMain/baseline-prof.txt
@@ -0,0 +1,5 @@
+# Baseline profile rules for androidx.compose.ui.geometry
+# =============================================
+# All of geometry is highly used, small, and mathy, so we include everything
+HSPLandroidx/compose/ui/geometry/*->**(**)**
+Landroidx/compose/ui/geometry/*;
\ No newline at end of file
diff --git a/compose/ui/ui-graphics/src/androidMain/baseline-prof.txt b/compose/ui/ui-graphics/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..7952c8a
--- /dev/null
+++ b/compose/ui/ui-graphics/src/androidMain/baseline-prof.txt
@@ -0,0 +1,71 @@
+# Baseline profile rules for androidx.compose.ui.graphics
+# =============================================
+HSPLandroidx/compose/ui/graphics/AndroidCanvas**->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidColorFilter_androidKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidPath;->**(**)**
+HSPLandroidx/compose/ui/graphics/AndroidPath_androidKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/BlendMode**->**(**)**
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier**->**(**)**
+HSPLandroidx/compose/ui/graphics/Brush;->**(**)**
+HSPLandroidx/compose/ui/graphics/Canvas$DefaultImpls;->**(**)**
+HSPLandroidx/compose/ui/graphics/CanvasHolder;->**(**)**
+HSPLandroidx/compose/ui/graphics/CanvasKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/ClipOp**->**(**)**
+HSPLandroidx/compose/ui/graphics/Color**->**(**)**
+HSPLandroidx/compose/ui/graphics/ColorFilter**->**(**)**
+HSPLandroidx/compose/ui/graphics/ColorKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/Float16**->**(**)**
+HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/Matrix;->**(**)**
+HSPLandroidx/compose/ui/graphics/ImageBitmapConfig**->**(**)**
+HSPLandroidx/compose/ui/graphics/MatrixKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/Outline**->**(**)**
+HSPLandroidx/compose/ui/graphics/PaintingStyle**->**(**)**
+HSPLandroidx/compose/ui/graphics/PathFillType**->**(**)**
+HSPLandroidx/compose/ui/graphics/RectangleShapeKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/RectHelper_androidKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->**(**)**
+HSPLandroidx/compose/ui/graphics/Shadow;->**(**)**
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier**->**(**)**
+HSPLandroidx/compose/ui/graphics/SolidColor;->**(**)**
+HSPLandroidx/compose/ui/graphics/StrokeCap**->**(**)**
+HSPLandroidx/compose/ui/graphics/StrokeJoin**->**(**)**
+HSPLandroidx/compose/ui/graphics/TransformOrigin**->**(**)**
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;->**(**)**
+HSPLandroidx/compose/ui/graphics/painter/Painter**->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/DrawCache;->**(**)**
+#
+# All of colorspace
+HSPLandroidx/compose/ui/graphics/colorspace/**->**(**)**
+#
+# All of drawscope
+HSPLandroidx/compose/ui/graphics/drawscope/**->**(**)**
+#
+# Vector stuff
+HSPLandroidx/compose/ui/graphics/vector/DefaultVectorOverride;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/DrawCache;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/GroupComponent;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/ImageVector**->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/PathBuilder;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/PathComponent;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/PathNode**->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/PathParser**->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/Stack;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VNode;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VectorApplier;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VectorComponent;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VectorComposeKt**->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VectorGroup;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VectorKt;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VectorPainter**->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/VectorPath;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/compat/AndroidVectorResources;->**(**)**
+HSPLandroidx/compose/ui/graphics/vector/compat/XmlVectorParser_androidKt;->**(**)**
+#
+# Assume ~all classes will get loaded
+Landroidx/compose/ui/graphics/**;
\ No newline at end of file
diff --git a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorFilter.android.kt b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorFilter.android.kt
index 8a24632..9287c0f 100644
--- a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorFilter.android.kt
+++ b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/AndroidColorFilter.android.kt
@@ -55,4 +55,4 @@
     fun BlendModeColorFilter(color: Color, blendMode: BlendMode): BlendModeColorFilter {
         return BlendModeColorFilter(color.toArgb(), blendMode.toAndroidBlendMode())
     }
-}
\ No newline at end of file
+}
diff --git a/compose/ui/ui-text/src/androidMain/baseline-prof.txt b/compose/ui/ui-text/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..13ae261
--- /dev/null
+++ b/compose/ui/ui-text/src/androidMain/baseline-prof.txt
@@ -0,0 +1,107 @@
+# Baseline profile rules for androidx.compose.ui.text
+# =============================================
+HSPLandroidx/compose/ui/text/AnnotatedString**->**(**)**
+HSPLandroidx/compose/ui/text/MultiParagraph;->**(**)**
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics**->**(**)**
+HSPLandroidx/compose/ui/text/ParagraphInfo;->**(**)**
+HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->**(**)**
+HSPLandroidx/compose/ui/text/ParagraphStyle;->**(**)**
+HSPLandroidx/compose/ui/text/ParagraphKt;->**(**)**
+HSPLandroidx/compose/ui/text/SpanStyle;->**(**)**
+HSPLandroidx/compose/ui/text/TextLayoutInput;->**(**)**
+HSPLandroidx/compose/ui/text/TextLayoutResult;->**(**)**
+HSPLandroidx/compose/ui/text/TextPainter;->**(**)**
+HSPLandroidx/compose/ui/text/TextRange**->**(**)**
+HSPLandroidx/compose/ui/text/TextStyle**->**(**)**
+HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->**(**)**
+HSPLandroidx/compose/ui/text/android/CharSequenceCharacterIterator;->**(**)**
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics**->**(**)**
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory**->**(**)**
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->**(**)**
+HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->**(**)**
+HSPLandroidx/compose/ui/text/android/TextLayout;->**(**)**
+HSPLandroidx/compose/ui/text/android/style/BaselineShiftSpan;->**(**)**
+HSPLandroidx/compose/ui/text/android/style/LetterSpacingSpanPx;->**(**)**
+HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;->**(**)**
+HSPLandroidx/compose/ui/text/android/style/TypefaceSpan;->**(**)**
+HSPLandroidx/compose/ui/text/font/DefaultFontFamily;->**(**)**
+HSPLandroidx/compose/ui/text/font/FileBasedFontFamily;->**(**)**
+HSPLandroidx/compose/ui/text/font/FontFamily**->**(**)**
+HSPLandroidx/compose/ui/text/font/FontKt;->**(**)**
+HSPLandroidx/compose/ui/text/font/FontListFontFamily;->**(**)**
+HSPLandroidx/compose/ui/text/font/FontMatcher;->**(**)**
+HSPLandroidx/compose/ui/text/font/FontStyle;->**(**)**
+HSPLandroidx/compose/ui/text/font/FontWeight**->**(**)**
+HSPLandroidx/compose/ui/text/font/GenericFontFamily;->**(**)**
+HSPLandroidx/compose/ui/text/font/ResourceFont;->**(**)**
+HSPLandroidx/compose/ui/text/font/SystemFontFamily;->**(**)**
+HSPLandroidx/compose/ui/text/input/EditProcessor;->**(**)**
+HSPLandroidx/compose/ui/text/input/EditingBuffer;->**(**)**
+HSPLandroidx/compose/ui/text/input/ImeAction**->**(**)**
+HSPLandroidx/compose/ui/text/input/ImeOptions**->**(**)**
+HSPLandroidx/compose/ui/text/input/KeyboardType**->**(**)**
+HSPLandroidx/compose/ui/text/input/TextFieldValue;->**(**)**
+HSPLandroidx/compose/ui/text/input/TextInputService**->**(**)**
+HSPLandroidx/compose/ui/text/input/TransformedText;->**(**)**
+HSPLandroidx/compose/ui/text/intl/AndroidLocale**->**(**)**
+HSPLandroidx/compose/ui/text/intl/Locale**->**(**)**
+HSPLandroidx/compose/ui/text/platform/AndroidParagraph;->**(**)**
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->**(**)**
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->**(**)**
+HSPLandroidx/compose/ui/text/platform/AndroidParagraph_androidKt;->**(**)**
+HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->**(**)**
+HSPLandroidx/compose/ui/text/platform/TypefaceAdapter;->**(**)**
+HSPLandroidx/compose/ui/text/platform/TypefaceAdapterHelperMethods;->**(**)**
+HSPLandroidx/compose/ui/text/platform/extensions/SpanRange;->**(**)**
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->**(**)**
+HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->**(**)**
+HSPLandroidx/compose/ui/text/style/BaselineShift**->**(**)**
+HSPLandroidx/compose/ui/text/style/ResolvedTextDirection;->**(**)**
+HSPLandroidx/compose/ui/text/style/TextAlign;->**(**)**
+HSPLandroidx/compose/ui/text/style/TextDecoration;->**(**)**
+HSPLandroidx/compose/ui/text/style/TextDirection;->**(**)**
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->**(**)**
+HSPLandroidx/compose/ui/text/style/TextIndent;->**(**)**
+Landroidx/compose/ui/text/**
+#
+# We rely heavily on some text methods in kotlin stdlib, so makes sense to include them here
+HSPLkotlin/text/CharsKt__CharJVMKt;->isWhitespace(C)Z
+HSPLkotlin/text/MatcherMatchResult$groups$1;-><init>(Lkotlin/text/MatcherMatchResult;)V
+HSPLkotlin/text/MatcherMatchResult;-><init>(Ljava/util/regex/Matcher;Ljava/lang/CharSequence;)V
+HSPLkotlin/text/MatcherMatchResult;->getMatchResult()Ljava/util/regex/MatchResult;
+HSPLkotlin/text/MatcherMatchResult;->getRange()Lkotlin/ranges/IntRange;
+HSPLkotlin/text/MatcherMatchResult;->getValue()Ljava/lang/String;
+HSPLkotlin/text/MatcherMatchResult;->next()Lkotlin/text/MatchResult;
+HSPLkotlin/text/Regex$Companion;-><init>()V
+HSPLkotlin/text/Regex$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/text/Regex$findAll$1;-><init>(Lkotlin/text/Regex;Ljava/lang/CharSequence;I)V
+HSPLkotlin/text/Regex$findAll$1;->invoke()Ljava/lang/Object;
+HSPLkotlin/text/Regex$findAll$1;->invoke()Lkotlin/text/MatchResult;
+HSPLkotlin/text/Regex$findAll$2;-><init>()V
+HSPLkotlin/text/Regex$findAll$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/text/Regex$findAll$2;->invoke(Lkotlin/text/MatchResult;)Lkotlin/text/MatchResult;
+HSPLkotlin/text/Regex;-><init>(Ljava/lang/String;)V
+HSPLkotlin/text/Regex;-><init>(Ljava/util/regex/Pattern;)V
+HSPLkotlin/text/Regex;->find(Ljava/lang/CharSequence;I)Lkotlin/text/MatchResult;
+HSPLkotlin/text/Regex;->findAll$default(Lkotlin/text/Regex;Ljava/lang/CharSequence;IILjava/lang/Object;)Lkotlin/sequences/Sequence;
+HSPLkotlin/text/Regex;->findAll(Ljava/lang/CharSequence;I)Lkotlin/sequences/Sequence;
+HSPLkotlin/text/RegexKt;->access$findNext(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Lkotlin/text/MatchResult;
+HSPLkotlin/text/RegexKt;->access$range(Ljava/util/regex/MatchResult;)Lkotlin/ranges/IntRange;
+HSPLkotlin/text/RegexKt;->findNext(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Lkotlin/text/MatchResult;
+HSPLkotlin/text/RegexKt;->range(Ljava/util/regex/MatchResult;)Lkotlin/ranges/IntRange;
+HSPLkotlin/text/StringsKt__StringsJVMKt;->endsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
+HSPLkotlin/text/StringsKt__StringsJVMKt;->endsWith(Ljava/lang/String;Ljava/lang/String;Z)Z
+HSPLkotlin/text/StringsKt__StringsJVMKt;->isBlank(Ljava/lang/CharSequence;)Z
+HSPLkotlin/text/StringsKt__StringsJVMKt;->repeat(Ljava/lang/CharSequence;I)Ljava/lang/String;
+HSPLkotlin/text/StringsKt__StringsKt;->endsWith$default(Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z
+HSPLkotlin/text/StringsKt__StringsKt;->endsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z
+HSPLkotlin/text/StringsKt__StringsKt;->getIndices(Ljava/lang/CharSequence;)Lkotlin/ranges/IntRange;
+HSPLkotlin/text/StringsKt__StringsKt;->getLastIndex(Ljava/lang/CharSequence;)I
+HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf$default(Ljava/lang/CharSequence;CIZILjava/lang/Object;)I
+HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf(Ljava/lang/CharSequence;CIZ)I
+HSPLkotlin/text/StringsKt__StringsKt;->substring(Ljava/lang/String;Lkotlin/ranges/IntRange;)Ljava/lang/String;
+HSPLkotlin/text/StringsKt__StringsKt;->substringAfterLast$default(Ljava/lang/String;CLjava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
+HSPLkotlin/text/StringsKt__StringsKt;->substringAfterLast(Ljava/lang/String;CLjava/lang/String;)Ljava/lang/String;
+HSPLkotlin/text/StringsKt__StringsKt;->trim(Ljava/lang/String;[C)Ljava/lang/String;
+HSPLkotlin/text/StringsKt___StringsKt;->first(Ljava/lang/CharSequence;)C
+HSPLkotlin/text/StringsKt___StringsKt;->slice(Ljava/lang/String;Lkotlin/ranges/IntRange;)Ljava/lang/String;
\ No newline at end of file
diff --git a/compose/ui/ui-unit/src/androidMain/baseline-prof.txt b/compose/ui/ui-unit/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..860e61e
--- /dev/null
+++ b/compose/ui/ui-unit/src/androidMain/baseline-prof.txt
@@ -0,0 +1,5 @@
+# Baseline profile rules for androidx.compose.ui.unit
+# =============================================
+# everything in unit is relatively small and in the hot path, so we just add everything
+HSPLandroidx/compose/ui/unit/**->**(**)**
+Landroidx/compose/ui/unit/**;
\ No newline at end of file
diff --git a/compose/ui/ui-util/src/androidMain/baseline-prof.txt b/compose/ui/ui-util/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..21a0cfc
--- /dev/null
+++ b/compose/ui/ui-util/src/androidMain/baseline-prof.txt
@@ -0,0 +1,4 @@
+# Baseline profile rules for androidx.compose.ui.util
+# =============================================
+HSPLandroidx/compose/ui/util/MathHelpersKt;->lerp(FFF)F
+Landroidx/compose/ui/util/MathHelpersKt;
\ No newline at end of file
diff --git a/compose/ui/ui/src/androidMain/baseline-prof.txt b/compose/ui/ui/src/androidMain/baseline-prof.txt
new file mode 100644
index 0000000..f1c9338
--- /dev/null
+++ b/compose/ui/ui/src/androidMain/baseline-prof.txt
@@ -0,0 +1,96 @@
+# Baseline profile rules for androidx.compose.ui
+# =============================================
+#
+# nested scroll
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDelegatingWrapper;->**(**)**
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher**->**(**)**
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifier**->**(**)**
+#
+# pointer input
+HSPLandroidx/compose/ui/input/pointer/ConsumedData;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/HitPathTracker;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter_androidKt;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/Node;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/NodeParent;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerEvent;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerEventKt;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerId;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInputChange;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer**->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInputEvent;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInputEventData;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInputModifier$DefaultImpls;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerInteropFilter**->**(**)**
+HSPLandroidx/compose/ui/input/pointer/RequestDisallowInterceptTouchEvent;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/ProcessResult;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/PointerType;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter**->**(**)**
+HSPLandroidx/compose/ui/input/pointer/util/Matrix;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/util/PointAtTime;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/util/PolynomialFit;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/util/Vector;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/util/VelocityEstimate;->**(**)**
+HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;->**(**)**
+#
+# layout. include everything
+HSPLandroidx/compose/ui/layout/**->**(**)**
+#
+# node. include everything
+HSPLandroidx/compose/ui/node/**->**(**)**
+#
+# platform
+HSPLandroidx/compose/ui/platform/AndroidComposeView**->**(**)**
+HSPLandroidx/compose/ui/platform/AbstractComposeView**->**(**)**
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->**(**)**
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt**->**(**)**
+HSPLandroidx/compose/ui/platform/AndroidFontResourceLoader;->**(**)**
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher**->**(**)**
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock**->**(**)**
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt**->**(**)**
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->**(**)**
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt**->**(**)**
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager**->**(**)**
+HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;-><init>()V
+HSPLandroidx/compose/ui/platform/InspectableValueKt;->getNoInspectorInfo()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/platform/InspectableValueKt;->isDebugInspectorInfoEnabled()Z
+HSPLandroidx/compose/ui/platform/InspectorValueInfo;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->**(**)**
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->**(**)**
+HSPLandroidx/compose/ui/platform/OutlineResolver;->**(**)**
+HSPLandroidx/compose/ui/platform/RenderNodeMatrixCache;->**(**)**
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy**->**(**)**
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt**->**(**)**
+HSPLandroidx/compose/ui/platform/WrappedComposition**->**(**)**
+HSPLandroidx/compose/ui/res/StringResources_androidKt;->**(**)**
+HSPLandroidx/compose/ui/res/PainterResources_androidKt;->**(**)**
+HSPLandroidx/compose/ui/res/ImageResources_androidKt;->**(**)**
+#
+# semantics
+HSPLandroidx/compose/ui/semantics/AccessibilityAction;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsActions;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsModifier$DefaultImpls;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore$Companion;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsModifierKt**->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsNode;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsProperties**->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt**->**(**)**
+HSPLandroidx/compose/ui/semantics/SemanticsWrapper;->**(**)**
+#
+# res
+HSPLandroidx/compose/ui/res/StringResources_androidKt;->**(**)**
+HSPLandroidx/compose/ui/res/PainterResources_androidKt;->**(**)**
+HSPLandroidx/compose/ui/res/ImageResources_androidKt;->**(**)**
+HSPLandroidx/compose/ui/BiasAlignment**->**(**)**
+HSPLandroidx/compose/ui/Alignment**->**(**)**
+#
+# root level things
+HSPLandroidx/compose/ui/Modifier**->**(**)**
+HSPLandroidx/compose/ui/ComposedModifier**->**(**)**
\ No newline at end of file
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
index 7bf3dd9..6c7d385 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
@@ -30,8 +30,11 @@
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.IntSize
 import org.jetbrains.skija.Data
-import org.jetbrains.skija.Point
 import org.jetbrains.skija.svg.SVGDOM
+import org.jetbrains.skija.svg.SVGLength
+import org.jetbrains.skija.svg.SVGLengthUnit
+import org.jetbrains.skija.svg.SVGPreserveAspectRatio
+import org.jetbrains.skija.svg.SVGPreserveAspectRatioAlign
 import java.io.InputStream
 import kotlin.math.ceil
 
@@ -66,15 +69,18 @@
 }
 
 private class SVGPainter(
-    private val SVGDOM: SVGDOM,
+    private val dom: SVGDOM,
     private val density: Density
 ) : Painter() {
+    private val root = dom.root
+
     private val defaultSizePx: Size = run {
-        val containerSize = SVGDOM.containerSize
-        if (containerSize.x == 0f && containerSize.y == 0f) {
+        val width = root?.width?.withUnit(SVGLengthUnit.PX)?.value ?: 0f
+        val height = root?.height?.withUnit(SVGLengthUnit.PX)?.value ?: 0f
+        if (width == 0f && height == 0f) {
             Size.Unspecified
         } else {
-            Size(containerSize.x, containerSize.y)
+            Size(width, height)
         }
     }
 
@@ -118,9 +124,11 @@
     }
 
     private fun DrawScope.drawSvg(size: Size) {
-        drawIntoCanvas {
-            SVGDOM.containerSize = Point(size.width, size.height)
-            SVGDOM.render(it.nativeCanvas)
+        drawIntoCanvas { canvas ->
+            root?.width = SVGLength(size.width, SVGLengthUnit.PX)
+            root?.height = SVGLength(size.height, SVGLengthUnit.PX)
+            root?.preserveAspectRatio = SVGPreserveAspectRatio(SVGPreserveAspectRatioAlign.NONE)
+            dom.render(canvas.nativeCanvas)
         }
     }
 }
\ No newline at end of file
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/TestUtils.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/TestUtils.kt
new file mode 100644
index 0000000..d32a665
--- /dev/null
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/TestUtils.kt
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2021 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
+
+private val os = System.getProperty("os.name").lowercase()
+internal val isLinux = os.startsWith("linux")
+internal val isWindows = os.startsWith("win")
+internal val isMacOs = os.startsWith("mac")
\ No newline at end of file
diff --git a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/res/DesktopSvgResourcesTest.kt b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/res/DesktopSvgResourcesTest.kt
index ee37c55..f4cc9bd 100644
--- a/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/res/DesktopSvgResourcesTest.kt
+++ b/compose/ui/ui/src/desktopTest/kotlin/androidx/compose/ui/res/DesktopSvgResourcesTest.kt
@@ -17,15 +17,18 @@
 package androidx.compose.ui.res
 
 import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.size
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.isLinux
+import androidx.compose.ui.isWindows
+import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.platform.TestComposeWindow
 import androidx.compose.ui.test.junit4.DesktopScreenshotTestRule
 import androidx.compose.ui.unit.dp
 import org.junit.Assume.assumeTrue
 import org.junit.Rule
 import org.junit.Test
-import java.util.Locale
 
 class DesktopSvgResourcesTest {
     @get:Rule
@@ -33,7 +36,7 @@
 
     @Test
     fun `load SVG with specified size`() {
-        assumeLinuxOrWindows()
+        assumeTrue(isLinux || isWindows)
 
         val window = TestComposeWindow(width = 200, height = 200)
         window.setContent {
@@ -47,9 +50,9 @@
 
     @Test
     fun `load SVG with unspecified size`() {
-        assumeLinuxOrWindows()
+        assumeTrue(isLinux || isWindows)
 
-        val window = TestComposeWindow(width = 200, height = 300)
+        val window = TestComposeWindow(width = 200, height = 200)
         window.setContent {
             Image(
                 svgResource("androidx/compose/ui/res/star-size-unspecified.svg"),
@@ -60,13 +63,27 @@
     }
 
     @Test
-    fun `load SVG with custom size`() {
-        assumeLinuxOrWindows()
+    fun `load SVG with unspecified viewbox`() {
+        assumeTrue(isLinux || isWindows)
 
         val window = TestComposeWindow(width = 200, height = 200)
         window.setContent {
             Image(
-                svgResource("androidx/compose/ui/res/star-size-unspecified.svg"),
+                svgResource("androidx/compose/ui/res/star-viewbox-unspecified.svg"),
+                contentDescription = "Star"
+            )
+        }
+        screenshotRule.snap(window.surface)
+    }
+
+    @Test
+    fun `load SVG with custom size`() {
+        assumeTrue(isLinux || isWindows)
+
+        val window = TestComposeWindow(width = 200, height = 200)
+        window.setContent {
+            Image(
+                svgResource("androidx/compose/ui/res/star-size-100.svg"),
                 contentDescription = "Star",
                 modifier = Modifier.size(50.dp)
             )
@@ -74,8 +91,19 @@
         screenshotRule.snap(window.surface)
     }
 
-    private fun assumeLinuxOrWindows() {
-        val os = System.getProperty("os.name").lowercase(Locale.US)
-        assumeTrue(os.startsWith("linux") || os.startsWith("win"))
+    @Test
+    fun `load SVG and fill bounds`() {
+        assumeTrue(isLinux || isWindows)
+
+        val window = TestComposeWindow(width = 200, height = 300)
+        window.setContent {
+            Image(
+                svgResource("androidx/compose/ui/res/star-size-100.svg"),
+                contentDescription = "Star",
+                contentScale = ContentScale.FillBounds,
+                modifier = Modifier.fillMaxSize()
+            )
+        }
+        screenshotRule.snap(window.surface)
     }
 }
\ No newline at end of file
diff --git a/compose/ui/ui/src/desktopTest/resources/androidx/compose/ui/res/star-viewbox-unspecified.svg b/compose/ui/ui/src/desktopTest/resources/androidx/compose/ui/res/star-viewbox-unspecified.svg
new file mode 100644
index 0000000..946a744
--- /dev/null
+++ b/compose/ui/ui/src/desktopTest/resources/androidx/compose/ui/res/star-viewbox-unspecified.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg" width="100" height="100" version="1.1"
+    id="svg8">
+  <defs
+     id="defs2" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,-197)"
+     id="layer1">
+    <path
+       id="path3703"
+       d="M 50.000001,197 59.567086,223.90301 85.35534,211.64466 73.096987,237.43292 100,247 73.096986,256.56709 85.355338,282.35534 59.567084,270.09699 49.999999,297 40.432914,270.09699 14.64466,282.35534 26.903013,256.56708 0,247 26.903014,237.43291 14.644662,211.64466 40.432916,223.90301 Z"
+       style="fill:#ff5555;stroke-width:0.21590135" />
+  </g>
+</svg>
diff --git a/core/core/api/current.txt b/core/core/api/current.txt
index 6f6ac82..9daf595 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -988,8 +988,12 @@
   }
 
   public final class IntentCompat {
+    method public static boolean areUnusedAppRestrictionsAllowlisted(android.content.Context);
+    method public static boolean areUnusedAppRestrictionsAvailable(android.content.Context);
+    method public static android.content.Intent makeIntentToAllowlistUnusedAppRestrictions(android.content.Context, String);
     method public static android.content.Intent makeMainSelectorActivity(String, String);
     field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+    field public static final String ACTION_UNUSED_APP_RESTRICTIONS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
diff --git a/core/core/api/public_plus_experimental_current.txt b/core/core/api/public_plus_experimental_current.txt
index c70a4319..3ab1f4d 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -988,8 +988,12 @@
   }
 
   public final class IntentCompat {
+    method public static boolean areUnusedAppRestrictionsAllowlisted(android.content.Context);
+    method public static boolean areUnusedAppRestrictionsAvailable(android.content.Context);
+    method public static android.content.Intent makeIntentToAllowlistUnusedAppRestrictions(android.content.Context, String);
     method public static android.content.Intent makeMainSelectorActivity(String, String);
     field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+    field public static final String ACTION_UNUSED_APP_RESTRICTIONS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index 8b57a96..7b2d5de 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -1091,8 +1091,12 @@
   }
 
   public final class IntentCompat {
+    method public static boolean areUnusedAppRestrictionsAllowlisted(android.content.Context);
+    method public static boolean areUnusedAppRestrictionsAvailable(android.content.Context);
+    method public static android.content.Intent makeIntentToAllowlistUnusedAppRestrictions(android.content.Context, String);
     method public static android.content.Intent makeMainSelectorActivity(String, String);
     field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+    field public static final String ACTION_UNUSED_APP_RESTRICTIONS = "android.intent.action.AUTO_REVOKE_PERMISSIONS";
     field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
     field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
     field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
diff --git a/core/core/build.gradle b/core/core/build.gradle
index 7bb73ff..fe66457 100644
--- a/core/core/build.gradle
+++ b/core/core/build.gradle
@@ -21,6 +21,7 @@
     // We don't ship this as a public artifact, so it must remain a project-type dependency.
     annotationProcessor(project(":versionedparcelable:versionedparcelable-compiler"))
 
+    androidTestImplementation("junit:junit:4.13")
     androidTestImplementation(libs.kotlinStdlib)
     androidTestImplementation(libs.testExtJunit)
     androidTestImplementation(libs.testCore)
@@ -44,6 +45,7 @@
     })
     androidTestImplementation(project(":internal-testutils-mockito"))
 
+    testImplementation("junit:junit:4.13")
     testImplementation(libs.testCore)
     testImplementation(libs.testRunner)
     testImplementation(libs.truth)
diff --git a/core/core/src/androidTest/java/androidx/core/content/IntentCompatTest.java b/core/core/src/androidTest/java/androidx/core/content/IntentCompatTest.java
new file mode 100644
index 0000000..355a92f
--- /dev/null
+++ b/core/core/src/androidTest/java/androidx/core/content/IntentCompatTest.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright 2021 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.core.content;
+
+import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;
+import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1;
+import static android.os.Build.VERSION_CODES.LOLLIPOP;
+import static android.os.Build.VERSION_CODES.M;
+import static android.os.Build.VERSION_CODES.Q;
+import static android.os.Build.VERSION_CODES.R;
+import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertThrows;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SdkSuppress;
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+/** Tests for {@link IntentCompat}. */
+public class IntentCompatTest {
+
+    private Context mContext;
+    private PackageManager mPackageManager = mock(PackageManager.class);
+    private static final String SYSTEM_APP_PACKAGE_NAME = "system.app";
+
+    @Before
+    public void setUp() {
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+    }
+
+    @Test
+    @SdkSuppress(maxSdkVersion = ICE_CREAM_SANDWICH)
+    public void makeMainSelectorActivity_preApi14() {
+        String selectorAction = Intent.ACTION_MAIN;
+        String selectorCategory = Intent.CATEGORY_APP_BROWSER;
+
+        Intent activityIntent = IntentCompat.makeMainSelectorActivity(selectorAction,
+                selectorCategory);
+
+        assertThat(activityIntent.getAction()).isEqualTo(selectorAction);
+        assertThat(activityIntent.getCategories()).containsExactly(selectorCategory);
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = ICE_CREAM_SANDWICH_MR1)
+    public void makeMainSelectorActivity() {
+        String selectorAction = Intent.ACTION_MAIN;
+        String selectorCategory = Intent.CATEGORY_APP_BROWSER;
+
+        Intent activityIntent = IntentCompat.makeMainSelectorActivity(selectorAction,
+                selectorCategory);
+
+        Intent expectedIntent = Intent.makeMainSelectorActivity(selectorAction,
+                selectorCategory);
+        assertThat(activityIntent.filterEquals(expectedIntent)).isTrue();
+    }
+
+    @Test
+    // TODO: replace with VERSION_CODES.S once it's defined
+    @SdkSuppress(minSdkVersion = 31)
+    public void makeIntentToAllowlistUnusedAppRestrictions_api31Plus() {
+        String packageName = "package.name";
+        Intent activityIntent = IntentCompat.makeIntentToAllowlistUnusedAppRestrictions(
+                mContext, packageName);
+
+        assertThat(activityIntent.getAction()).isEqualTo(ACTION_APPLICATION_DETAILS_SETTINGS);
+        assertThat(activityIntent.getData()).isEqualTo(Uri.parse(packageName));
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = R, maxSdkVersion = R)
+    public void makeIntentToAllowlistUnusedAppRestrictions_api30() {
+        String packageName = "package.name";
+        Intent activityIntent = IntentCompat.makeIntentToAllowlistUnusedAppRestrictions(
+                mContext, packageName);
+
+        assertThat(activityIntent.getAction())
+                .isEqualTo("android.intent.action.AUTO_REVOKE_PERMISSIONS");
+        assertThat(activityIntent.getData()).isEqualTo(Uri.parse(packageName));
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = M, maxSdkVersion = Q)
+    public void makeIntentToAllowlistUnusedAppRestrictions_preApi30_revocationSystemAppNotExists() {
+        // Don't install a system app that can resolve the permission auto-revocation intent
+
+        assertThrows(UnsupportedOperationException.class,
+                () -> IntentCompat.makeIntentToAllowlistUnusedAppRestrictions(
+                mContext, "package.name"));
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = M, maxSdkVersion = Q)
+    public void makeIntentToAllowlistUnusedAppRestrictions_preApi30_revocationSystemAppExists() {
+        setupPermissionRevocationSystemApp(SYSTEM_APP_PACKAGE_NAME);
+        Intent activityIntent = IntentCompat.makeIntentToAllowlistUnusedAppRestrictions(
+                mContext, "package.name");
+
+        assertThat(activityIntent.getAction()).isEqualTo(
+                "android.intent.action.AUTO_REVOKE_PERMISSIONS");
+        assertThat(activityIntent.getPackage()).isEqualTo(SYSTEM_APP_PACKAGE_NAME);
+    }
+
+    @Test
+    @SdkSuppress(maxSdkVersion = LOLLIPOP)
+    public void makeIntentToAllowlistUnusedAppRestrictions_preApi23() {
+        assertThrows(UnsupportedOperationException.class,
+                () -> IntentCompat.makeIntentToAllowlistUnusedAppRestrictions(
+                        mContext, "package.name"));
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = R)
+    public void areUnusedAppRestrictionsAvailable_api30Plus_returnsTrue() {
+        assertThat(IntentCompat.areUnusedAppRestrictionsAvailable(mContext)).isTrue();
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = M, maxSdkVersion = Q)
+    public void areUnusedAppRestrictionsAvailable_preApi30_noRevocationSystemApps_returnsFalse() {
+        // Don't install a system app that can resolve the permission auto-revocation intent
+
+        assertThat(IntentCompat.areUnusedAppRestrictionsAvailable(mContext)).isFalse();
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = M, maxSdkVersion = Q)
+    public void areUnusedAppRestrictionsAvailable_preApi30_revocationSystemApp_returnsTrue() {
+        setupPermissionRevocationSystemApp(SYSTEM_APP_PACKAGE_NAME);
+
+        assertThat(IntentCompat.areUnusedAppRestrictionsAvailable(mContext)).isTrue();
+    }
+
+    @Test
+    @SdkSuppress(maxSdkVersion = LOLLIPOP)
+    public void areUnusedAppRestrictionsAvailable_preApi23_returnsFalse() {
+        assertThat(IntentCompat.areUnusedAppRestrictionsAvailable(mContext)).isFalse();
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = R)
+    public void areUnusedAppRestrictionsAllowlisted_api30Plus_returnsPackageManagerAllowlisted() {
+        when(mPackageManager.isAutoRevokeWhitelisted()).thenReturn(true);
+
+        assertThat(IntentCompat.areUnusedAppRestrictionsAllowlisted(mContext)).isTrue();
+    }
+
+    @Test
+    @SdkSuppress(minSdkVersion = M, maxSdkVersion = Q)
+    public void areUnusedAppRestrictionsAllowlisted_preApi30_returnsFalse() {
+        assertThat(IntentCompat.areUnusedAppRestrictionsAllowlisted(mContext)).isFalse();
+    }
+
+    @Test
+    @SdkSuppress(maxSdkVersion = LOLLIPOP)
+    public void areUnusedAppRestrictionsAllowlisted_preApi23_returnsFalse() {
+        assertThat(IntentCompat.areUnusedAppRestrictionsAllowlisted(mContext)).isFalse();
+    }
+
+    /**
+     * Setup an application that can handle unused app restriction features. In this case, this is
+     * a permission revocation system app.
+     */
+    private void setupPermissionRevocationSystemApp(String packageName) {
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = 12345;
+        appInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+        appInfo.packageName = packageName;
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = packageName;
+        activityInfo.name = "Name needed to keep toString() happy :)";
+        activityInfo.applicationInfo = appInfo;
+
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.activityInfo = activityInfo;
+        resolveInfo.providerInfo = new ProviderInfo();
+        resolveInfo.providerInfo.name = "Name needed to keep toString() happy :)";
+
+        // Mark the application as being able to resolve the intent
+        when(mPackageManager.queryIntentActivities(
+                nullable(Intent.class), eq(PackageManager.MATCH_SYSTEM_ONLY)))
+                .thenReturn(Arrays.asList(resolveInfo));
+    }
+}
diff --git a/core/core/src/androidTest/java/androidx/core/view/ContentInfoCompatTest.java b/core/core/src/androidTest/java/androidx/core/view/ContentInfoCompatTest.java
index 5bff89b..74dd573 100644
--- a/core/core/src/androidTest/java/androidx/core/view/ContentInfoCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/view/ContentInfoCompatTest.java
@@ -27,7 +27,6 @@
 
 import androidx.core.util.Predicate;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.FlakyTest;
 import androidx.test.filters.SmallTest;
 
 import org.junit.Test;
@@ -37,12 +36,11 @@
 @RunWith(AndroidJUnit4.class)
 public class ContentInfoCompatTest {
 
-    @FlakyTest(bugId = 190534907)
     @Test
     public void testPartition_multipleItems() throws Exception {
         Uri sampleUri = Uri.parse("content://com.example/path");
         ClipData clip = ClipData.newPlainText("", "Hello");
-        clip.addItem(new ClipData.Item("Hi", "<b>Salut</b>"));
+        clip.addItem(new ClipData.Item("Hi"));
         clip.addItem(new ClipData.Item(sampleUri));
         ContentInfoCompat payload = new ContentInfoCompat.Builder(clip, SOURCE_CLIPBOARD)
                 .setFlags(ContentInfoCompat.FLAG_CONVERT_TO_PLAIN_TEXT)
diff --git a/core/core/src/main/java/androidx/core/content/IntentCompat.java b/core/core/src/main/java/androidx/core/content/IntentCompat.java
index 0dbc0c0..0da1d586 100644
--- a/core/core/src/main/java/androidx/core/content/IntentCompat.java
+++ b/core/core/src/main/java/androidx/core/content/IntentCompat.java
@@ -16,11 +16,20 @@
 
 package androidx.core.content;
 
+import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
+
 import android.annotation.SuppressLint;
+import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
 import android.os.Build;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+
+import java.util.List;
 
 /**
  * Helper for accessing features in {@link android.content.Intent}.
@@ -50,6 +59,14 @@
     public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
 
     /**
+     * Activity action: creates an intent to redirect the user to UI to turn on/off their
+     * unused app restriction settings.
+     */
+    @SuppressLint("ActionValue")
+    public static final String ACTION_UNUSED_APP_RESTRICTIONS =
+            "android.intent.action.AUTO_REVOKE_PERMISSIONS";
+
+    /**
      * A constant String that is associated with the Intent, used with
      * {@link android.content.Intent#ACTION_SEND} to supply an alternative to
      * {@link android.content.Intent#EXTRA_TEXT}
@@ -115,4 +132,146 @@
             return intent;
         }
     }
+
+    /**
+     * Make an Intent to redirect the user to UI to turn on/off their unused app restriction
+     * settings for a particular app (e.g. permission revocation, app hibernation).
+     *
+     * Note: developers must first call {@link #areUnusedAppRestrictionsAvailable} to make sure
+     * that unused app restriction features are available on the device before attempting to create
+     * an intent using this method.
+     *
+     * Compatibility behavior:
+     * <ul>
+     * <li>SDK 31 and above, this method generates an intent with action {@code Intent
+     * .ACTION_APPLICATION_DETAILS_SETTINGS} and {@code packageName} as data.
+     * <li>SDK 30, this method generates an intent with action {@code Intent
+     * .ACTION_AUTO_REVOKE_PERMISSIONS} and {@code packageName} as data.
+     * <li>SDK 23 through 29, if {@link #areUnusedAppRestrictionsAvailable} returns true,
+     * this method will generate an intent with action {@code Intent
+     * .ACTION_AUTO_REVOKE_PERMISSIONS} and the package as the first system app that can
+     * resolve the intent. Otherwise, this method will throw an
+     * {@link UnsupportedOperationException}.
+     * <li>SDK 22 and below, this method will throw an {@link UnsupportedOperationException}
+     * </ul>
+     *
+     * @param context The {@link Context} of the calling application.
+     * @param packageName The package name of the calling application.
+     *
+     * @return Returns a newly created Intent that can be used to launch an activity where users
+     * can enable and disable unused app restrictions for a specific app.
+     */
+    @NonNull
+    public static Intent makeIntentToAllowlistUnusedAppRestrictions(@NonNull Context context,
+            @NonNull String packageName) {
+        if (!areUnusedAppRestrictionsAvailable(context)) {
+            throw new UnsupportedOperationException(
+                    "Unused App Restrictions are not available on this device");
+        }
+
+        // If the OS version is S+, generate the intent using the Application Details Settings
+        // intent action to support compatibility with the App Hibernation feature
+        // TODO: replace with VERSION_CODES.S once it's defined
+        if (Build.VERSION.SDK_INT >= 31) {
+            return new Intent(ACTION_APPLICATION_DETAILS_SETTINGS)
+                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK).setData(Uri.parse(packageName));
+        }
+
+        Intent unusedAppRestrictionsIntent =
+                new Intent(ACTION_UNUSED_APP_RESTRICTIONS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        // If the OS version is R, then just add the package name to the intent.
+        // No need to add any other data or flags, since we're relying on the Android R system
+        // feature.
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+            return unusedAppRestrictionsIntent.setData(Uri.parse(packageName));
+        } else {
+            PackageManager packageManager = context.getPackageManager();
+            // Only allow system apps to resolve the intent.
+            String intentResolverName =
+                    packageManager.queryIntentActivities(
+                            unusedAppRestrictionsIntent, PackageManager.MATCH_SYSTEM_ONLY)
+                        .get(0).activityInfo.packageName;
+            unusedAppRestrictionsIntent.setPackage(intentResolverName);
+            return unusedAppRestrictionsIntent;
+        }
+    }
+
+    /**
+     * Checks to see whether unused app restrictions (e.g. permission revocation, app hibernation)
+     * are available on this device.
+     *
+     * Compatibility behavior:
+     * <ul>
+     * <li>SDK 30 and above, this method always returns {@code true} as unused app restrictions
+     * are built into the Android OS.
+     * <li>SDK 23 through 29, this method checks for a system app that can resolve the {@code
+     * Intent.ACTION_AUTO_REVOKE_PERMISSIONS} intent.
+     * <li>SDK 22 and below, this method always returns {@code false} as runtime permissions did
+     * not exist yet.
+     * </ul>
+     *
+     * @param context The {@link Context} of the calling application.
+     *
+     * @return Returns a boolean indicating whether permission auto-revocation is available on
+     * the device, whether through the Android Operating System or a system app.
+     */
+    public static boolean areUnusedAppRestrictionsAvailable(@NonNull Context context) {
+        // Return false if the Android OS version is before M, because Android M introduced runtime
+        // permissions
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return false;
+
+        // Check that the Android OS version is R+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) return true;
+
+        // Else, check for a system app that can resolve the intent
+        PackageManager packageManager = context.getPackageManager();
+        // Alternatively, check if there's another system app that can resolve the intent.
+        List<ResolveInfo> intentResolvers =
+                packageManager.queryIntentActivities(
+                        new Intent(ACTION_UNUSED_APP_RESTRICTIONS),
+                        PackageManager.MATCH_SYSTEM_ONLY);
+        return !intentResolvers.isEmpty();
+    }
+
+    /**
+     * Checks whether an application is exempt from unused app restrictions (e.g. permission
+     * revocation, app hibernation).
+     *
+     * Compatibility behavior:
+     * <ul>
+     * <li>SDK 30 and above, this method returns the value of {@code PackageManager
+     * .isAutoRevokeWhitelisted}
+     * <li>SDK 23 through 29, this method returns {@code false}.
+     * <li>SDK 22 and below, this method always returns {@code false} as runtime
+     * permissions did not exist yet.
+     * </ul>
+     */
+    public static boolean areUnusedAppRestrictionsAllowlisted(@NonNull Context context) {
+        // Return false if the Android OS version is before M, because Android M introduced runtime
+        // permissions
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return false;
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+            return Api30Impl.areUnusedAppRestrictionsAllowlisted(context);
+        }
+
+        // TODO(b/177234481): Implement the backport behavior of this API
+        return false;
+    }
+
+    /**
+     * We create this static class to avoid Class Verification Failures from referencing a method
+     * only added in Android R.
+     *
+     * <p>Gating references on SDK checks does not address class verification failures, hence the
+     * need for this inner class.
+     */
+    @RequiresApi(Build.VERSION_CODES.R)
+    private static class Api30Impl {
+        private Api30Impl() {}
+        static boolean areUnusedAppRestrictionsAllowlisted(@NonNull Context context) {
+            return context.getPackageManager().isAutoRevokeWhitelisted();
+        }
+    }
 }
diff --git a/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java b/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java
index 74c875b..ce65b9d 100644
--- a/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java
+++ b/core/core/src/main/java/androidx/core/content/pm/ShortcutInfoCompat.java
@@ -879,7 +879,6 @@
         /**
          * Creates a {@link ShortcutInfoCompat} instance.
          */
-        @SuppressLint("UnsafeNewApiCall")
         @NonNull
         public ShortcutInfoCompat build() {
             // Verify the arguments
diff --git a/core/core/src/main/java/androidx/core/graphics/TypefaceCompat.java b/core/core/src/main/java/androidx/core/graphics/TypefaceCompat.java
index 304d94d..379701b 100644
--- a/core/core/src/main/java/androidx/core/graphics/TypefaceCompat.java
+++ b/core/core/src/main/java/androidx/core/graphics/TypefaceCompat.java
@@ -19,7 +19,6 @@
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Typeface;
@@ -43,7 +42,6 @@
 /**
  * Helper for accessing features in {@link Typeface}.
  */
-@SuppressLint("NewApi")  // TODO: Remove this suppression once Q SDK is released.
 public class TypefaceCompat {
     private static final TypefaceCompatBaseImpl sTypefaceCompatImpl;
     static {
diff --git a/core/core/src/main/java/androidx/core/provider/FontProvider.java b/core/core/src/main/java/androidx/core/provider/FontProvider.java
index 5a1e691..d6d4da3 100644
--- a/core/core/src/main/java/androidx/core/provider/FontProvider.java
+++ b/core/core/src/main/java/androidx/core/provider/FontProvider.java
@@ -109,7 +109,6 @@
      * Do not access directly, visible for testing only.
      * @return
      */
-    @SuppressWarnings("UnsafeNewApiCall")
     @VisibleForTesting
     @NonNull
     static FontInfo[] query(
diff --git a/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java b/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java
index 90d69e4..94cb19a 100644
--- a/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java
+++ b/core/core/src/main/java/androidx/core/text/PrecomputedTextCompat.java
@@ -18,7 +18,6 @@
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
-import android.annotation.SuppressLint;
 import android.os.Build;
 import android.text.Layout;
 import android.text.PrecomputedText;
@@ -192,7 +191,6 @@
             }
         }
 
-        @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
         Params(@NonNull TextPaint paint, @NonNull TextDirectionHeuristic textDir,
                 int strategy, int frequency) {
             if (Build.VERSION.SDK_INT >= 29) {
@@ -427,7 +425,6 @@
      * @param params parameters that define how text will be precomputed
      * @return A {@link PrecomputedText}
      */
-    @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
     public static PrecomputedTextCompat create(@NonNull CharSequence text, @NonNull Params params) {
         Preconditions.checkNotNull(text);
         Preconditions.checkNotNull(params);
@@ -526,7 +523,6 @@
     /**
      * Returns the count of paragraphs.
      */
-    @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
     public @IntRange(from = 0) int getParagraphCount() {
         if (Build.VERSION.SDK_INT >= 29) {
             return mWrapped.getParagraphCount();
@@ -538,7 +534,6 @@
     /**
      * Returns the paragraph start offset of the text.
      */
-    @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
     public @IntRange(from = 0) int getParagraphStart(@IntRange(from = 0) int paraIndex) {
         Preconditions.checkArgumentInRange(paraIndex, 0, getParagraphCount(), "paraIndex");
         if (Build.VERSION.SDK_INT >= 29) {
@@ -551,7 +546,6 @@
     /**
      * Returns the paragraph end offset of the text.
      */
-    @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
     public @IntRange(from = 0) int getParagraphEnd(@IntRange(from = 0) int paraIndex) {
         Preconditions.checkArgumentInRange(paraIndex, 0, getParagraphCount(), "paraIndex");
         if (Build.VERSION.SDK_INT >= 29) {
@@ -672,7 +666,6 @@
     /**
      * @throws IllegalArgumentException if {@link MetricAffectingSpan} is specified.
      */
-    @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
     @Override
     public void setSpan(Object what, int start, int end, int flags) {
         if (what instanceof MetricAffectingSpan) {
@@ -689,7 +682,6 @@
     /**
      * @throws IllegalArgumentException if {@link MetricAffectingSpan} is specified.
      */
-    @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
     @Override
     public void removeSpan(Object what) {
         if (what instanceof MetricAffectingSpan) {
@@ -708,7 +700,6 @@
     //
     // Just proxy for underlying mText if appropriate.
 
-    @SuppressLint("NewApi")  // TODO: Remove once Q SDK is released
     @Override
     public <T> T[] getSpans(int start, int end, Class<T> type) {
         if (Build.VERSION.SDK_INT >= 29) {
diff --git a/core/core/src/main/java/androidx/core/text/util/LinkifyCompat.java b/core/core/src/main/java/androidx/core/text/util/LinkifyCompat.java
index 493c688..e225630 100644
--- a/core/core/src/main/java/androidx/core/text/util/LinkifyCompat.java
+++ b/core/core/src/main/java/androidx/core/text/util/LinkifyCompat.java
@@ -18,7 +18,6 @@
 
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 
-import android.annotation.SuppressLint;
 import android.os.Build;
 import android.text.Spannable;
 import android.text.SpannableString;
@@ -252,7 +251,6 @@
      *                      over which pattern matches are to be converted into links.
      *  @param transformFilter Filter to allow the client code to update the link found.
      */
-    @SuppressLint("NewApi")
     public static void addLinks(@NonNull TextView text, @NonNull Pattern pattern,
             @Nullable String defaultScheme, @Nullable String[] schemes,
             @Nullable MatchFilter matchFilter, @Nullable TransformFilter transformFilter) {
@@ -328,7 +326,6 @@
      *
      * @return True if at least one link is found and applied.
      */
-    @SuppressLint("NewApi")
     public static boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern,
             @Nullable  String defaultScheme, @Nullable String[] schemes,
             @Nullable MatchFilter matchFilter, @Nullable TransformFilter transformFilter) {
diff --git a/core/core/src/main/java/androidx/core/view/MenuCompat.java b/core/core/src/main/java/androidx/core/view/MenuCompat.java
index 8292a95..3512c11 100644
--- a/core/core/src/main/java/androidx/core/view/MenuCompat.java
+++ b/core/core/src/main/java/androidx/core/view/MenuCompat.java
@@ -16,7 +16,6 @@
 
 package androidx.core.view;
 
-import android.annotation.SuppressLint;
 import android.os.Build;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -43,7 +42,6 @@
      * @param menu Menu to enable/disable dividers on.
      * @param enabled True if enabled
      */
-    @SuppressLint("NewApi")
     public static void setGroupDividerEnabled(Menu menu, boolean enabled) {
         if (menu instanceof SupportMenu) {
             ((SupportMenu) menu).setGroupDividerEnabled(enabled);
diff --git a/development/build_log_simplifier/messages.ignore b/development/build_log_simplifier/messages.ignore
index d0df9f8..63d763a 100644
--- a/development/build_log_simplifier/messages.ignore
+++ b/development/build_log_simplifier/messages.ignore
@@ -1157,4 +1157,7 @@
 # > Task :lint-checks:integration-tests:copyDebugAndroidLintReports
 Copying lint text report to .*
 # > Task :wear:compose:compose-material-benchmark:processReleaseAndroidTestManifest
-\$SUPPORT/wear/compose/material/benchmark/src/androidTest/AndroidManifest\.xml:[0-9]+:[0-9]+\-[0-9]+:[0-9]+ Warning:
\ No newline at end of file
+\$SUPPORT/wear/compose/material/benchmark/src/androidTest/AndroidManifest\.xml:[0-9]+:[0-9]+\-[0-9]+:[0-9]+ Warning:
+# > Configure project :ads-identifier
+WARNING\:The option setting \'android\.experimental\.enableArtProfiles\=true\' is experimental\.
+The current default is \'false\'\.
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index fc4663d..220234a 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -28,3 +28,6 @@
 
 # Do not automatically include stdlib
 kotlin.stdlib.default.dependency=false
+
+# Enable adding baseline-prof.txt files to AAR artifacts
+android.experimental.enableArtProfiles=true
\ No newline at end of file
diff --git a/hilt/hilt-navigation-compose/api/current.txt b/hilt/hilt-navigation-compose/api/current.txt
index 447d5c6..ffa3e52 100644
--- a/hilt/hilt-navigation-compose/api/current.txt
+++ b/hilt/hilt-navigation-compose/api/current.txt
@@ -5,8 +5,7 @@
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel();
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel(androidx.navigation.NavBackStackEntry backStackEntry);
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel(androidx.navigation.NavController, String route);
-    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel();
-    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel(androidx.navigation.NavBackStackEntry backStackEntry);
+    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner);
   }
 
 }
diff --git a/hilt/hilt-navigation-compose/api/public_plus_experimental_current.txt b/hilt/hilt-navigation-compose/api/public_plus_experimental_current.txt
index 447d5c6..ffa3e52 100644
--- a/hilt/hilt-navigation-compose/api/public_plus_experimental_current.txt
+++ b/hilt/hilt-navigation-compose/api/public_plus_experimental_current.txt
@@ -5,8 +5,7 @@
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel();
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel(androidx.navigation.NavBackStackEntry backStackEntry);
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel(androidx.navigation.NavController, String route);
-    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel();
-    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel(androidx.navigation.NavBackStackEntry backStackEntry);
+    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner);
   }
 
 }
diff --git a/hilt/hilt-navigation-compose/api/restricted_current.txt b/hilt/hilt-navigation-compose/api/restricted_current.txt
index 0b008ea..74cf2f4 100644
--- a/hilt/hilt-navigation-compose/api/restricted_current.txt
+++ b/hilt/hilt-navigation-compose/api/restricted_current.txt
@@ -2,12 +2,11 @@
 package androidx.hilt.navigation.compose {
 
   public final class HiltViewModelKt {
+    method @androidx.compose.runtime.Composable @kotlin.PublishedApi internal static androidx.lifecycle.ViewModelProvider.Factory? createHiltViewModelFactory(androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner);
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel();
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel(androidx.navigation.NavBackStackEntry backStackEntry);
     method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltNavGraphViewModel(androidx.navigation.NavController, String route);
-    method @androidx.compose.runtime.Composable @kotlin.PublishedApi internal static <VM extends androidx.lifecycle.ViewModel> VM hiltViewModel(kotlin.reflect.KClass<VM> kClass, androidx.navigation.NavBackStackEntry backStackEntry);
-    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel();
-    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel(androidx.navigation.NavBackStackEntry backStackEntry);
+    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! hiltViewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner);
   }
 
 }
diff --git a/hilt/hilt-navigation-compose/src/main/java/androidx/hilt/navigation/compose/HiltViewModel.kt b/hilt/hilt-navigation-compose/src/main/java/androidx/hilt/navigation/compose/HiltViewModel.kt
index 7a1210c..2b5ed13 100644
--- a/hilt/hilt-navigation-compose/src/main/java/androidx/hilt/navigation/compose/HiltViewModel.kt
+++ b/hilt/hilt-navigation-compose/src/main/java/androidx/hilt/navigation/compose/HiltViewModel.kt
@@ -21,11 +21,11 @@
 import androidx.hilt.navigation.HiltViewModelFactory
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.ViewModelStoreOwner
 import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
 import androidx.lifecycle.viewmodel.compose.viewModel
 import androidx.navigation.NavBackStackEntry
 import androidx.navigation.NavController
-import kotlin.reflect.KClass
 
 /**
  * Returns an existing
@@ -37,15 +37,16 @@
  * fragment or an activity.
  *
  * @sample androidx.hilt.navigation.compose.samples.NavComposable
+ * @sample androidx.hilt.navigation.compose.samples.NestedNavComposable
  */
 @Composable
-inline fun <reified VM : ViewModel> hiltViewModel(): VM {
-    val owner = LocalViewModelStoreOwner.current
-    return if (owner is NavBackStackEntry) {
-        hiltViewModel(VM::class, owner)
-    } else {
-        viewModel()
+inline fun <reified VM : ViewModel> hiltViewModel(
+    viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
+        "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
     }
+): VM {
+    val factory = createHiltViewModelFactory(viewModelStoreOwner)
+    return viewModel(viewModelStoreOwner, factory = factory)
 }
 
 /**
@@ -71,23 +72,9 @@
  * the [NavController] back stack.
  *
  * @param backStackEntry The entry of a [NavController] back stack.
- *
- * @sample androidx.hilt.navigation.compose.samples.NestedNavComposable
- */
-@Composable
-inline fun <reified VM : ViewModel> hiltViewModel(backStackEntry: NavBackStackEntry) =
-    hiltViewModel(VM::class, backStackEntry)
-
-/**
- * Returns an existing
- * [HiltViewModel](https://dagger.dev/api/latest/dagger/hilt/android/lifecycle/HiltViewModel)
- * -annotated [ViewModel] or creates a new one scoped to the current navigation graph present on
- * the [NavController] back stack.
- *
- * @param backStackEntry The entry of a [NavController] back stack.
  */
 @Deprecated(
-    message = "Use hiltViewModel(NavBackStackEntry) instead.",
+    message = "Use hiltViewModel(ViewModelStoreOwner) instead.",
     replaceWith = ReplaceWith("hiltViewModel(backStackEntry)"),
 )
 @Composable
@@ -103,7 +90,7 @@
  * @param route route of a destination that exists on the [NavController] back stack.
  */
 @Deprecated(
-    message = "Use hiltViewModel(NavBackStackEntry) in combination with " +
+    message = "Use hiltViewModel(ViewModelStoreOwner) in combination with " +
         "NavController#getBackStackEntry(String). This API will be removed in a future version.",
     replaceWith = ReplaceWith("hiltViewModel(this.getBackStackEntry(route))"),
     level = DeprecationLevel.ERROR
@@ -114,13 +101,15 @@
 
 @Composable
 @PublishedApi
-internal fun <VM : ViewModel> hiltViewModel(
-    kClass: KClass<VM>,
-    backStackEntry: NavBackStackEntry
-): VM {
-    val viewModelFactory = HiltViewModelFactory(
+internal fun createHiltViewModelFactory(
+    viewModelStoreOwner: ViewModelStoreOwner
+): ViewModelProvider.Factory? = if (viewModelStoreOwner is NavBackStackEntry) {
+    HiltViewModelFactory(
         context = LocalContext.current,
-        navBackStackEntry = backStackEntry
+        navBackStackEntry = viewModelStoreOwner
     )
-    return ViewModelProvider(backStackEntry, viewModelFactory).get(kClass.java)
+} else {
+    // Use the default factory provided by the ViewModelStoreOwner
+    // and assume it is an @AndroidEntryPoint annotated fragment or activity
+    null
 }
\ No newline at end of file
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/current.txt b/lifecycle/lifecycle-viewmodel-compose/api/current.txt
index 6fe3f20..cf7f13f 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/current.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/current.txt
@@ -9,8 +9,8 @@
   }
 
   public final class ViewModelKt {
-    method @androidx.compose.runtime.Composable public static <T extends androidx.lifecycle.ViewModel> T viewModel(Class<T> modelClass, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
-    method @androidx.compose.runtime.Composable public static inline <reified T extends androidx.lifecycle.ViewModel> T! viewModel(optional String key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
+    method @androidx.compose.runtime.Composable public static <VM extends androidx.lifecycle.ViewModel> VM viewModel(Class<VM> modelClass, optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
+    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! viewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
   }
 
 }
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/public_plus_experimental_current.txt b/lifecycle/lifecycle-viewmodel-compose/api/public_plus_experimental_current.txt
index 6fe3f20..cf7f13f 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/public_plus_experimental_current.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/public_plus_experimental_current.txt
@@ -9,8 +9,8 @@
   }
 
   public final class ViewModelKt {
-    method @androidx.compose.runtime.Composable public static <T extends androidx.lifecycle.ViewModel> T viewModel(Class<T> modelClass, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
-    method @androidx.compose.runtime.Composable public static inline <reified T extends androidx.lifecycle.ViewModel> T! viewModel(optional String key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
+    method @androidx.compose.runtime.Composable public static <VM extends androidx.lifecycle.ViewModel> VM viewModel(Class<VM> modelClass, optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
+    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! viewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
   }
 
 }
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
index 6fe3f20..cf7f13f 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
@@ -9,8 +9,8 @@
   }
 
   public final class ViewModelKt {
-    method @androidx.compose.runtime.Composable public static <T extends androidx.lifecycle.ViewModel> T viewModel(Class<T> modelClass, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
-    method @androidx.compose.runtime.Composable public static inline <reified T extends androidx.lifecycle.ViewModel> T! viewModel(optional String key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
+    method @androidx.compose.runtime.Composable public static <VM extends androidx.lifecycle.ViewModel> VM viewModel(Class<VM> modelClass, optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String? key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
+    method @androidx.compose.runtime.Composable public static inline <reified VM extends androidx.lifecycle.ViewModel> VM! viewModel(optional androidx.lifecycle.ViewModelStoreOwner viewModelStoreOwner, optional String key, optional androidx.lifecycle.ViewModelProvider.Factory? factory);
   }
 
 }
diff --git a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt
index a35f98b..e4a868d 100644
--- a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt
@@ -81,13 +81,16 @@
     @Test
     public fun viewModelCreatedViaDefaultFactory() {
         val owner = FakeViewModelStoreOwner()
+        var createdInComposition: Any? = null
         rule.setContent {
             CompositionLocalProvider(LocalViewModelStoreOwner provides owner) {
-                viewModel<TestViewModel>()
+                createdInComposition = viewModel<TestViewModel>()
             }
         }
 
         assertThat(owner.factory.createCalled).isTrue()
+        val createdManually = ViewModelProvider(owner).get(TestViewModel::class.java)
+        assertThat(createdInComposition).isEqualTo(createdManually)
     }
 
     @Test
@@ -96,36 +99,6 @@
         var createdInComposition: Any? = null
         rule.setContent {
             CompositionLocalProvider(LocalViewModelStoreOwner provides owner) {
-                createdInComposition = viewModel<TestViewModel>()
-            }
-        }
-
-        assertThat(owner.factory.createCalled).isTrue()
-        val createdManually = ViewModelProvider(owner).get(TestViewModel::class.java)
-        assertThat(createdInComposition).isEqualTo(createdManually)
-    }
-
-    @Test
-    public fun createdViewModelIsEqualsToCreatedManually() {
-        val owner = FakeViewModelStoreOwner()
-        var createdInComposition: Any? = null
-        rule.setContent {
-            CompositionLocalProvider(LocalViewModelStoreOwner provides owner) {
-                createdInComposition = viewModel<TestViewModel>()
-            }
-        }
-
-        assertThat(owner.factory.createCalled).isTrue()
-        val createdManually = ViewModelProvider(owner).get(TestViewModel::class.java)
-        assertThat(createdInComposition).isEqualTo(createdManually)
-    }
-
-    @Test
-    public fun createdViewModelIsEqualsToCreatedManuallyWithKey() {
-        val owner = FakeViewModelStoreOwner()
-        var createdInComposition: Any? = null
-        rule.setContent {
-            CompositionLocalProvider(LocalViewModelStoreOwner provides owner) {
                 createdInComposition =
                     viewModel<TestViewModel>(key = "test")
             }
@@ -137,6 +110,23 @@
     }
 
     @Test
+    public fun viewModelCreatedViaDefaultFactoryWithCustomOwner() {
+        val customOwner = FakeViewModelStoreOwner()
+        val owner = FakeViewModelStoreOwner()
+        var createdInComposition: Any? = null
+        rule.setContent {
+            CompositionLocalProvider(LocalViewModelStoreOwner provides owner) {
+                createdInComposition = viewModel<TestViewModel>(customOwner)
+            }
+        }
+
+        assertThat(owner.factory.createCalled).isFalse()
+        assertThat(customOwner.factory.createCalled).isTrue()
+        val createdManually = ViewModelProvider(customOwner).get(TestViewModel::class.java)
+        assertThat(createdInComposition).isEqualTo(createdManually)
+    }
+
+    @Test
     public fun customFactoryIsUsedWhenProvided() {
         val owner = FakeViewModelStoreOwner()
         val customFactory = FakeViewModelProviderFactory()
@@ -150,6 +140,17 @@
     }
 
     @Test
+    public fun customFactoryProducerIsUsedWhenProvided() {
+        val owner = FakeViewModelStoreOwner()
+        val customFactory = FakeViewModelProviderFactory()
+        rule.setContent {
+            viewModel<TestViewModel>(owner, factory = customFactory)
+        }
+
+        assertThat(customFactory.createCalled).isTrue()
+    }
+
+    @Test
     public fun defaultFactoryIsNotUsedWhenCustomProvided() {
         val owner = FakeViewModelStoreOwner()
         val customFactory = FakeViewModelProviderFactory()
diff --git a/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/ViewModel.kt b/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/ViewModel.kt
index f6f32e2..70bf232 100644
--- a/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/ViewModel.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/ViewModel.kt
@@ -22,51 +22,60 @@
 import androidx.lifecycle.ViewModelStoreOwner
 
 /**
- * Returns an existing [ViewModel] or creates a new one in the scope (usually, a fragment or
- * an activity)
+ * Returns an existing [ViewModel] or creates a new one in the given owner (usually, a fragment or
+ * an activity), defaulting to the owner provided by [LocalViewModelStoreOwner].
  *
- * The created [ViewModel] is associated with the given scope and will be retained
- * as long as the scope is alive (e.g. if it is an activity, until it is
+ * The created [ViewModel] is associated with the given [viewModelStoreOwner] and will be retained
+ * as long as the owner is alive (e.g. if it is an activity, until it is
  * finished or process is killed).
  *
+ * @param viewModelStoreOwner The owner of the [ViewModel] that controls the scope and lifetime
+ * of the returned [ViewModel]. Defaults to using [LocalViewModelStoreOwner].
  * @param key The key to use to identify the [ViewModel].
- * @return A [ViewModel] that is an instance of the given [T] type.
+ * @param factory The [ViewModelProvider.Factory] that should be used to create the [ViewModel]
+ * or null if you would like to use the default factory from the [LocalViewModelStoreOwner]
+ * @return A [ViewModel] that is an instance of the given [VM] type.
  */
 @Suppress("MissingJvmstatic")
 @Composable
-public inline fun <reified T : ViewModel> viewModel(
+public inline fun <reified VM : ViewModel> viewModel(
+    viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
+        "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
+    },
     key: String? = null,
     factory: ViewModelProvider.Factory? = null
-): T = viewModel(T::class.java, key, factory)
+): VM = viewModel(VM::class.java, viewModelStoreOwner, key, factory)
 
 /**
  * Returns an existing [ViewModel] or creates a new one in the scope (usually, a fragment or
  * an activity)
  *
- * The created [ViewModel] is associated with the given scope and will be retained
+ * The created [ViewModel] is associated with the given [viewModelStoreOwner] and will be retained
  * as long as the scope is alive (e.g. if it is an activity, until it is
  * finished or process is killed).
  *
  * @param modelClass The class of the [ViewModel] to create an instance of it if it is not
  * present.
+ * @param viewModelStoreOwner The scope that the created [ViewModel] should be associated with.
  * @param key The key to use to identify the [ViewModel].
- * @return A [ViewModel] that is an instance of the given [T] type.
+ * @return A [ViewModel] that is an instance of the given [VM] type.
  */
 @Suppress("MissingJvmstatic")
 @Composable
-public fun <T : ViewModel> viewModel(
-    modelClass: Class<T>,
+public fun <VM : ViewModel> viewModel(
+    modelClass: Class<VM>,
+    viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
+        "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
+    },
     key: String? = null,
     factory: ViewModelProvider.Factory? = null
-): T = checkNotNull(LocalViewModelStoreOwner.current) {
-    "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
-}.get(modelClass, key, factory)
+): VM = viewModelStoreOwner.get(modelClass, key, factory)
 
-private fun <T : ViewModel> ViewModelStoreOwner.get(
-    javaClass: Class<T>,
+private fun <VM : ViewModel> ViewModelStoreOwner.get(
+    javaClass: Class<VM>,
     key: String? = null,
     factory: ViewModelProvider.Factory? = null
-): T {
+): VM {
     val provider = if (factory != null) {
         ViewModelProvider(this, factory)
     } else {
diff --git a/lint-checks/integration-tests/src/main/java/androidx/ClassVerificationFailureFromJava.java b/lint-checks/integration-tests/src/main/java/androidx/ClassVerificationFailureFromJava.java
index e0cea96..9aaa657 100644
--- a/lint-checks/integration-tests/src/main/java/androidx/ClassVerificationFailureFromJava.java
+++ b/lint-checks/integration-tests/src/main/java/androidx/ClassVerificationFailureFromJava.java
@@ -16,7 +16,6 @@
 
 package androidx;
 
-import android.annotation.SuppressLint;
 import android.content.res.ColorStateList;
 import android.os.Build;
 import android.view.View;
@@ -53,7 +52,6 @@
     /**
      * Unsafe reference to a new API whose auto-fix collides with the existing Api28Impl class.
      */
-    @SuppressLint("NewApi")
     CharSequence unsafeReferenceWithAutoFixCollision(View view) {
         return view.getAccessibilityClassName();
     }
diff --git a/media/media/src/main/java/androidx/media/AudioAttributesImplApi21.java b/media/media/src/main/java/androidx/media/AudioAttributesImplApi21.java
index 001a470..6e0f68f 100644
--- a/media/media/src/main/java/androidx/media/AudioAttributesImplApi21.java
+++ b/media/media/src/main/java/androidx/media/AudioAttributesImplApi21.java
@@ -19,7 +19,6 @@
 import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 import static androidx.media.AudioAttributesCompat.INVALID_STREAM_TYPE;
 
-import android.annotation.SuppressLint;
 import android.media.AudioAttributes;
 
 import androidx.annotation.NonNull;
@@ -72,7 +71,6 @@
     }
 
     @Override
-    @SuppressLint("NewApi")
     public int getVolumeControlStream() {
         // TODO: address the framework change ag/4995785.
         return AudioAttributesCompat.toVolumeStreamType(true, getFlags(), getUsage());
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
index 3956711..3da9950 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
@@ -56,7 +56,6 @@
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.isValidRemoteMessenger;
 import static androidx.mediarouter.media.MediaRouter.UNSELECT_REASON_UNKNOWN;
 
-import android.annotation.SuppressLint;
 import android.app.Service;
 import android.content.Context;
 import android.content.Intent;
@@ -180,8 +179,6 @@
     /**
      * Creates a media route provider service.
      */
-    //TODO: Remove SuppressLint when R version is finalized.
-    @SuppressLint("NewApi")
     public MediaRouteProviderService() {
         mReceiveHandler = new ReceiveHandler(this);
         mReceiveMessenger = new Messenger(mReceiveHandler);
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
index 91db8ba..360efa1 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter2Utils.java
@@ -26,7 +26,6 @@
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_TV;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.DEVICE_TYPE_UNKNOWN;
 
-import android.annotation.SuppressLint;
 import android.content.IntentFilter;
 import android.media.MediaRoute2Info;
 import android.media.RouteDiscoveryPreference;
@@ -45,8 +44,6 @@
 import java.util.List;
 import java.util.Set;
 
-//TODO: Remove SuppressLInt
-@SuppressLint("NewApi")
 @RequiresApi(api = Build.VERSION_CODES.R)
 class MediaRouter2Utils {
     static final String FEATURE_EMPTY = "android.media.route.feature.EMPTY";
diff --git a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
index ec36359..a958422 100644
--- a/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
+++ b/navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
@@ -1658,6 +1658,27 @@
 
     @UiThreadTest
     @Test
+    fun testNavigateOptionPopNestedGraph() {
+        val navController = createNavController()
+        navController.setGraph(R.navigation.nav_multiple_navigation)
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        val navigator = navController.navigatorProvider.getNavigator(TestNavigator::class.java)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+
+        navController.navigate(R.id.navigate_pop_base)
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.deep_link_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+
+        navController.navigate(R.id.navigate_start_pop_base)
+        assertThat(navController.currentDestination?.id ?: 0)
+            .isEqualTo(R.id.simple_child_start_test)
+        assertThat(navigator.backStack.size).isEqualTo(1)
+    }
+
+    @UiThreadTest
+    @Test
     fun testNavigateViaActionWithArgs() {
         val navController = createNavController()
         navController.setGraph(R.navigation.nav_arguments)
diff --git a/navigation/navigation-runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml b/navigation/navigation-runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml
index 1f62231..dbf8e76f 100644
--- a/navigation/navigation-runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml
+++ b/navigation/navigation-runtime/src/androidTest/res/navigation/nav_multiple_navigation.xml
@@ -30,6 +30,11 @@
                 app:destination="@+id/simple_child_second_test"
                 app:popUpTo="@id/simple_child_start_test"
                 app:popUpToInclusive="true"/>
+            <action
+                android:id="@+id/navigate_pop_base"
+                app:destination="@+id/deep_link_child_start"
+                app:popUpTo="@id/nav_multi_module_base"
+                app:popUpToInclusive="true"/>
         </test>
         <test android:id="@+id/simple_child_second_test"/>
     </navigation>
@@ -40,6 +45,11 @@
         <test android:id="@+id/deep_link_child_start_test">
             <action android:id="@+id/deep_link_child_second"
                 app:destination="@+id/deep_link_child_second_test" />
+            <action
+                android:id="@+id/navigate_start_pop_base"
+                app:destination="@+id/simple_child_start"
+                app:popUpTo="@id/nav_multi_module_base"
+                app:popUpToInclusive="true"/>
         </test>
 
         <test android:id="@+id/deep_link_child_second_test">
diff --git a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
index 0c34e3f..a05bb45 100644
--- a/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
+++ b/navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
@@ -1535,6 +1535,18 @@
         ) {
             // Keep popping
         }
+
+        // The _graph should always be on the top of the back stack after you navigate()
+        val firstEntry = backQueue.firstOrNull() ?: hierarchy.firstOrNull()
+        if (firstEntry?.destination != _graph) {
+            val entry = restoredEntries.lastOrNull { restoredEntry ->
+                restoredEntry.destination == _graph!!
+            } ?: NavBackStackEntry.create(
+                context, _graph!!, _graph!!.addInDefaultArgs(finalArgs), lifecycleOwner, viewModel
+            )
+            hierarchy.addFirst(entry)
+        }
+
         // Now add the parent hierarchy to the NavigatorStates and back stack
         hierarchy.forEach { entry ->
             val navigator = _navigatorProvider.getNavigator<Navigator<*>>(
@@ -1546,22 +1558,7 @@
             navigatorBackStack.addInternal(entry)
         }
         backQueue.addAll(hierarchy)
-        // The _graph should always be on the back stack after you navigate()
-        if (backQueue.isEmpty() || backQueue.first().destination !== _graph) {
-            val entry = restoredEntries.lastOrNull { restoredEntry ->
-                restoredEntry.destination == _graph!!
-            } ?: NavBackStackEntry.create(
-                context, _graph!!, _graph!!.addInDefaultArgs(finalArgs), lifecycleOwner, viewModel
-            )
-            val navigator = _navigatorProvider.getNavigator<Navigator<*>>(
-                entry.destination.navigatorName
-            )
-            val navigatorBackStack = checkNotNull(navigatorState[navigator]) {
-                "NavigatorBackStack for ${node.navigatorName} should already be created"
-            }
-            navigatorBackStack.addInternal(entry)
-            backQueue.addFirst(entry)
-        }
+
         // And finally, add the new destination
         backQueue.add(backStackEntry)
     }
diff --git a/profileinstaller/profileinstaller/api/1.0.0-beta01.txt b/profileinstaller/profileinstaller/api/1.0.0-beta01.txt
new file mode 100644
index 0000000..80c25f8
--- /dev/null
+++ b/profileinstaller/profileinstaller/api/1.0.0-beta01.txt
@@ -0,0 +1,43 @@
+// Signature format: 4.0
+package androidx.profileinstaller {
+
+  public class ProfileInstallReceiver extends android.content.BroadcastReceiver {
+    ctor public ProfileInstallReceiver();
+    method public void onReceive(android.content.Context, android.content.Intent?);
+    field public static final String ACTION_INSTALL_PROFILE = "androidx.profileinstaller.action.INSTALL_PROFILE";
+  }
+
+  public class ProfileInstaller {
+    method @WorkerThread public static void writeProfile(android.content.Context);
+    method @WorkerThread public static void writeProfile(android.content.Context, java.util.concurrent.Executor, androidx.profileinstaller.ProfileInstaller.DiagnosticsCallback);
+    field public static final int DIAGNOSTIC_CURRENT_PROFILE_DOES_NOT_EXIST = 2; // 0x2
+    field public static final int DIAGNOSTIC_CURRENT_PROFILE_EXISTS = 1; // 0x1
+    field public static final int DIAGNOSTIC_REF_PROFILE_DOES_NOT_EXIST = 4; // 0x4
+    field public static final int DIAGNOSTIC_REF_PROFILE_EXISTS = 3; // 0x3
+    field public static final int RESULT_ALREADY_INSTALLED = 2; // 0x2
+    field public static final int RESULT_BASELINE_PROFILE_NOT_FOUND = 6; // 0x6
+    field public static final int RESULT_DESIRED_FORMAT_UNSUPPORTED = 5; // 0x5
+    field public static final int RESULT_INSTALL_SUCCESS = 1; // 0x1
+    field public static final int RESULT_IO_EXCEPTION = 7; // 0x7
+    field public static final int RESULT_NOT_WRITABLE = 4; // 0x4
+    field public static final int RESULT_PARSE_EXCEPTION = 8; // 0x8
+    field public static final int RESULT_UNSUPPORTED_ART_VERSION = 3; // 0x3
+  }
+
+  public static interface ProfileInstaller.DiagnosticsCallback {
+    method public void onDiagnosticReceived(int, Object?);
+    method public void onResultReceived(int, Object?);
+  }
+
+  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();
+  }
+
+  public static class ProfileInstallerInitializer.Result {
+    ctor public ProfileInstallerInitializer.Result();
+  }
+
+}
+
diff --git a/profileinstaller/profileinstaller/api/public_plus_experimental_1.0.0-beta01.txt b/profileinstaller/profileinstaller/api/public_plus_experimental_1.0.0-beta01.txt
new file mode 100644
index 0000000..80c25f8
--- /dev/null
+++ b/profileinstaller/profileinstaller/api/public_plus_experimental_1.0.0-beta01.txt
@@ -0,0 +1,43 @@
+// Signature format: 4.0
+package androidx.profileinstaller {
+
+  public class ProfileInstallReceiver extends android.content.BroadcastReceiver {
+    ctor public ProfileInstallReceiver();
+    method public void onReceive(android.content.Context, android.content.Intent?);
+    field public static final String ACTION_INSTALL_PROFILE = "androidx.profileinstaller.action.INSTALL_PROFILE";
+  }
+
+  public class ProfileInstaller {
+    method @WorkerThread public static void writeProfile(android.content.Context);
+    method @WorkerThread public static void writeProfile(android.content.Context, java.util.concurrent.Executor, androidx.profileinstaller.ProfileInstaller.DiagnosticsCallback);
+    field public static final int DIAGNOSTIC_CURRENT_PROFILE_DOES_NOT_EXIST = 2; // 0x2
+    field public static final int DIAGNOSTIC_CURRENT_PROFILE_EXISTS = 1; // 0x1
+    field public static final int DIAGNOSTIC_REF_PROFILE_DOES_NOT_EXIST = 4; // 0x4
+    field public static final int DIAGNOSTIC_REF_PROFILE_EXISTS = 3; // 0x3
+    field public static final int RESULT_ALREADY_INSTALLED = 2; // 0x2
+    field public static final int RESULT_BASELINE_PROFILE_NOT_FOUND = 6; // 0x6
+    field public static final int RESULT_DESIRED_FORMAT_UNSUPPORTED = 5; // 0x5
+    field public static final int RESULT_INSTALL_SUCCESS = 1; // 0x1
+    field public static final int RESULT_IO_EXCEPTION = 7; // 0x7
+    field public static final int RESULT_NOT_WRITABLE = 4; // 0x4
+    field public static final int RESULT_PARSE_EXCEPTION = 8; // 0x8
+    field public static final int RESULT_UNSUPPORTED_ART_VERSION = 3; // 0x3
+  }
+
+  public static interface ProfileInstaller.DiagnosticsCallback {
+    method public void onDiagnosticReceived(int, Object?);
+    method public void onResultReceived(int, Object?);
+  }
+
+  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();
+  }
+
+  public static class ProfileInstallerInitializer.Result {
+    ctor public ProfileInstallerInitializer.Result();
+  }
+
+}
+
diff --git a/profileinstaller/profileinstaller/api/res-1.0.0-beta01.txt b/profileinstaller/profileinstaller/api/res-1.0.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/profileinstaller/profileinstaller/api/res-1.0.0-beta01.txt
diff --git a/profileinstaller/profileinstaller/api/restricted_1.0.0-beta01.txt b/profileinstaller/profileinstaller/api/restricted_1.0.0-beta01.txt
new file mode 100644
index 0000000..80c25f8
--- /dev/null
+++ b/profileinstaller/profileinstaller/api/restricted_1.0.0-beta01.txt
@@ -0,0 +1,43 @@
+// Signature format: 4.0
+package androidx.profileinstaller {
+
+  public class ProfileInstallReceiver extends android.content.BroadcastReceiver {
+    ctor public ProfileInstallReceiver();
+    method public void onReceive(android.content.Context, android.content.Intent?);
+    field public static final String ACTION_INSTALL_PROFILE = "androidx.profileinstaller.action.INSTALL_PROFILE";
+  }
+
+  public class ProfileInstaller {
+    method @WorkerThread public static void writeProfile(android.content.Context);
+    method @WorkerThread public static void writeProfile(android.content.Context, java.util.concurrent.Executor, androidx.profileinstaller.ProfileInstaller.DiagnosticsCallback);
+    field public static final int DIAGNOSTIC_CURRENT_PROFILE_DOES_NOT_EXIST = 2; // 0x2
+    field public static final int DIAGNOSTIC_CURRENT_PROFILE_EXISTS = 1; // 0x1
+    field public static final int DIAGNOSTIC_REF_PROFILE_DOES_NOT_EXIST = 4; // 0x4
+    field public static final int DIAGNOSTIC_REF_PROFILE_EXISTS = 3; // 0x3
+    field public static final int RESULT_ALREADY_INSTALLED = 2; // 0x2
+    field public static final int RESULT_BASELINE_PROFILE_NOT_FOUND = 6; // 0x6
+    field public static final int RESULT_DESIRED_FORMAT_UNSUPPORTED = 5; // 0x5
+    field public static final int RESULT_INSTALL_SUCCESS = 1; // 0x1
+    field public static final int RESULT_IO_EXCEPTION = 7; // 0x7
+    field public static final int RESULT_NOT_WRITABLE = 4; // 0x4
+    field public static final int RESULT_PARSE_EXCEPTION = 8; // 0x8
+    field public static final int RESULT_UNSUPPORTED_ART_VERSION = 3; // 0x3
+  }
+
+  public static interface ProfileInstaller.DiagnosticsCallback {
+    method public void onDiagnosticReceived(int, Object?);
+    method public void onResultReceived(int, Object?);
+  }
+
+  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();
+  }
+
+  public static class ProfileInstallerInitializer.Result {
+    ctor public ProfileInstallerInitializer.Result();
+  }
+
+}
+
diff --git a/profileinstaller/profileinstaller/build.gradle b/profileinstaller/profileinstaller/build.gradle
index 6d6ad00..40b7e91 100644
--- a/profileinstaller/profileinstaller/build.gradle
+++ b/profileinstaller/profileinstaller/build.gradle
@@ -34,7 +34,6 @@
 androidx {
     name = "androidx.profileinstaller:profileinstaller"
     type = LibraryType.PUBLISHED_LIBRARY
-    mavenVersion = LibraryVersions.PROFILEINSTALLER
     mavenGroup = LibraryGroups.PROFILEINSTALLER
     inceptionYear = "2021"
     description = "Allows libraries to prepopulate ahead of time compilation traces to be read by" +
diff --git a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt
index b5a1934..d611ef2 100644
--- a/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt
+++ b/room/room-compiler-processing-testing/src/main/java/androidx/room/compiler/processing/util/CompilationTestCapabilities.kt
@@ -55,17 +55,16 @@
         }
 
         /**
-         * Reduces the version to some approximation by taking major and minor versions and the
-         * first character of the patch. We use this to check if ksp and kotlin are compatible,
-         * feel free to change it if it does not work as it is only an approximation
-         * e.g. 1.4.20 becomes 1.4.2, 1.40.210-foobar becomes 1.40.2
+         * Reduces the version to some approximation by taking major and minor versions.
+         * We use this to check if ksp and kotlin are compatible, feel free to change it if it
+         * does not work as it is only an approximation
+         * e.g. 1.4.20 becomes 1.4, 1.40.210-foobar becomes 1.4
          */
         private fun reduceVersions(version: String): Array<String?> {
             val sections = version.split('.')
             return arrayOf(
                 sections.getOrNull(0),
-                sections.getOrNull(1),
-                sections.getOrNull(2)?.trim()?.first()?.toString(),
+                sections.getOrNull(1)
             )
         }
 
diff --git a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestConfigTest.kt b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestConfigTest.kt
index f442790..d5c7eb1 100644
--- a/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestConfigTest.kt
+++ b/room/room-compiler-processing-testing/src/test/java/androidx/room/compiler/processing/util/TestConfigTest.kt
@@ -41,7 +41,7 @@
                 kotlinVersion = "1.4.30",
                 kspVersion = "1.4.20-blah-blah"
             ).canEnableKsp()
-        ).isFalse()
+        ).isTrue()
         assertThat(
             Config(
                 kotlinVersion = "1.5.30",
@@ -59,6 +59,6 @@
                 kotlinVersion = "1.5",
                 kspVersion = "1.5.20-blah-blah"
             ).canEnableKsp()
-        ).isFalse()
+        ).isTrue()
     }
 }
\ No newline at end of file
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeExt.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeExt.kt
index 7a93f35..dd6e2bd 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeExt.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeExt.kt
@@ -22,6 +22,7 @@
 import com.google.devtools.ksp.KspExperimental
 import com.google.devtools.ksp.processing.Resolver
 import com.google.devtools.ksp.symbol.KSDeclaration
+import com.google.devtools.ksp.symbol.KSName
 import com.google.devtools.ksp.symbol.KSType
 import com.google.devtools.ksp.symbol.KSTypeAlias
 import com.google.devtools.ksp.symbol.KSTypeArgument
@@ -35,6 +36,7 @@
 import com.squareup.javapoet.TypeName
 import com.squareup.javapoet.TypeVariableName
 import com.squareup.javapoet.WildcardTypeName
+import kotlin.IllegalStateException
 
 // Catch-all type name when we cannot resolve to anything. This is what KAPT uses as error type
 // and we use the same type in KSP for consistency.
@@ -42,23 +44,50 @@
 internal val ERROR_TYPE_NAME = ClassName.get("error", "NonExistentClass")
 
 /**
+ * To handle self referencing types and avoid infinite recursion, we keep a lookup map for
+ * TypeVariables.
+ */
+private typealias TypeArgumentTypeLookup = LinkedHashMap<KSName, TypeName>
+
+/**
  * Turns a KSTypeReference into a TypeName in java's type system.
  */
-internal fun KSTypeReference?.typeName(resolver: Resolver): TypeName {
+internal fun KSTypeReference?.typeName(resolver: Resolver): TypeName =
+    typeName(
+        resolver = resolver,
+        typeArgumentTypeLookup = TypeArgumentTypeLookup()
+    )
+
+private fun KSTypeReference?.typeName(
+    resolver: Resolver,
+    typeArgumentTypeLookup: TypeArgumentTypeLookup
+): TypeName {
     return if (this == null) {
         ERROR_TYPE_NAME
     } else {
-        resolve().typeName(resolver)
+        resolve().typeName(resolver, typeArgumentTypeLookup)
     }
 }
 
 /**
  * Turns a KSDeclaration into a TypeName in java's type system.
  */
+internal fun KSDeclaration.typeName(resolver: Resolver): TypeName =
+    typeName(
+        resolver = resolver,
+        typeArgumentTypeLookup = TypeArgumentTypeLookup()
+    )
+
 @OptIn(KspExperimental::class)
-internal fun KSDeclaration.typeName(resolver: Resolver): TypeName {
+private fun KSDeclaration.typeName(
+    resolver: Resolver,
+    typeArgumentTypeLookup: TypeArgumentTypeLookup
+): TypeName {
     if (this is KSTypeAlias) {
-        return this.type.typeName(resolver)
+        return this.type.typeName(resolver, typeArgumentTypeLookup)
+    }
+    if (this is KSTypeParameter) {
+        return this.typeName(resolver, typeArgumentTypeLookup)
     }
     // if there is no qualified name, it is a resolution error so just return shared instance
     // KSP may improve that later and if not, we can improve it in Room
@@ -68,9 +97,7 @@
     if (jvmSignature != null && jvmSignature.isNotBlank()) {
         return jvmSignature.typeNameFromJvmSignature()
     }
-    if (this is KSTypeParameter) {
-        return TypeVariableName.get(name.asString())
-    }
+
     // fallback to custom generation, it is very likely that this is an unresolved type
     // get the package name first, it might throw for invalid types, hence we use
     // safeGetPackageName
@@ -90,10 +117,44 @@
 internal fun KSTypeArgument.typeName(
     param: KSTypeParameter,
     resolver: Resolver
+): TypeName = typeName(
+    param = param,
+    resolver = resolver,
+    typeArgumentTypeLookup = TypeArgumentTypeLookup()
+)
+
+private fun KSTypeParameter.typeName(
+    resolver: Resolver,
+    typeArgumentTypeLookup: TypeArgumentTypeLookup
 ): TypeName {
+    // see https://github.com/square/javapoet/issues/842
+    typeArgumentTypeLookup[name]?.let {
+        return it
+    }
+    val mutableBounds = mutableListOf<TypeName>()
+    val typeName = createModifiableTypeVariableName(name = name.asString(), bounds = mutableBounds)
+    typeArgumentTypeLookup[name] = typeName
+    val resolvedBounds = bounds.map {
+        it.typeName(resolver, typeArgumentTypeLookup).tryBox()
+    }.toList()
+    if (resolvedBounds.isNotEmpty()) {
+        mutableBounds.addAll(resolvedBounds)
+        mutableBounds.remove(TypeName.OBJECT)
+    }
+    typeArgumentTypeLookup.remove(name)
+    return typeName
+}
+
+private fun KSTypeArgument.typeName(
+    param: KSTypeParameter,
+    resolver: Resolver,
+    typeArgumentTypeLookup: TypeArgumentTypeLookup
+): TypeName {
+    fun resolveTypeName() = type.typeName(resolver, typeArgumentTypeLookup).tryBox()
+
     return when (variance) {
-        Variance.CONTRAVARIANT -> WildcardTypeName.supertypeOf(type.typeName(resolver).tryBox())
-        Variance.COVARIANT -> WildcardTypeName.subtypeOf(type.typeName(resolver).tryBox())
+        Variance.CONTRAVARIANT -> WildcardTypeName.supertypeOf(resolveTypeName())
+        Variance.COVARIANT -> WildcardTypeName.subtypeOf(resolveTypeName())
         Variance.STAR -> {
             // for star projected types, JavaPoet uses the name from the declaration if
             // * is not given explicitly
@@ -101,27 +162,40 @@
                 // explicit *
                 WildcardTypeName.subtypeOf(TypeName.OBJECT)
             } else {
-                TypeVariableName.get(param.name.asString(), type.typeName(resolver).tryBox())
+                param.typeName(resolver, typeArgumentTypeLookup)
             }
         }
-        else -> type.typeName(resolver).tryBox()
+        else -> resolveTypeName()
     }
 }
 
 /**
  * Turns a KSType into a TypeName in java's type system.
  */
-internal fun KSType.typeName(resolver: Resolver): TypeName {
+internal fun KSType.typeName(resolver: Resolver): TypeName =
+    typeName(
+        resolver = resolver,
+        typeArgumentTypeLookup = TypeArgumentTypeLookup()
+    )
+
+private fun KSType.typeName(
+    resolver: Resolver,
+    typeArgumentTypeLookup: TypeArgumentTypeLookup
+): TypeName {
     return if (this.arguments.isNotEmpty()) {
         val args: Array<TypeName> = this.arguments.mapIndexed { index, typeArg ->
             typeArg.typeName(
-                this.declaration.typeParameters[index],
-                resolver
+                param = this.declaration.typeParameters[index],
+                resolver = resolver,
+                typeArgumentTypeLookup = typeArgumentTypeLookup
             )
         }.map {
             it.tryBox()
         }.toTypedArray()
-        when (val typeName = declaration.typeName(resolver).tryBox()) {
+        when (
+            val typeName = declaration
+                .typeName(resolver, typeArgumentTypeLookup).tryBox()
+        ) {
             is ArrayTypeName -> ArrayTypeName.of(args.single())
             is ClassName -> ParameterizedTypeName.get(
                 typeName,
@@ -130,7 +204,7 @@
             else -> error("Unexpected type name for KSType: $typeName")
         }
     } else {
-        this.declaration.typeName(resolver)
+        this.declaration.typeName(resolver, typeArgumentTypeLookup)
     }
 }
 
@@ -164,3 +238,40 @@
     XNullability.NONNULL -> makeNotNullable()
     else -> throw IllegalArgumentException("Cannot set KSType nullability to platform")
 }
+
+/**
+ * The private constructor of [TypeVariableName] which receives a list.
+ * We use this in [createModifiableTypeVariableName] to create a [TypeVariableName] whose bounds
+ * can be modified afterwards.
+ */
+private val typeVarNameConstructor by lazy {
+    try {
+        TypeVariableName::class.java.getDeclaredConstructor(
+            String::class.java,
+            List::class.java
+        ).also {
+            it.trySetAccessible()
+        }
+    } catch (ex: NoSuchMethodException) {
+        throw IllegalStateException(
+            """
+            Room couldn't find the constructor it is looking for in JavaPoet. Please file a bug at
+            https://issuetracker.google.com/issues/new?component=413107
+            """.trimIndent(),
+            ex
+        )
+    }
+}
+
+/**
+ * Creates a TypeVariableName where we can change the bounds after constructor.
+ * This is used to workaround a case for self referencing type declarations.
+ * see b/187572913 for more details
+ */
+private fun createModifiableTypeVariableName(
+    name: String,
+    bounds: List<TypeName>
+): TypeVariableName = typeVarNameConstructor.newInstance(
+    name,
+    bounds
+) as TypeVariableName
\ No newline at end of file
diff --git a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt
index 3aa2c26..eabf0a3 100644
--- a/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt
+++ b/room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt
@@ -32,6 +32,7 @@
 import com.google.devtools.ksp.getClassDeclarationByName
 import com.squareup.javapoet.ClassName
 import com.squareup.javapoet.ParameterizedTypeName
+import com.squareup.javapoet.TypeName
 import com.squareup.javapoet.TypeVariableName
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -401,4 +402,257 @@
             }
         }
     }
+
+    @Test
+    fun selfReferencingType_kotlin() {
+        val src = Source.kotlin(
+            "Foo.kt",
+            """
+            class SelfReferencing<T : SelfReferencing<T>>
+            """.trimIndent()
+        )
+        runProcessorTest(
+            sources = listOf(src)
+        ) { invocation ->
+            val elm = invocation.processingEnv.requireTypeElement("SelfReferencing")
+            val typeName = elm.type.typeName
+            assertThat(typeName.dumpToString(5)).isEqualTo(
+                """
+                SelfReferencing<T>
+                | T
+                | > SelfReferencing<T>
+                | > | T
+                | > | > SelfReferencing<T>
+                | > | > | T
+                """.trimIndent()
+            )
+        }
+    }
+
+    @Test
+    fun selfReferencingType_java() {
+        val src = Source.java(
+            "SelfReferencing",
+            """
+            class SelfReferencing<T extends SelfReferencing<T>> {
+            }
+            """.trimIndent()
+        )
+        runProcessorTest(
+            sources = listOf(src)
+        ) { invocation ->
+            val elm = invocation.processingEnv.requireTypeElement("SelfReferencing")
+            val dump = elm.type.typeName.dumpToString(5)
+            if (invocation.isKsp) {
+                // KSP fails to resolve self referencing java types:
+                // https://github.com/google/ksp/issues/476
+                // keeping this bad assertion here so that when the bug is fixed,
+                // test will fail and it will be cleaned up.
+
+                assertThat(dump).isEqualTo(
+                    """
+                    SelfReferencing<T>
+                    | T
+                    | > SelfReferencing<error.NonExistentClass>
+                    | > | error.NonExistentClass
+                    """.trimIndent()
+                )
+            } else {
+                assertThat(dump).isEqualTo(
+                    """
+                    SelfReferencing<T>
+                    | T
+                    | > SelfReferencing<T>
+                    | > | T
+                    | > | > SelfReferencing<T>
+                    | > | > | T
+                    """.trimIndent()
+                )
+            }
+        }
+    }
+
+    @Test
+    fun multiLevelSelfReferencingType() {
+        val src = Source.kotlin(
+            "Foo.kt",
+            """
+        open class Node<TX : Node<TX, RX>, RX : Node<RX, TX>> {
+        }
+            """.trimIndent()
+        )
+        runProcessorTest(
+            sources = listOf(src)
+        ) { invocation ->
+            val nodeElm = invocation.processingEnv.requireType("Node")
+            val nodeTypeName = nodeElm.typeName
+            assertThat(nodeTypeName.dumpToString(5)).isEqualTo(
+                """
+                Node<TX, RX>
+                | TX
+                | > Node<TX, RX>
+                | > | TX
+                | > | > Node<TX, RX>
+                | > | > | TX
+                | > | > | RX
+                | > | RX
+                | > | > Node<RX, TX>
+                | > | > | RX
+                | > | > | TX
+                | RX
+                | > Node<RX, TX>
+                | > | RX
+                | > | > Node<RX, TX>
+                | > | > | RX
+                | > | > | TX
+                | > | TX
+                | > | > Node<TX, RX>
+                | > | > | TX
+                | > | > | RX
+                """.trimIndent()
+            )
+        }
+    }
+
+    @Test
+    fun selfReferencing_withGenericClassBounds() {
+        val src = Source.kotlin(
+            "SelfReferencing.kt",
+            """
+            class SelfReferencing<TX : SelfReferencing<TX, RX>, RX : List<TX>>
+            """.trimIndent()
+        )
+        runProcessorTest(
+            sources = listOf(src)
+        ) { invocation ->
+            val elm = invocation.processingEnv.requireTypeElement("SelfReferencing")
+            val typeDump = elm.type.typeName.dumpToString(5)
+            // KSP and Javac diverge here when the generic type parameter in the declaration has
+            // variance. This test is kept here to know that the difference is expected.
+            // KAPT generates a wildcard for the List<T> from the variance of it. In XProcessing,
+            // such resolution is expected to happen at code generation time.
+            //
+            // This inconsistency is not great but it is fairly complicated to do variance
+            // resolution (see: OverrideVarianceResolver.kt) and this level of detail almost
+            // never matters.
+            if (invocation.isKsp) {
+                assertThat(typeDump).isEqualTo(
+                    """
+                    SelfReferencing<TX, RX>
+                    | TX
+                    | > SelfReferencing<TX, RX>
+                    | > | TX
+                    | > | > SelfReferencing<TX, RX>
+                    | > | > | TX
+                    | > | > | RX
+                    | > | RX
+                    | > | > java.util.List<TX>
+                    | > | > | TX
+                    | RX
+                    | > java.util.List<TX>
+                    | > | TX
+                    | > | > SelfReferencing<TX, RX>
+                    | > | > | TX
+                    | > | > | RX
+                    """.trimIndent()
+                )
+            } else {
+                assertThat(typeDump).isEqualTo(
+                    """
+                    SelfReferencing<TX, RX>
+                    | TX
+                    | > SelfReferencing<TX, RX>
+                    | > | TX
+                    | > | > SelfReferencing<TX, RX>
+                    | > | > | TX
+                    | > | > | RX
+                    | > | RX
+                    | > | > java.util.List<? extends TX>
+                    | > | > | ? extends TX
+                    | RX
+                    | > java.util.List<? extends TX>
+                    | > | ? extends TX
+                    """.trimIndent()
+                )
+            }
+        }
+    }
+
+    @Test
+    fun selfReferencing_withGeneric() {
+        val src = Source.kotlin(
+            "SelfReferencing.kt",
+            """
+            class Generic<T>
+            class SelfReferencing<TX : SelfReferencing<TX, RX>, RX : Generic<TX>>
+            """.trimIndent()
+        )
+        runProcessorTest(
+            sources = listOf(src)
+        ) { invocation ->
+            val elm = invocation.processingEnv.requireTypeElement("SelfReferencing")
+            val typeName = elm.type.typeName
+            assertThat(typeName.dumpToString(5)).isEqualTo(
+                """
+                SelfReferencing<TX, RX>
+                | TX
+                | > SelfReferencing<TX, RX>
+                | > | TX
+                | > | > SelfReferencing<TX, RX>
+                | > | > | TX
+                | > | > | RX
+                | > | RX
+                | > | > Generic<TX>
+                | > | > | TX
+                | RX
+                | > Generic<TX>
+                | > | TX
+                | > | > SelfReferencing<TX, RX>
+                | > | > | TX
+                | > | > | RX
+                """.trimIndent()
+            )
+        }
+    }
+
+    /**
+     * Dumps the typename with its bounds in a given depth.
+     * This makes tests more readable.
+     */
+    private fun TypeName.dumpToString(depth: Int): String {
+        return dump(depth).toString()
+    }
+
+    private fun TypeName.dump(depth: Int): TypeNameNode? {
+        if (depth < 0) return null
+        return when (this) {
+            is ParameterizedTypeName -> TypeNameNode(
+                text = this.toString(),
+                typeArgs = this.typeArguments.mapNotNull { it.dump(depth - 1) }
+            )
+            is TypeVariableName -> TypeNameNode(
+                text = this.toString(),
+                bounds = bounds.map { it.dump(depth - 1) }.filterNotNull()
+            )
+            else -> TypeNameNode(text = toString())
+        }
+    }
+
+    private data class TypeNameNode(
+        val text: String,
+        val bounds: List<TypeNameNode> = emptyList(),
+        val typeArgs: List<TypeNameNode> = emptyList()
+    ) {
+        override fun toString(): String {
+            return buildString {
+                appendLine(text)
+                bounds.forEach {
+                    appendLine(it.toString().prependIndent("> "))
+                }
+                typeArgs.forEach {
+                    appendLine(it.toString().prependIndent("| "))
+                }
+            }.trim()
+        }
+    }
 }
diff --git a/room/room-runtime/src/main/java/androidx/room/AutoClosingRoomOpenHelper.java b/room/room-runtime/src/main/java/androidx/room/AutoClosingRoomOpenHelper.java
index 430df67..03e68d4 100644
--- a/room/room-runtime/src/main/java/androidx/room/AutoClosingRoomOpenHelper.java
+++ b/room/room-runtime/src/main/java/androidx/room/AutoClosingRoomOpenHelper.java
@@ -16,7 +16,6 @@
 
 package androidx.room;
 
-import android.annotation.SuppressLint;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.database.CharArrayBuffer;
@@ -441,7 +440,6 @@
             });
         }
 
-        @SuppressLint("UnsafeNewApiCall")
         @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
         @Override
         public void setForeignKeyConstraintsEnabled(boolean enable) {
@@ -465,7 +463,6 @@
                     + "OpenHelper instead of on the database directly.");
         }
 
-        @SuppressLint("UnsafeNewApiCall")
         @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
         @Override
         public boolean isWriteAheadLoggingEnabled() {
@@ -699,7 +696,6 @@
             mDelegate.setNotificationUri(cr, uri);
         }
 
-        @SuppressLint("UnsafeNewApiCall")
         @RequiresApi(api = Build.VERSION_CODES.Q)
         @Override
         public void setNotificationUris(@NonNull ContentResolver cr,
@@ -707,14 +703,12 @@
             SupportSQLiteCompat.Api29Impl.setNotificationUris(mDelegate, cr, uris);
         }
 
-        @SuppressLint("UnsafeNewApiCall")
         @RequiresApi(api = Build.VERSION_CODES.KITKAT)
         @Override
         public Uri getNotificationUri() {
             return SupportSQLiteCompat.Api19Impl.getNotificationUri(mDelegate);
         }
 
-        @SuppressLint("UnsafeNewApiCall")
         @RequiresApi(api = Build.VERSION_CODES.Q)
         @Nullable
         @Override
@@ -727,7 +721,6 @@
             return mDelegate.getWantsAllOnMoveCalls();
         }
 
-        @SuppressLint("UnsafeNewApiCall")
         @RequiresApi(api = Build.VERSION_CODES.M)
         @Override
         public void setExtras(Bundle extras) {
diff --git a/room/room-runtime/src/main/java/androidx/room/RoomDatabase.java b/room/room-runtime/src/main/java/androidx/room/RoomDatabase.java
index b6cf417..1b5ef23 100644
--- a/room/room-runtime/src/main/java/androidx/room/RoomDatabase.java
+++ b/room/room-runtime/src/main/java/androidx/room/RoomDatabase.java
@@ -736,7 +736,6 @@
          * Resolves {@link #AUTOMATIC} to either {@link #TRUNCATE} or
          * {@link #WRITE_AHEAD_LOGGING}.
          */
-        @SuppressLint("NewApi")
         JournalMode resolve(Context context) {
             if (this != AUTOMATIC) {
                 return this;
diff --git a/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java b/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java
index c330ff7..3c84764 100644
--- a/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java
+++ b/samples/Support4Demos/src/main/java/com/example/android/supportv4/widget/SlidingPaneLayoutActivity.java
@@ -17,7 +17,6 @@
 
 package com.example.android.supportv4.widget;
 
-import android.annotation.SuppressLint;
 import android.app.ActionBar;
 import android.os.Build;
 import android.os.Bundle;
@@ -198,7 +197,6 @@
      */
     class FirstLayoutListener implements ViewTreeObserver.OnGlobalLayoutListener {
         @Override
-        @SuppressLint("UnsafeNewApiCall")
         public void onGlobalLayout() {
             mActionBar.onFirstLayout();
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
diff --git a/security/identity-credential/src/main/java/androidx/security/identity/SoftwareIdentityCredential.java b/security/identity-credential/src/main/java/androidx/security/identity/SoftwareIdentityCredential.java
index 2260baf..1eed78d 100644
--- a/security/identity-credential/src/main/java/androidx/security/identity/SoftwareIdentityCredential.java
+++ b/security/identity-credential/src/main/java/androidx/security/identity/SoftwareIdentityCredential.java
@@ -16,7 +16,6 @@
 
 package androidx.security.identity;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 import android.icu.util.Calendar;
 import android.security.keystore.KeyProperties;
@@ -190,7 +189,6 @@
         return result;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public @NonNull KeyPair createEphemeralKeyPair() {
         if (mEphemeralKeyPair == null) {
diff --git a/wear/wear-complications-data/src/main/java/androidx/wear/utility/TraceEvent.kt b/wear/wear-complications-data/src/main/java/androidx/wear/utility/TraceEvent.kt
index 083d0f8..3404479 100644
--- a/wear/wear-complications-data/src/main/java/androidx/wear/utility/TraceEvent.kt
+++ b/wear/wear-complications-data/src/main/java/androidx/wear/utility/TraceEvent.kt
@@ -16,7 +16,6 @@
 
 package androidx.wear.utility
 
-import android.annotation.SuppressLint
 import android.os.Build
 import android.os.Trace
 import androidx.annotation.DoNotInline
@@ -49,7 +48,6 @@
  *
  * @hide
  **/
-@SuppressLint("UnsafeNewApiCall")
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class AsyncTraceEvent(private val traceName: String) : Closeable {
     internal companion object {
@@ -103,4 +101,4 @@
             block.invoke(this)
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wear/wear-watchface-client/guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt b/wear/wear-watchface-client/guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt
index c37c6b3..5a06d40 100644
--- a/wear/wear-watchface-client/guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt
+++ b/wear/wear-watchface-client/guava/src/main/java/androidx/wear/watchface/client/ListenableWatchFaceControlClient.kt
@@ -16,7 +16,6 @@
 
 package androidx.wear.watchface.client
 
-import android.annotation.SuppressLint
 import android.content.ComponentName
 import android.content.Context
 import androidx.concurrent.futures.ResolvableFuture
@@ -102,7 +101,6 @@
          * to a [ListenableWatchFaceControlClient] or throws a [ServiceNotBoundException] if the
          * watch face control service can not be bound.
          */
-        @SuppressLint("NewApi") // For ACTION_WATCHFACE_CONTROL_SERVICE
         @JvmStatic
         public fun createWatchFaceControlClient(
             context: Context,
diff --git a/wear/wear-watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt b/wear/wear-watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
index 513e655..3ce706d 100644
--- a/wear/wear-watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
+++ b/wear/wear-watchface-client/src/main/java/androidx/wear/watchface/client/WatchFaceControlClient.kt
@@ -16,7 +16,6 @@
 
 package androidx.wear.watchface.client
 
-import android.annotation.SuppressLint
 import android.content.ComponentName
 import android.content.Context
 import android.content.Intent
@@ -64,7 +63,6 @@
          * @throws [ServiceNotBoundException] if the watch face control service can not be bound or
          * a [ServiceStartFailureException] if the watch face dies during startup.
          */
-        @SuppressLint("NewApi") // For ACTION_WATCHFACE_CONTROL_SERVICE
         @JvmStatic
         public suspend fun createWatchFaceControlClient(
             context: Context,
diff --git a/webkit/webkit/src/main/java/androidx/webkit/WebResourceRequestCompat.java b/webkit/webkit/src/main/java/androidx/webkit/WebResourceRequestCompat.java
index fc99bcb..a1f7c0d 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/WebResourceRequestCompat.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/WebResourceRequestCompat.java
@@ -16,7 +16,6 @@
 
 package androidx.webkit;
 
-import android.annotation.SuppressLint;
 import android.webkit.WebResourceRequest;
 
 import androidx.annotation.NonNull;
@@ -43,7 +42,6 @@
      *
      * @return whether the request was a result of a server-side redirect.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.WEB_RESOURCE_REQUEST_IS_REDIRECT,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static boolean isRedirect(@NonNull WebResourceRequest request) {
diff --git a/webkit/webkit/src/main/java/androidx/webkit/WebSettingsCompat.java b/webkit/webkit/src/main/java/androidx/webkit/WebSettingsCompat.java
index 7d079ab..1b31dca 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/WebSettingsCompat.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/WebSettingsCompat.java
@@ -16,7 +16,6 @@
 
 package androidx.webkit;
 
-import android.annotation.SuppressLint;
 import android.webkit.WebSettings;
 
 import androidx.annotation.IntDef;
@@ -58,7 +57,6 @@
      * {@link WebViewFeature#isFeatureSupported(String)}
      * returns true for {@link WebViewFeature#OFF_SCREEN_PRERASTER}.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.OFF_SCREEN_PRERASTER,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setOffscreenPreRaster(@NonNull WebSettings settings, boolean enabled) {
@@ -84,7 +82,6 @@
      * @return {@code true} if this WebView will raster tiles when it is
      * offscreen but attached to a window.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.OFF_SCREEN_PRERASTER,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static boolean getOffscreenPreRaster(@NonNull WebSettings settings) {
@@ -117,7 +114,6 @@
      *
      * @param enabled Whether Safe Browsing is enabled.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.SAFE_BROWSING_ENABLE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setSafeBrowsingEnabled(@NonNull WebSettings settings, boolean enabled) {
@@ -142,7 +138,6 @@
      *
      * @return {@code true} if Safe Browsing is enabled and {@code false} otherwise.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.SAFE_BROWSING_ENABLE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static boolean getSafeBrowsingEnabled(@NonNull WebSettings settings) {
@@ -180,7 +175,6 @@
      *
      * @param menuItems an integer field flag for the menu items to be disabled.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.DISABLED_ACTION_MODE_MENU_ITEMS,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setDisabledActionModeMenuItems(@NonNull WebSettings settings,
@@ -207,7 +201,6 @@
      *
      * @return all the disabled menu item flags combined with bitwise OR.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.DISABLED_ACTION_MODE_MENU_ITEMS,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @MenuItemFlags int getDisabledActionModeMenuItems(@NonNull WebSettings settings) {
@@ -239,7 +232,6 @@
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.SUPPRESS_ERROR_PAGE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setWillSuppressErrorPage(@NonNull WebSettings settings,
@@ -268,7 +260,6 @@
      * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.SUPPRESS_ERROR_PAGE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static boolean willSuppressErrorPage(@NonNull WebSettings settings) {
@@ -344,7 +335,6 @@
      * @param forceDarkMode the force dark mode to set.
      * @see #getForceDark
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.FORCE_DARK,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setForceDark(@NonNull WebSettings settings,
@@ -373,7 +363,6 @@
      * @return the currently set force dark mode.
      * @see #setForceDark
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.FORCE_DARK,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @ForceDark int getForceDark(@NonNull WebSettings settings) {
@@ -457,7 +446,6 @@
      * @param forceDarkBehavior the force dark strategy to set.
      * @see #getForceDarkStrategy
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.FORCE_DARK_STRATEGY,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setForceDarkStrategy(@NonNull WebSettings settings,
@@ -485,7 +473,6 @@
      * @return the currently set force dark strategy.
      * @see #setForceDarkStrategy
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.FORCE_DARK_STRATEGY,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @ForceDarkStrategy int getForceDarkStrategy(@NonNull WebSettings settings) {
diff --git a/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java b/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
index 547a9bd..68a57ab 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
@@ -156,7 +156,6 @@
      *                  requests with callbacks.
      * @param callback  The callback to be invoked.
      */
-    @SuppressWarnings("NewApi")
     @RequiresFeature(name = WebViewFeature.VISUAL_STATE_CALLBACK,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void postVisualStateCallback(@NonNull WebView webview, long requestId,
@@ -201,7 +200,6 @@
      * @param callback will be called on the UI thread with {@code true} if initialization is
      * successful, {@code false} otherwise.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.START_SAFE_BROWSING,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void startSafeBrowsing(@NonNull Context context,
@@ -244,7 +242,6 @@
      * allowlist, {@code false} if any hosts are malformed. The callback will be run on the UI
      * thread
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.SAFE_BROWSING_ALLOWLIST,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setSafeBrowsingAllowlist(@NonNull Set<String> hosts,
@@ -298,7 +295,6 @@
      * @deprecated Please use {@link #setSafeBrowsingAllowlist(Set, ValueCallback)} instead.
      */
     @Deprecated
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.SAFE_BROWSING_WHITELIST,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setSafeBrowsingWhitelist(@NonNull List<String> hosts,
@@ -316,7 +312,6 @@
      *
      * @return the url pointing to a privacy policy document which can be displayed to users.
      */
-    @SuppressLint("NewApi")
     @NonNull
     @RequiresFeature(name = WebViewFeature.SAFE_BROWSING_PRIVACY_POLICY_URL,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
@@ -442,7 +437,6 @@
      *
      * @return an array of size two, containing the two message ports that form the message channel.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.CREATE_WEB_MESSAGE_CHANNEL,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @NonNull WebMessagePortCompat[] createWebMessageChannel(
@@ -474,7 +468,6 @@
      * @param message the WebMessage
      * @param targetOrigin the target origin.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.POST_WEB_MESSAGE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void postWebMessage(@NonNull WebView webview, @NonNull WebMessageCompat message,
@@ -758,7 +751,6 @@
      *
      * @return the WebViewClient, or a default client if not yet set
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.GET_WEB_VIEW_CLIENT,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @NonNull WebViewClient getWebViewClient(@NonNull WebView webview) {
@@ -782,7 +774,6 @@
      *
      * @return the WebChromeClient, or {@code null} if not yet set
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.GET_WEB_CHROME_CLIENT,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @Nullable WebChromeClient getWebChromeClient(@NonNull WebView webview) {
@@ -817,7 +808,6 @@
      *         with this {@link android.webkit.WebView}, or {@code null} if
      *         WebView is not running in multiprocess mode.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.GET_WEB_VIEW_RENDERER,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @Nullable WebViewRenderProcess getWebViewRenderProcess(@NonNull WebView webview) {
@@ -864,7 +854,7 @@
      */
     // WebViewRenderProcessClient is a callback class, so it should be last. See
     // https://issuetracker.google.com/issues/139770271.
-    @SuppressLint({"LambdaLast", "NewApi"})
+    @SuppressLint({"LambdaLast"})
     @RequiresFeature(name = WebViewFeature.WEB_VIEW_RENDERER_CLIENT_BASIC_USAGE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setWebViewRenderProcessClient(
@@ -904,7 +894,6 @@
      * @param webViewRenderProcessClient the {@link WebViewRenderProcessClient} to set for
      *                                   callbacks.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.WEB_VIEW_RENDERER_CLIENT_BASIC_USAGE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static void setWebViewRenderProcessClient(
@@ -935,7 +924,6 @@
      * {@link #setWebViewRenderProcessClient(WebView,WebViewRenderProcessClient)} or {@code null}
      * otherwise.
      */
-    @SuppressLint("NewApi")
     @RequiresFeature(name = WebViewFeature.WEB_VIEW_RENDERER_CLIENT_BASIC_USAGE,
             enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
     public static @Nullable WebViewRenderProcessClient getWebViewRenderProcessClient(
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/SafeBrowsingResponseImpl.java b/webkit/webkit/src/main/java/androidx/webkit/internal/SafeBrowsingResponseImpl.java
index fe0c9e5..f4a0ecd 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/SafeBrowsingResponseImpl.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/SafeBrowsingResponseImpl.java
@@ -16,7 +16,6 @@
 
 package androidx.webkit.internal;
 
-import android.annotation.SuppressLint;
 import android.webkit.SafeBrowsingResponse;
 
 import androidx.annotation.NonNull;
@@ -77,7 +76,6 @@
         return mBoundaryInterface;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void showInterstitial(boolean allowReporting) {
         final WebViewFeatureInternal feature =
@@ -91,7 +89,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void proceed(boolean report) {
         final WebViewFeatureInternal feature =
@@ -105,7 +102,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void backToSafety(boolean report) {
         final WebViewFeatureInternal feature =
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerControllerImpl.java b/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerControllerImpl.java
index 068031b..87b1dd0 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerControllerImpl.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerControllerImpl.java
@@ -16,7 +16,6 @@
 
 package androidx.webkit.internal;
 
-import android.annotation.SuppressLint;
 import android.webkit.ServiceWorkerController;
 
 import androidx.annotation.NonNull;
@@ -39,7 +38,6 @@
     private ServiceWorkerControllerBoundaryInterface mBoundaryInterface;
     private final ServiceWorkerWebSettingsCompat mWebSettings;
 
-    @SuppressLint("NewApi")
     public ServiceWorkerControllerImpl() {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_BASIC_USAGE;
         if (feature.isSupportedByFramework()) {
@@ -80,7 +78,6 @@
         return mWebSettings;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void setServiceWorkerClient(@Nullable ServiceWorkerClientCompat client)  {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_BASIC_USAGE;
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerWebSettingsImpl.java b/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerWebSettingsImpl.java
index cad3ccb..d246d6d 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerWebSettingsImpl.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/ServiceWorkerWebSettingsImpl.java
@@ -16,7 +16,6 @@
 
 package androidx.webkit.internal;
 
-import android.annotation.SuppressLint;
 import android.webkit.ServiceWorkerWebSettings;
 
 import androidx.annotation.NonNull;
@@ -87,7 +86,6 @@
         return mBoundaryInterface;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void setCacheMode(int mode) {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_CACHE_MODE;
@@ -100,7 +98,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public int getCacheMode() {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_CACHE_MODE;
@@ -113,7 +110,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void setAllowContentAccess(boolean allow) {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_CONTENT_ACCESS;
@@ -126,7 +122,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public boolean getAllowContentAccess() {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_CONTENT_ACCESS;
@@ -139,7 +134,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void setAllowFileAccess(boolean allow) {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_FILE_ACCESS;
@@ -152,7 +146,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public boolean getAllowFileAccess() {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.SERVICE_WORKER_FILE_ACCESS;
@@ -165,7 +158,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void setBlockNetworkLoads(boolean flag) {
         final WebViewFeatureInternal feature =
@@ -179,7 +171,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public boolean getBlockNetworkLoads() {
         final WebViewFeatureInternal feature =
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/TracingControllerImpl.java b/webkit/webkit/src/main/java/androidx/webkit/internal/TracingControllerImpl.java
index cb37552..9492e87 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/TracingControllerImpl.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/TracingControllerImpl.java
@@ -16,8 +16,6 @@
 
 package androidx.webkit.internal;
 
-import android.annotation.SuppressLint;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.webkit.TracingConfig;
@@ -37,7 +35,6 @@
     private android.webkit.TracingController mFrameworksImpl;
     private TracingControllerBoundaryInterface mBoundaryInterface;
 
-    @SuppressLint("NewApi")
     public TracingControllerImpl() {
         final WebViewFeatureInternal feature =
                 WebViewFeatureInternal.TRACING_CONTROLLER_BASIC_USAGE;
@@ -67,7 +64,6 @@
         return mBoundaryInterface;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public boolean isTracing() {
         final WebViewFeatureInternal feature =
@@ -81,7 +77,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void start(@NonNull TracingConfig tracingConfig) {
         if (tracingConfig == null) {
@@ -105,7 +100,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public boolean stop(OutputStream outputStream, Executor executor) {
         final WebViewFeatureInternal feature =
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePortImpl.java b/webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePortImpl.java
index 88d5b52..8f41bdc5 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePortImpl.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePortImpl.java
@@ -16,7 +16,6 @@
 
 package androidx.webkit.internal;
 
-import android.annotation.SuppressLint;
 import android.os.Handler;
 import android.webkit.WebMessage;
 import android.webkit.WebMessagePort;
@@ -70,7 +69,6 @@
         return mBoundaryInterface;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void postMessage(@NonNull WebMessageCompat message) {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.WEB_MESSAGE_PORT_POST_MESSAGE;
@@ -85,7 +83,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void close() {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.WEB_MESSAGE_PORT_CLOSE;
@@ -98,7 +95,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void setWebMessageCallback(@NonNull final WebMessageCallbackCompat callback) {
         final WebViewFeatureInternal feature =
@@ -106,7 +102,6 @@
         if (feature.isSupportedByFramework()) {
             getFrameworksImpl().setWebMessageCallback(new WebMessagePort.WebMessageCallback() {
                 @Override
-                @SuppressWarnings("NewApi")
                 public void onMessage(WebMessagePort port, WebMessage message) {
                     callback.onMessage(new WebMessagePortImpl(port),
                             frameworkMessageToCompat(message));
@@ -121,7 +116,6 @@
         }
     }
 
-    @SuppressLint("NewApi")
     @Override
     public void setWebMessageCallback(Handler handler,
             @NonNull final WebMessageCallbackCompat callback) {
@@ -129,7 +123,6 @@
         if (feature.isSupportedByFramework()) {
             getFrameworksImpl().setWebMessageCallback(new WebMessagePort.WebMessageCallback() {
                 @Override
-                @SuppressWarnings("NewApi")
                 public void onMessage(WebMessagePort port, WebMessage message) {
                     callback.onMessage(new WebMessagePortImpl(port),
                             frameworkMessageToCompat(message));
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/WebResourceErrorImpl.java b/webkit/webkit/src/main/java/androidx/webkit/internal/WebResourceErrorImpl.java
index 806afb0..2a79eae 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/WebResourceErrorImpl.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/WebResourceErrorImpl.java
@@ -16,7 +16,6 @@
 
 package androidx.webkit.internal;
 
-import android.annotation.SuppressLint;
 import android.webkit.WebResourceError;
 
 import androidx.annotation.NonNull;
@@ -76,7 +75,6 @@
         return mBoundaryInterface;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public int getErrorCode() {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.WEB_RESOURCE_ERROR_GET_CODE;
@@ -90,7 +88,6 @@
     }
 
     @NonNull
-    @SuppressLint("NewApi")
     @Override
     public CharSequence getDescription() {
         final WebViewFeatureInternal feature =
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewRenderProcessImpl.java b/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewRenderProcessImpl.java
index 6ccde44..d8308fe 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewRenderProcessImpl.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewRenderProcessImpl.java
@@ -16,8 +16,6 @@
 
 package androidx.webkit.internal;
 
-import android.annotation.SuppressLint;
-
 import androidx.annotation.NonNull;
 import androidx.webkit.WebViewRenderProcess;
 
@@ -85,7 +83,6 @@
         return renderer;
     }
 
-    @SuppressLint("NewApi")
     @Override
     public boolean terminate() {
         final WebViewFeatureInternal feature = WebViewFeatureInternal.WEB_VIEW_RENDERER_TERMINATE;
diff --git a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java
index ac259b5..2541438 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/background/systemjob/SystemJobInfoConverter.java
@@ -18,7 +18,6 @@
 
 import static androidx.annotation.VisibleForTesting.PACKAGE_PRIVATE;
 
-import android.annotation.SuppressLint;
 import android.app.job.JobInfo;
 import android.content.ComponentName;
 import android.content.Context;
@@ -139,7 +138,6 @@
      * @param builder     The instance of {@link JobInfo.Builder}.
      * @param networkType The {@link NetworkType} instance.
      */
-    @SuppressLint("UnsafeNewApiCall")
     static void setRequiredNetwork(
             @NonNull JobInfo.Builder builder,
             @NonNull NetworkType networkType) {
diff --git a/work/workmanager/src/main/java/androidx/work/impl/model/WorkTypeConverters.java b/work/workmanager/src/main/java/androidx/work/impl/model/WorkTypeConverters.java
index 4e665ea..fb15ba8 100644
--- a/work/workmanager/src/main/java/androidx/work/impl/model/WorkTypeConverters.java
+++ b/work/workmanager/src/main/java/androidx/work/impl/model/WorkTypeConverters.java
@@ -195,7 +195,6 @@
      * @return The associated int constant
      */
     @TypeConverter
-    @SuppressWarnings("NewApi")
     public static int networkTypeToInt(NetworkType networkType) {
         switch (networkType) {
             case NOT_REQUIRED: