Merge "AGP 8.1.0-alpha03" into androidx-main
diff --git a/activity/activity-ktx/api/1.7.0-beta02.txt b/activity/activity-ktx/api/1.7.0-beta02.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/1.7.0-beta02.txt
+++ b/activity/activity-ktx/api/1.7.0-beta02.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/activity/activity-ktx/api/current.ignore b/activity/activity-ktx/api/current.ignore
index 1b633a6..f970b04 100644
--- a/activity/activity-ktx/api/current.ignore
+++ b/activity/activity-ktx/api/current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.activity.OnBackPressedDispatcherKt:
     Removed class androidx.activity.OnBackPressedDispatcherKt
+RemovedClass: androidx.activity.PipHintTrackerKt:
+    Removed class androidx.activity.PipHintTrackerKt
 
 
 RemovedPackage: androidx.activity.contextaware:
diff --git a/activity/activity-ktx/api/current.txt b/activity/activity-ktx/api/current.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/current.txt
+++ b/activity/activity-ktx/api/current.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/activity/activity-ktx/api/restricted_1.7.0-beta02.txt b/activity/activity-ktx/api/restricted_1.7.0-beta02.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/restricted_1.7.0-beta02.txt
+++ b/activity/activity-ktx/api/restricted_1.7.0-beta02.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/activity/activity-ktx/api/restricted_current.ignore b/activity/activity-ktx/api/restricted_current.ignore
index 1b633a6..f970b04 100644
--- a/activity/activity-ktx/api/restricted_current.ignore
+++ b/activity/activity-ktx/api/restricted_current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.activity.OnBackPressedDispatcherKt:
     Removed class androidx.activity.OnBackPressedDispatcherKt
+RemovedClass: androidx.activity.PipHintTrackerKt:
+    Removed class androidx.activity.PipHintTrackerKt
 
 
 RemovedPackage: androidx.activity.contextaware:
diff --git a/activity/activity-ktx/api/restricted_current.txt b/activity/activity-ktx/api/restricted_current.txt
index a1c4a4d..4023c72 100644
--- a/activity/activity-ktx/api/restricted_current.txt
+++ b/activity/activity-ktx/api/restricted_current.txt
@@ -6,9 +6,6 @@
     method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<? extends VM> viewModels(androidx.activity.ComponentActivity, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
   }
 
-  public final class PipHintTrackerKt {
-  }
-
 }
 
 package androidx.activity.result {
diff --git a/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java
index fb31d2e..acb2ed1 100644
--- a/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java
+++ b/appsearch/appsearch/src/androidTest/java/androidx/appsearch/cts/app/AppSearchSessionCtsTestBase.java
@@ -3718,6 +3718,72 @@
     }
 
     @Test
+    public void testQuery_verbatimSearch() throws Exception {
+        assumeTrue(mDb1.getFeatures().isFeatureSupported(Features.VERBATIM_SEARCH));
+        AppSearchSchema verbatimSchema = new AppSearchSchema.Builder("VerbatimSchema")
+                .addProperty(new StringPropertyConfig.Builder("verbatimProp")
+                        .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+                        .setIndexingType(StringPropertyConfig.INDEXING_TYPE_EXACT_TERMS)
+                        .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_VERBATIM)
+                        .build()
+                ).build();
+        mDb1.setSchemaAsync(new SetSchemaRequest.Builder()
+                .setForceOverride(true).addSchemas(verbatimSchema).build()).get();
+
+        GenericDocument email = new GenericDocument.Builder<>(
+                "namespace1", "id1", "VerbatimSchema")
+                .setPropertyString("verbatimProp", "Hello, world!")
+                .build();
+        mDb1.putAsync(new PutDocumentsRequest.Builder().addGenericDocuments(email).build()).get();
+
+        SearchResults sr = mDb1.search("\"Hello, world!\"",
+                new SearchSpec.Builder().setVerbatimSearchEnabled(true).build());
+        List<SearchResult> page = sr.getNextPageAsync().get();
+
+        // Verbatim tokenization would produce one token 'Hello, world!'.
+        assertThat(page).hasSize(1);
+        assertThat(page.get(0).getGenericDocument().getId()).isEqualTo("id1");
+    }
+
+    @Test
+    public void testQuery_verbatimSearchWithoutEnablingFeatureFails() throws Exception {
+        assumeTrue(mDb1.getFeatures().isFeatureSupported(Features.VERBATIM_SEARCH));
+        AppSearchSchema verbatimSchema = new AppSearchSchema.Builder("VerbatimSchema")
+                .addProperty(new StringPropertyConfig.Builder("verbatimProp")
+                        .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+                        .setIndexingType(StringPropertyConfig.INDEXING_TYPE_EXACT_TERMS)
+                        .setTokenizerType(StringPropertyConfig.TOKENIZER_TYPE_VERBATIM)
+                        .build()
+                ).build();
+        mDb1.setSchemaAsync(new SetSchemaRequest.Builder()
+                .setForceOverride(true).addSchemas(verbatimSchema).build()).get();
+
+        GenericDocument email = new GenericDocument.Builder<>(
+                "namespace1", "id1", "VerbatimSchema")
+                .setPropertyString("verbatimProp", "Hello, world!")
+                .build();
+        mDb1.putAsync(new PutDocumentsRequest.Builder().addGenericDocuments(email).build()).get();
+
+        // TODO(b/208654892) Disable ListFilterQueryLanguage once EXPERIMENTAL_ICING_ADVANCED_QUERY
+        //  is fully supported.
+        // ListFilterQueryLanguage is enabled so that EXPERIMENTAL_ICING_ADVANCED_QUERY gets enabled
+        // in IcingLib.
+        // Disable VERBATIM_SEARCH in the SearchSpec.
+        SearchResults searchResults = mDb1.search("\"Hello, world!\"",
+                new SearchSpec.Builder()
+                        .setListFilterQueryLanguageEnabled(true)
+                        .setVerbatimSearchEnabled(false)
+                        .build());
+        Throwable throwable = assertThrows(ExecutionException.class,
+                () -> searchResults.getNextPageAsync().get()).getCause();
+        assertThat(throwable).isInstanceOf(AppSearchException.class);
+        AppSearchException exception = (AppSearchException) throwable;
+        assertThat(exception.getResultCode()).isEqualTo(RESULT_INVALID_ARGUMENT);
+        assertThat(exception).hasMessageThat().contains("Attempted use of unenabled feature");
+        assertThat(exception).hasMessageThat().contains(Features.VERBATIM_SEARCH);
+    }
+
+    @Test
     public void testQuery_propertyWeights() throws Exception {
         assumeTrue(mDb1.getFeatures().isFeatureSupported(Features.SEARCH_SPEC_PROPERTY_WEIGHTS));
 
diff --git a/benchmark/benchmark-common/api/current.ignore b/benchmark/benchmark-common/api/current.ignore
index a2a7089..3de172d 100644
--- a/benchmark/benchmark-common/api/current.ignore
+++ b/benchmark/benchmark-common/api/current.ignore
@@ -7,7 +7,15 @@
     Removed class androidx.benchmark.Api27Kt
 RemovedClass: androidx.benchmark.Api29Kt:
     Removed class androidx.benchmark.Api29Kt
+RemovedClass: androidx.benchmark.ConfigurationErrorKt:
+    Removed class androidx.benchmark.ConfigurationErrorKt
 RemovedClass: androidx.benchmark.MetricNameUtilsKt:
     Removed class androidx.benchmark.MetricNameUtilsKt
 RemovedClass: androidx.benchmark.ProfilerKt:
     Removed class androidx.benchmark.ProfilerKt
+RemovedClass: androidx.benchmark.UserspaceTracingKt:
+    Removed class androidx.benchmark.UserspaceTracingKt
+
+
+RemovedPackage: androidx.benchmark.perfetto:
+    Removed package androidx.benchmark.perfetto
diff --git a/benchmark/benchmark-common/api/current.txt b/benchmark/benchmark-common/api/current.txt
index 38c42d4..fbecc64 100644
--- a/benchmark/benchmark-common/api/current.txt
+++ b/benchmark/benchmark-common/api/current.txt
@@ -14,21 +14,5 @@
   public static final class BenchmarkState.Companion {
   }
 
-  public final class ConfigurationErrorKt {
-  }
-
-  public final class UserspaceTracingKt {
-  }
-
-}
-
-package androidx.benchmark.perfetto {
-
-  public final class PerfettoConfigKt {
-  }
-
-  public final class UiStateKt {
-  }
-
 }
 
diff --git a/benchmark/benchmark-common/api/public_plus_experimental_current.txt b/benchmark/benchmark-common/api/public_plus_experimental_current.txt
index 313b2c0..1d9e4cd 100644
--- a/benchmark/benchmark-common/api/public_plus_experimental_current.txt
+++ b/benchmark/benchmark-common/api/public_plus_experimental_current.txt
@@ -21,15 +21,9 @@
   @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public static @interface BenchmarkState.Companion.ExperimentalExternalReport {
   }
 
-  public final class ConfigurationErrorKt {
-  }
-
   @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalBenchmarkStateApi {
   }
 
-  public final class UserspaceTracingKt {
-  }
-
 }
 
 package androidx.benchmark.perfetto {
@@ -37,9 +31,6 @@
   @kotlin.RequiresOptIn @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface ExperimentalPerfettoCaptureApi {
   }
 
-  public final class PerfettoConfigKt {
-  }
-
   @RequiresApi(21) @androidx.benchmark.perfetto.ExperimentalPerfettoCaptureApi public final class PerfettoTrace {
     ctor public PerfettoTrace(String path);
     method public String getPath();
@@ -58,8 +49,5 @@
     method public void record(String fileLabel, kotlin.jvm.functions.Function0<kotlin.Unit> block);
   }
 
-  public final class UiStateKt {
-  }
-
 }
 
diff --git a/benchmark/benchmark-common/api/restricted_current.ignore b/benchmark/benchmark-common/api/restricted_current.ignore
index a2a7089..3de172d 100644
--- a/benchmark/benchmark-common/api/restricted_current.ignore
+++ b/benchmark/benchmark-common/api/restricted_current.ignore
@@ -7,7 +7,15 @@
     Removed class androidx.benchmark.Api27Kt
 RemovedClass: androidx.benchmark.Api29Kt:
     Removed class androidx.benchmark.Api29Kt
+RemovedClass: androidx.benchmark.ConfigurationErrorKt:
+    Removed class androidx.benchmark.ConfigurationErrorKt
 RemovedClass: androidx.benchmark.MetricNameUtilsKt:
     Removed class androidx.benchmark.MetricNameUtilsKt
 RemovedClass: androidx.benchmark.ProfilerKt:
     Removed class androidx.benchmark.ProfilerKt
+RemovedClass: androidx.benchmark.UserspaceTracingKt:
+    Removed class androidx.benchmark.UserspaceTracingKt
+
+
+RemovedPackage: androidx.benchmark.perfetto:
+    Removed package androidx.benchmark.perfetto
diff --git a/benchmark/benchmark-common/api/restricted_current.txt b/benchmark/benchmark-common/api/restricted_current.txt
index 752b162..df789c6 100644
--- a/benchmark/benchmark-common/api/restricted_current.txt
+++ b/benchmark/benchmark-common/api/restricted_current.txt
@@ -16,21 +16,5 @@
   public static final class BenchmarkState.Companion {
   }
 
-  public final class ConfigurationErrorKt {
-  }
-
-  public final class UserspaceTracingKt {
-  }
-
-}
-
-package androidx.benchmark.perfetto {
-
-  public final class PerfettoConfigKt {
-  }
-
-  public final class UiStateKt {
-  }
-
 }
 
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
index b0b4ad3..9b279ae 100644
--- a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Shell.kt
@@ -301,6 +301,18 @@
     }
 
     /**
+     * Direct execution of executeShellCommand which doesn't account for scripting functionality,
+     * and doesn't capture stderr.
+     *
+     * Only use this function if you do not care about failure / errors.
+     */
+    @RequiresApi(21)
+    @CheckResult
+    fun executeCommandCaptureStdoutOnly(command: String): String {
+        return ShellImpl.executeCommandUnsafe(command)
+    }
+
+    /**
      * Creates a executable shell script that can be started. Similar to [executeScriptCaptureStdoutStderr]
      * but allows deferring and caching script execution.
      *
diff --git a/benchmark/benchmark-macro/api/current.ignore b/benchmark/benchmark-macro/api/current.ignore
index d3ebf7c..12f722e 100644
--- a/benchmark/benchmark-macro/api/current.ignore
+++ b/benchmark/benchmark-macro/api/current.ignore
@@ -1,10 +1,16 @@
 // Baseline format: 1.0
 RemovedClass: androidx.benchmark.macro.Api29Kt:
     Removed class androidx.benchmark.macro.Api29Kt
+RemovedClass: androidx.benchmark.macro.BaselineProfilesKt:
+    Removed class androidx.benchmark.macro.BaselineProfilesKt
+RemovedClass: androidx.benchmark.macro.CompilationModeKt:
+    Removed class androidx.benchmark.macro.CompilationModeKt
 RemovedClass: androidx.benchmark.macro.IdeSummaryStringKt:
     Removed class androidx.benchmark.macro.IdeSummaryStringKt
 RemovedClass: androidx.benchmark.macro.IterationResultKt:
     Removed class androidx.benchmark.macro.IterationResultKt
+RemovedClass: androidx.benchmark.macro.MacrobenchmarkKt:
+    Removed class androidx.benchmark.macro.MacrobenchmarkKt
 RemovedClass: androidx.benchmark.macro.MetricKt:
     Removed class androidx.benchmark.macro.MetricKt
 RemovedClass: androidx.benchmark.macro.MetricResultExtensionsKt:
diff --git a/benchmark/benchmark-macro/api/current.txt b/benchmark/benchmark-macro/api/current.txt
index a52d9ae..79e6202 100644
--- a/benchmark/benchmark-macro/api/current.txt
+++ b/benchmark/benchmark-macro/api/current.txt
@@ -9,9 +9,6 @@
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode UseIfAvailable;
   }
 
-  public final class BaselineProfilesKt {
-  }
-
   public abstract sealed class CompilationMode {
     field public static final androidx.benchmark.macro.CompilationMode.Companion Companion;
     field public static final androidx.benchmark.macro.CompilationMode DEFAULT;
@@ -38,16 +35,10 @@
     property public final int warmupIterations;
   }
 
-  public final class CompilationModeKt {
-  }
-
   public final class FrameTimingMetric extends androidx.benchmark.macro.Metric {
     ctor public FrameTimingMetric();
   }
 
-  public final class MacrobenchmarkKt {
-  }
-
   public final class MacrobenchmarkScope {
     ctor public MacrobenchmarkScope(String packageName, boolean launchWithClearTask);
     method public void dropKernelPageCache();
diff --git a/benchmark/benchmark-macro/api/public_plus_experimental_current.txt b/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
index c83f76f..23fad4a 100644
--- a/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
+++ b/benchmark/benchmark-macro/api/public_plus_experimental_current.txt
@@ -13,9 +13,6 @@
     enum_constant public static final androidx.benchmark.macro.BaselineProfileMode UseIfAvailable;
   }
 
-  public final class BaselineProfilesKt {
-  }
-
   public abstract sealed class CompilationMode {
     field public static final androidx.benchmark.macro.CompilationMode.Companion Companion;
     field public static final androidx.benchmark.macro.CompilationMode DEFAULT;
@@ -46,9 +43,6 @@
     property public final int warmupIterations;
   }
 
-  public final class CompilationModeKt {
-  }
-
   @kotlin.RequiresOptIn(message="This Macrobenchmark API is experimental.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.FUNCTION}) public @interface ExperimentalMacrobenchmarkApi {
   }
 
@@ -62,9 +56,6 @@
     ctor public FrameTimingMetric();
   }
 
-  public final class MacrobenchmarkKt {
-  }
-
   public final class MacrobenchmarkScope {
     ctor public MacrobenchmarkScope(String packageName, boolean launchWithClearTask);
     method public void dropKernelPageCache();
diff --git a/benchmark/benchmark-macro/api/restricted_current.ignore b/benchmark/benchmark-macro/api/restricted_current.ignore
index 17a4adc..870da85 100644
--- a/benchmark/benchmark-macro/api/restricted_current.ignore
+++ b/benchmark/benchmark-macro/api/restricted_current.ignore
@@ -7,6 +7,8 @@
     Removed class androidx.benchmark.macro.IdeSummaryStringKt
 RemovedClass: androidx.benchmark.macro.IterationResultKt:
     Removed class androidx.benchmark.macro.IterationResultKt
+RemovedClass: androidx.benchmark.macro.MacrobenchmarkKt:
+    Removed class androidx.benchmark.macro.MacrobenchmarkKt
 RemovedClass: androidx.benchmark.macro.MetricKt:
     Removed class androidx.benchmark.macro.MetricKt
 RemovedClass: androidx.benchmark.macro.MetricResultExtensionsKt:
diff --git a/benchmark/benchmark-macro/api/restricted_current.txt b/benchmark/benchmark-macro/api/restricted_current.txt
index 4de13a2..6c99860 100644
--- a/benchmark/benchmark-macro/api/restricted_current.txt
+++ b/benchmark/benchmark-macro/api/restricted_current.txt
@@ -56,9 +56,6 @@
     ctor public FrameTimingMetric();
   }
 
-  public final class MacrobenchmarkKt {
-  }
-
   public final class MacrobenchmarkScope {
     ctor public MacrobenchmarkScope(String packageName, boolean launchWithClearTask);
     method public void dropKernelPageCache();
diff --git a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
index 7da4d03..5cf3d0a 100644
--- a/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
+++ b/benchmark/benchmark-macro/src/androidTest/java/androidx/benchmark/macro/PowerRailTest.kt
@@ -40,6 +40,15 @@
     }
 
     @Test
+    fun hasMetrics_oldDevice() {
+        assumeTrue(Build.VERSION.SDK_INT <= 29) // powerstats didn't exist
+        assertFalse(PowerRail.hasMetrics(throwOnMissingMetrics = false))
+        assertFailsWith<UnsupportedOperationException> {
+            PowerRail.hasMetrics(throwOnMissingMetrics = true)
+        }
+    }
+
+    @Test
     fun hasMetrics_false() {
         // The test is using a mocked output of `dumpsys powerstats`
         val output = """
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt
index 69f0fb6..1013b84 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/PowerRail.kt
@@ -43,7 +43,9 @@
      * @Throws UnsupportedOperationException if `hasException == true` and no rail metrics are found.
      */
     fun hasMetrics(throwOnMissingMetrics: Boolean = false): Boolean {
-        val output = Shell.executeScriptCaptureStdout(DUMPSYS_POWERSTATS)
+        // Note - we don't capture stderr, since if dumpsys fails due to missing
+        // service, we'll correctly fail to find channels in stdout
+        val output = Shell.executeCommandCaptureStdoutOnly(DUMPSYS_POWERSTATS)
         return hasMetrics(output, throwOnMissingMetrics)
     }
 
diff --git a/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt b/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt
index bc68ffa..47ae5ff 100644
--- a/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt
+++ b/buildSrc-tests/src/test/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilderTest.kt
@@ -249,12 +249,6 @@
         validate(mediaBuilder.build())
     }
 
-    @Test
-    fun testValidMediaConfigXml_presubmit() {
-        mediaBuilder.isPostsubmit(false)
-        validate(mediaBuilder.build())
-    }
-
     private fun validate(xml: String) {
         val parser = SAXParserFactory.newInstance().newSAXParser()
         return parser.parse(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt
index 52cc075..f7bcd5c 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/AndroidTestConfigBuilder.kt
@@ -49,11 +49,6 @@
     fun testApkSha256(testApkSha256: String) = apply { this.testApkSha256 = testApkSha256 }
     fun testRunner(testRunner: String) = apply { this.testRunner = testRunner }
 
-    private data class InstrumentationArg(
-        val key: String,
-        val value: String
-    )
-
     fun buildJson(): String {
         val gson = GsonBuilder().setPrettyPrinting().create()
         val instrumentationArgs = if (isBenchmark && !isPostsubmit) {
@@ -77,9 +72,6 @@
             "instrumentationArgs" to instrumentationArgs,
             "additionalApkKeys" to additionalApkKeys
         )
-        if (isBenchmark && !isPostsubmit) {
-            values["instrumentationArgs"]
-        }
         return gson.toJson(values)
     }
 
@@ -138,22 +130,25 @@
 }
 
 class MediaConfigBuilder {
+    lateinit var configName: String
     lateinit var clientApkName: String
+    lateinit var clientApkSha256: String
     lateinit var clientApplicationId: String
     var isClientPrevious: Boolean = true
-    var isPostsubmit: Boolean = true
     var isServicePrevious: Boolean = true
     lateinit var minSdk: String
     var runAllTests: Boolean = true
     lateinit var serviceApkName: String
+    lateinit var serviceApkSha256: String
     lateinit var serviceApplicationId: String
     var tags: MutableList<String> = mutableListOf()
     lateinit var testRunner: String
 
+    fun configName(configName: String) = apply { this.configName = configName }
     fun clientApkName(clientApkName: String) = apply { this.clientApkName = clientApkName }
+    fun clientApkSha256(clientApkSha256: String) = apply { this.clientApkSha256 = clientApkSha256 }
     fun clientApplicationId(clientApplicationId: String) =
         apply { this.clientApplicationId = clientApplicationId }
-    fun isPostsubmit(isPostsubmit: Boolean) = apply { this.isPostsubmit = isPostsubmit }
     fun isClientPrevious(isClientPrevious: Boolean) = apply {
         this.isClientPrevious = isClientPrevious
     }
@@ -163,6 +158,9 @@
     fun minSdk(minSdk: String) = apply { this.minSdk = minSdk }
     fun runAllTests(runAllTests: Boolean) = apply { this.runAllTests = runAllTests }
     fun serviceApkName(serviceApkName: String) = apply { this.serviceApkName = serviceApkName }
+    fun serviceApkSha256(serviceApkSha256: String) = apply {
+        this.serviceApkSha256 = serviceApkSha256
+    }
     fun serviceApplicationId(serviceApplicationId: String) =
         apply { this.serviceApplicationId = serviceApplicationId }
     fun tag(tag: String) = apply { this.tags.add(tag) }
@@ -184,6 +182,41 @@
         }
     }
 
+    private fun mediaInstrumentationArgsForJson(): List<InstrumentationArg> {
+        return listOf(
+            if (isClientPrevious) {
+                InstrumentationArg(key = "client_version", value = "previous")
+            } else {
+                InstrumentationArg(key = "client_version", value = "tot")
+            },
+            if (isServicePrevious) {
+                InstrumentationArg(key = "service_version", value = "previous")
+            } else {
+                InstrumentationArg(key = "service_version", value = "tot")
+            }
+        )
+    }
+
+    fun buildJson(forClient: Boolean): String {
+        val gson = GsonBuilder().setPrettyPrinting().create()
+        val instrumentationArgs =
+            listOf(
+                InstrumentationArg("notAnnotation", "androidx.test.filters.FlakyTest")
+            ) + mediaInstrumentationArgsForJson()
+        val values = mapOf(
+            "name" to "$configName-${if (forClient) "clientTests" else "serviceTests"}",
+            "minSdkVersion" to minSdk,
+            "testSuiteTags" to tags,
+            "testApk" to if (forClient) clientApkName else serviceApkName,
+            "testApkSha256" to if (forClient) clientApkSha256 else serviceApkSha256,
+            "appApk" to if (forClient) serviceApkName else clientApkName,
+            "appApkSha256" to if (forClient) serviceApkSha256 else clientApkSha256,
+            "instrumentationArgs" to instrumentationArgs,
+            "additionalApkKeys" to listOf<String>()
+        )
+        return gson.toJson(values)
+    }
+
     fun build(): String {
         val sb = StringBuilder()
         sb.append(XML_HEADER_AND_LICENSE)
@@ -243,6 +276,11 @@
     }
 }
 
+private data class InstrumentationArg(
+    val key: String,
+    val value: String
+)
+
 /**
  * These constants are the building blocks of the xml configs, but
  * they aren't very readable as separate chunks. Look to
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
index f805e8d..dccb090 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateMediaTestConfigurationTask.kt
@@ -21,6 +21,7 @@
 import com.android.build.api.variant.BuiltArtifact
 import com.android.build.api.variant.BuiltArtifacts
 import com.android.build.api.variant.BuiltArtifactsLoader
+import java.io.File
 import org.gradle.api.DefaultTask
 import org.gradle.api.file.DirectoryProperty
 import org.gradle.api.file.RegularFileProperty
@@ -33,7 +34,6 @@
 import org.gradle.api.tasks.PathSensitivity
 import org.gradle.api.tasks.TaskAction
 import org.gradle.work.DisableCachingByDefault
-import java.io.File
 
 /**
  * Writes three configuration files to test combinations of media client & service in
@@ -108,18 +108,6 @@
     @get:OutputFile
     abstract val clientToTServiceToT: RegularFileProperty
 
-    /**
-     * output file where we write the sha256 of each APK we refer in tests.
-     */
-    @get:OutputFile
-    abstract val shaReportOutput: RegularFileProperty
-
-    /**
-     * output file where we write the sha256 of each APK we refer in constained tests.
-     */
-    @get:OutputFile
-    abstract val constrainedShaReportOutput: RegularFileProperty
-
     @get:OutputFile
     abstract val constrainedClientPreviousServiceToT: RegularFileProperty
 
@@ -129,6 +117,24 @@
     @get:OutputFile
     abstract val constrainedClientToTServiceToT: RegularFileProperty
 
+    @get:OutputFile
+    abstract val jsonClientPreviousServiceToTClientTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientPreviousServiceToTServiceTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServicePreviousClientTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServicePreviousServiceTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServiceToTClientTests: RegularFileProperty
+
+    @get:OutputFile
+    abstract val jsonClientToTServiceToTServiceTests: RegularFileProperty
+
     @TaskAction
     fun generateAndroidTestZip() {
         val clientToTApk = resolveApk(clientToTFolder, clientToTLoader)
@@ -137,37 +143,75 @@
         val servicePreviousApk = resolveApk(
             servicePreviousFolder, servicePreviousLoader
         )
-        val testApkSha256Report = TestApkSha256Report()
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, serviceToTApk, clientToTPath.get(),
-            serviceToTPath.get(), clientToTServiceToT, false, false
+            clientApk = clientToTApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientToTPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = clientToTServiceToT,
+            jsonClientOutputFile = jsonClientToTServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientToTServiceToTServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = false
         )
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, servicePreviousApk, clientToTPath.get(),
-            servicePreviousPath.get(), clientToTServicePrevious, false, true
+            clientApk = clientToTApk,
+            serviceApk = servicePreviousApk,
+            clientPath = clientToTPath.get(),
+            servicePath = servicePreviousPath.get(),
+            xmlOutputFile = clientToTServicePrevious,
+            jsonClientOutputFile = jsonClientToTServicePreviousClientTests,
+            jsonServiceOutputFile = jsonClientToTServicePreviousServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = true
         )
         writeConfigFileContent(
-            testApkSha256Report, clientPreviousApk, serviceToTApk, clientPreviousPath.get(),
-            serviceToTPath.get(), clientPreviousServiceToT, true, false
+            clientApk = clientPreviousApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientPreviousPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = clientPreviousServiceToT,
+            jsonClientOutputFile = jsonClientPreviousServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientPreviousServiceToTServiceTests,
+            isClientPrevious = true,
+            isServicePrevious = false
         )
         // write constrained configs as well
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, serviceToTApk, clientToTPath.get(),
-            serviceToTPath.get(), constrainedClientToTServiceToT, false, false, true
+            clientApk = clientToTApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientToTPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = constrainedClientToTServiceToT,
+            jsonClientOutputFile = jsonClientToTServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientToTServiceToTServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = false,
+            isConstrained = true
         )
         writeConfigFileContent(
-            testApkSha256Report, clientToTApk, servicePreviousApk, clientToTPath.get(),
-            servicePreviousPath.get(), constrainedClientToTServicePrevious, false, true, true
+            clientApk = clientToTApk,
+            serviceApk = servicePreviousApk,
+            clientPath = clientToTPath.get(),
+            servicePath = servicePreviousPath.get(),
+            xmlOutputFile = constrainedClientToTServicePrevious,
+            jsonClientOutputFile = jsonClientToTServicePreviousClientTests,
+            jsonServiceOutputFile = jsonClientToTServicePreviousServiceTests,
+            isClientPrevious = false,
+            isServicePrevious = true,
+            isConstrained = true
         )
         writeConfigFileContent(
-            testApkSha256Report, clientPreviousApk, serviceToTApk, clientPreviousPath.get(),
-            serviceToTPath.get(), constrainedClientPreviousServiceToT, true, false, true
-        )
-        testApkSha256Report.writeToFile(
-            shaReportOutput.get().asFile
-        )
-        testApkSha256Report.writeToFile(
-            constrainedShaReportOutput.get().asFile
+            clientApk = clientPreviousApk,
+            serviceApk = serviceToTApk,
+            clientPath = clientPreviousPath.get(),
+            servicePath = serviceToTPath.get(),
+            xmlOutputFile = constrainedClientPreviousServiceToT,
+            jsonClientOutputFile = jsonClientPreviousServiceToTClientTests,
+            jsonServiceOutputFile = jsonClientPreviousServiceToTServiceTests,
+            isClientPrevious = true,
+            isServicePrevious = false,
+            isConstrained = true
         )
     }
 
@@ -185,32 +229,28 @@
     }
 
     private fun writeConfigFileContent(
-        testApkSha256Report: TestApkSha256Report,
         clientApk: BuiltArtifacts,
         serviceApk: BuiltArtifacts,
         clientPath: String,
         servicePath: String,
-        outputFile: RegularFileProperty,
+        xmlOutputFile: RegularFileProperty,
+        jsonClientOutputFile: RegularFileProperty,
+        jsonServiceOutputFile: RegularFileProperty,
         isClientPrevious: Boolean,
         isServicePrevious: Boolean,
         isConstrained: Boolean = false
     ) {
         val configBuilder = MediaConfigBuilder()
+        configBuilder.configName(xmlOutputFile.asFile.get().name)
         val clientBuiltArtifact = clientApk.elements.single()
         val serviceBuiltArtifact = serviceApk.elements.single()
         val clientApkName = clientBuiltArtifact.resolveName(clientPath)
         val serviceApkName = serviceBuiltArtifact.resolveName(servicePath)
-        testApkSha256Report.addFile(
-            name = clientApkName,
-            builtArtifact = clientBuiltArtifact
-        )
-        testApkSha256Report.addFile(
-            name = serviceApkName,
-            builtArtifact = serviceBuiltArtifact
-        )
         configBuilder.clientApkName(clientApkName)
+            .clientApkSha256(sha256(File(clientBuiltArtifact.outputFile)))
             .clientApplicationId(clientApk.applicationId)
             .serviceApkName(serviceApkName)
+            .serviceApkSha256(sha256(File(serviceBuiltArtifact.outputFile)))
             .serviceApplicationId(serviceApk.applicationId)
             .minSdk(minSdk.get().toString())
             .testRunner(testRunner.get())
@@ -218,8 +258,6 @@
             .isServicePrevious(isServicePrevious)
             .tag("androidx_unit_tests")
             .tag("media_compat")
-        val isPresubmit = presubmit.get()
-        configBuilder.isPostsubmit(!isPresubmit)
         when (affectedModuleDetectorSubset.get()) {
             ProjectSubset.DEPENDENT_PROJECTS -> {
                 if (isConstrained) {
@@ -229,7 +267,7 @@
                 }
             }
             ProjectSubset.NONE -> {
-                if (isPresubmit) {
+                if (presubmit.get()) {
                     configBuilder.runAllTests(false)
                 } else {
                     configBuilder.runAllTests(true)
@@ -240,14 +278,14 @@
             }
         }
 
-        val resolvedOutputFile: File = outputFile.asFile.get()
-        if (!resolvedOutputFile.exists()) {
-            if (!resolvedOutputFile.createNewFile()) {
-                throw RuntimeException(
-                    "Failed to create test configuration file: $resolvedOutputFile"
-                )
-            }
+        createOrFail(xmlOutputFile).writeText(configBuilder.build())
+        if (!isConstrained) {
+            createOrFail(jsonClientOutputFile).writeText(
+                configBuilder.buildJson(forClient = true)
+            )
+            createOrFail(jsonServiceOutputFile).writeText(
+                configBuilder.buildJson(forClient = false)
+            )
         }
-        resolvedOutputFile.writeText(configBuilder.build())
     }
 }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt
index ee7c132..8ffa96a 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/GenerateTestConfigurationTask.kt
@@ -228,7 +228,7 @@
     }
 }
 
-private fun createOrFail(fileProperty: RegularFileProperty): File {
+internal fun createOrFail(fileProperty: RegularFileProperty): File {
     val resolvedFile: File = fileProperty.asFile.get()
     if (!resolvedFile.exists()) {
         if (!resolvedFile.createNewFile()) {
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
index b890f55..3cceead 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/testConfiguration/TestSuiteConfiguration.kt
@@ -38,13 +38,13 @@
 import com.android.build.api.variant.HasAndroidTest
 import com.android.build.gradle.BaseExtension
 import com.android.build.gradle.tasks.PackageAndroidArtifact
+import java.io.File
 import org.gradle.api.Project
 import org.gradle.api.UnknownTaskException
 import org.gradle.api.file.DuplicatesStrategy
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Zip
 import org.gradle.kotlin.dsl.getByType
-import java.io.File
 
 /**
  * Creates and configures the test config generation task for a project. Configuration includes
@@ -236,7 +236,6 @@
 ) {
     val mediaPrefix = getMediaConfigTaskPrefix(isMedia2)
     val mediaTask = getOrCreateMediaTestConfigTask(this, isMedia2)
-    val sha256ReportFileName = "$mediaPrefix$SHA_256_FILE_SUFFIX"
     mediaTask.configure {
         it as GenerateMediaTestConfigurationTask
         if (this.name.contains("client")) {
@@ -296,16 +295,40 @@
                 "${mediaPrefix}ClientToTServiceToT$variantName.xml"
             )
         )
-        it.shaReportOutput.fileValue(
+        it.jsonClientPreviousServiceToTClientTests.fileValue(
             File(
                 this.getTestConfigDirectory(),
-                sha256ReportFileName
+                "${mediaPrefix}ClientPreviousServiceToTClientTests$variantName.json"
             )
         )
-        it.constrainedShaReportOutput.fileValue(
+        it.jsonClientPreviousServiceToTServiceTests.fileValue(
             File(
-                this.getConstrainedTestConfigDirectory(),
-                sha256ReportFileName
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientPreviousServiceToTServiceTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServicePreviousClientTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServicePreviousClientTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServicePreviousServiceTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServicePreviousServiceTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServiceToTClientTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServiceToTClientTests$variantName.json"
+            )
+        )
+        it.jsonClientToTServiceToTServiceTests.fileValue(
+            File(
+                this.getTestConfigDirectory(),
+                "${mediaPrefix}ClientToTServiceToTServiceTests$variantName.json"
             )
         )
         it.minSdk.set(minSdk)
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt
index 66e6799..2f41d39 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/config/CameraAppConfig.kt
@@ -25,7 +25,6 @@
 import androidx.camera.camera2.pipe.integration.impl.CameraInteropStateCallbackRepository
 import androidx.camera.core.impl.CameraFactory
 import androidx.camera.core.impl.CameraThreadConfig
-import androidx.camera.core.impl.utils.executor.CameraXExecutors
 import dagger.Component
 import dagger.Module
 import dagger.Provides
@@ -41,26 +40,16 @@
         @Provides
         fun provideCameraPipe(
             context: Context,
-            cameraThreadConfig: CameraThreadConfig,
-            cameraInteropStateCallbackRepository: CameraInteropStateCallbackRepository,
-        ): CameraPipe {
-            val executor = cameraThreadConfig.cameraExecutor
-            val sequentialExecutor = CameraXExecutors.newSequentialExecutor(executor)
-            return CameraPipe(
-                CameraPipe.Config(
-                    appContext = context.applicationContext,
-                    cameraInteropConfig = CameraPipe.CameraInteropConfig(
-                        cameraInteropStateCallbackRepository.deviceStateCallback,
-                        cameraInteropStateCallbackRepository.sessionStateCallback
-                    ),
-                    threadConfig = CameraPipe.ThreadConfig(
-                        defaultLightweightExecutor = sequentialExecutor,
-                        defaultBackgroundExecutor = executor,
-                        defaultCameraExecutor = sequentialExecutor,
-                    )
+            cameraInteropStateCallbackRepository: CameraInteropStateCallbackRepository
+        ): CameraPipe = CameraPipe(
+            CameraPipe.Config(
+                appContext = context.applicationContext,
+                cameraInteropConfig = CameraPipe.CameraInteropConfig(
+                    cameraInteropStateCallbackRepository.deviceStateCallback,
+                    cameraInteropStateCallbackRepository.sessionStateCallback
                 )
             )
-        }
+        )
 
         @Provides
         fun provideCameraDevices(cameraPipe: CameraPipe): CameraDevices {
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt
index d98a0a7..bde605f 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplCameraReopenTest.kt
@@ -619,6 +619,11 @@
         return forwardCameraManagerCompatImpl.cameraIdList
     }
 
+    @Throws(CameraAccessExceptionCompat::class)
+    override fun getConcurrentCameraIds(): MutableSet<MutableSet<String>> {
+        return forwardCameraManagerCompatImpl.concurrentCameraIds
+    }
+
     override fun registerAvailabilityCallback(
         executor: Executor,
         callback: AvailabilityCallback
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt
index 419da9e..d0c8fd7 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplStateTest.kt
@@ -440,6 +440,10 @@
             return forwardCameraManager.cameraIdList
         }
 
+        override fun getConcurrentCameraIds(): MutableSet<MutableSet<String>> {
+            return forwardCameraManager.concurrentCameraIds
+        }
+
         override fun registerAvailabilityCallback(
             executor: Executor,
             callback: CameraManager.AvailabilityCallback
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java
index 67a8646..6c5d17b 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompat.java
@@ -33,6 +33,7 @@
 import androidx.camera.core.impl.utils.MainThreadAsyncHandler;
 
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 /**
@@ -99,6 +100,24 @@
     }
 
     /**
+     * Return set of set of camera ids, each set includes one combination of the camera ids that
+     * could operate concurrently.
+     *
+     * <p>This API is added in API Level 30, any lower API version will return empty set instead.
+     *
+     * <p>The behavior of this method matches that of {@link CameraManager#getConcurrentCameraIds()}
+     * except that {@link CameraAccessExceptionCompat} is thrown in place of
+     * {@link CameraAccessException} for convenience.
+     *
+     * @return Set of set of camera ids.
+     * @throws CameraAccessExceptionCompat
+     */
+    @NonNull
+    public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+        return mImpl.getConcurrentCameraIds();
+    }
+
+    /**
      * Register a callback to be notified about camera device availability.
      *
      * <p>The behavior of this method matches that of {@link
@@ -236,6 +255,12 @@
         @NonNull
         String[] getCameraIdList() throws CameraAccessExceptionCompat;
 
+        /**
+         * Return the set of concurrent camera id set which could operate concurrently.
+         */
+        @NonNull
+        Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat;
+
         void registerAvailabilityCallback(
                 @NonNull /* @CallbackExecutor */ Executor executor,
                 @NonNull CameraManager.AvailabilityCallback callback);
@@ -267,7 +292,9 @@
         @NonNull
         static CameraManagerCompatImpl from(@NonNull Context context,
                 @NonNull Handler compatHandler) {
-            if (Build.VERSION.SDK_INT >= 29) {
+            if (Build.VERSION.SDK_INT >= 30) {
+                return new CameraManagerCompatApi30Impl(context);
+            } else if (Build.VERSION.SDK_INT >= 29) {
                 return new CameraManagerCompatApi29Impl(context);
             } else if (Build.VERSION.SDK_INT >= 28) {
                 // Can use Executor directly on API 28+
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatApi30Impl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatApi30Impl.java
new file mode 100644
index 0000000..f268c1d
--- /dev/null
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatApi30Impl.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2023 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.camera.camera2.internal.compat;
+
+import android.content.Context;
+import android.hardware.camera2.CameraAccessException;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+
+import java.util.Set;
+
+@RequiresApi(30)
+class CameraManagerCompatApi30Impl extends CameraManagerCompatApi29Impl {
+
+    CameraManagerCompatApi30Impl(@NonNull Context context) {
+        super(context);
+    }
+
+    @NonNull
+    @Override
+    public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+        try {
+            return mCameraManager.getConcurrentCameraIds();
+        } catch (CameraAccessException e) {
+            throw CameraAccessExceptionCompat.toCameraAccessExceptionCompat(e);
+        }
+    }
+}
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java
index c85a016..9a62f4b 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/CameraManagerCompatBaseImpl.java
@@ -30,8 +30,10 @@
 import androidx.annotation.RequiresPermission;
 import androidx.core.util.Preconditions;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 @RequiresApi(21)
@@ -61,6 +63,12 @@
         }
     }
 
+    @NonNull
+    @Override
+    public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+        return Collections.emptySet();
+    }
+
     @Override
     public void registerAvailabilityCallback(@NonNull Executor executor,
             @NonNull CameraManager.AvailabilityCallback callback) {
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
index fc150d4..e901fb7 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CameraInfoImplTest.java
@@ -57,6 +57,8 @@
 import androidx.lifecycle.MutableLiveData;
 import androidx.test.core.app.ApplicationProvider;
 
+import com.google.common.collect.ImmutableSet;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -73,6 +75,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 @RunWith(RobolectricTestRunner.class)
@@ -817,6 +820,12 @@
             return mCameraIdCharacteristics.keySet().toArray(new String[0]);
         }
 
+        @NonNull
+        @Override
+        public Set<Set<String>> getConcurrentCameraIds() throws CameraAccessExceptionCompat {
+            return ImmutableSet.of(mCameraIdCharacteristics.keySet());
+        }
+
         @Override
         public void registerAvailabilityCallback(@NonNull Executor executor,
                 @NonNull CameraManager.AvailabilityCallback callback) {
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java
index a09d6d3..ff18ed7 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/CameraManagerCompatTest.java
@@ -49,7 +49,9 @@
 import org.robolectric.shadows.ShadowLog;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.Executor;
 
 @RunWith(RobolectricTestRunner.class)
@@ -223,6 +225,32 @@
         manager.getCameraCharacteristicsCompat(CAMERA_ID);
     }
 
+    @Test
+    @Config(minSdk = 30)
+    public void getConcurrentCameraIds_api30_returnsCameraIdSets() {
+        CameraManagerCompat manager = CameraManagerCompat.from(mContext);
+
+        try {
+            manager.getConcurrentCameraIds();
+        } catch (CameraAccessExceptionCompat e) {
+        }
+
+        verify(mInteractionCallback, times(1)).getConcurrentCameraIds();
+    }
+
+    @Test
+    @Config(maxSdk = 29)
+    public void getConcurrentCameraIds_api29_returnsCameraIdSets() {
+        CameraManagerCompat manager = CameraManagerCompat.from(mContext);
+
+        try {
+            manager.getConcurrentCameraIds();
+        } catch (CameraAccessExceptionCompat e) {
+        }
+
+        verify(mInteractionCallback, times(0)).getConcurrentCameraIds();
+    }
+
     /**
      * A Shadow of {@link CameraManager} which forwards invocations to callbacks to record
      * interactions.
@@ -234,6 +262,8 @@
     public static final class ShadowInteractionCameraManager {
 
         private static final String[] EMPTY_ID_LIST = new String[]{};
+
+        private static final Set<Set<String>> EMPTY_CONCURRENT_ID_SET = new HashSet<>();
         private final List<Callback> mCallbacks = new ArrayList<>();
         private final CameraCharacteristics mCameraCharacteristics =
                 mock(CameraCharacteristics.class);
@@ -254,6 +284,17 @@
 
         @NonNull
         @Implementation
+        protected Set<Set<String>> getConcurrentCameraIds() throws CameraAccessException {
+            if (Build.VERSION.SDK_INT >= 30) {
+                for (Callback cb : mCallbacks) {
+                    Set<Set<String>> ids = cb.getConcurrentCameraIds();
+                }
+            }
+            return EMPTY_CONCURRENT_ID_SET;
+        }
+
+        @NonNull
+        @Implementation
         protected CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId) {
             for (Callback cb : mCallbacks) {
                 cb.getCameraCharacteristics(cameraId);
@@ -312,6 +353,9 @@
             String[] getCameraIdList();
 
             @NonNull
+            Set<Set<String>> getConcurrentCameraIds();
+
+            @NonNull
             CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId);
 
             void openCamera(@NonNull String cameraId,
diff --git a/compose/animation/animation-graphics/api/1.4.0-beta01.txt b/compose/animation/animation-graphics/api/1.4.0-beta01.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/1.4.0-beta01.txt
+++ b/compose/animation/animation-graphics/api/1.4.0-beta01.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation-graphics/api/current.ignore b/compose/animation/animation-graphics/api/current.ignore
index aa10076..0ab1064 100644
--- a/compose/animation/animation-graphics/api/current.ignore
+++ b/compose/animation/animation-graphics/api/current.ignore
@@ -1,8 +1,6 @@
 // Baseline format: 1.0
-RemovedClass: androidx.compose.animation.graphics.res.AnimatorResources_androidKt:
-    Removed class androidx.compose.animation.graphics.res.AnimatorResources_androidKt
-
-
+RemovedPackage: androidx.compose.animation.graphics.res:
+    Removed package androidx.compose.animation.graphics.res
 RemovedPackage: androidx.compose.animation.graphics.vector:
     Removed package androidx.compose.animation.graphics.vector
 RemovedPackage: androidx.compose.animation.graphics.vector.compat:
diff --git a/compose/animation/animation-graphics/api/current.txt b/compose/animation/animation-graphics/api/current.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/current.txt
+++ b/compose/animation/animation-graphics/api/current.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt b/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt
+++ b/compose/animation/animation-graphics/api/restricted_1.4.0-beta01.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation-graphics/api/restricted_current.ignore b/compose/animation/animation-graphics/api/restricted_current.ignore
index aa10076..0ab1064 100644
--- a/compose/animation/animation-graphics/api/restricted_current.ignore
+++ b/compose/animation/animation-graphics/api/restricted_current.ignore
@@ -1,8 +1,6 @@
 // Baseline format: 1.0
-RemovedClass: androidx.compose.animation.graphics.res.AnimatorResources_androidKt:
-    Removed class androidx.compose.animation.graphics.res.AnimatorResources_androidKt
-
-
+RemovedPackage: androidx.compose.animation.graphics.res:
+    Removed package androidx.compose.animation.graphics.res
 RemovedPackage: androidx.compose.animation.graphics.vector:
     Removed package androidx.compose.animation.graphics.vector
 RemovedPackage: androidx.compose.animation.graphics.vector.compat:
diff --git a/compose/animation/animation-graphics/api/restricted_current.txt b/compose/animation/animation-graphics/api/restricted_current.txt
index 22d9fe9..e6f50d0 100644
--- a/compose/animation/animation-graphics/api/restricted_current.txt
+++ b/compose/animation/animation-graphics/api/restricted_current.txt
@@ -1,11 +1 @@
 // Signature format: 4.0
-package androidx.compose.animation.graphics.res {
-
-  public final class AnimatedVectorPainterResources_androidKt {
-  }
-
-  public final class AnimatedVectorResources_androidKt {
-  }
-
-}
-
diff --git a/compose/animation/animation/api/1.4.0-beta01.txt b/compose/animation/animation/api/1.4.0-beta01.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/1.4.0-beta01.txt
+++ b/compose/animation/animation/api/1.4.0-beta01.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/animation/animation/api/current.ignore b/compose/animation/animation/api/current.ignore
index 2b0509b..84b4c0e 100644
--- a/compose/animation/animation/api/current.ignore
+++ b/compose/animation/animation/api/current.ignore
@@ -3,6 +3,8 @@
     Method androidx.compose.animation.TransitionKt.animateColor has changed return type from androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> to androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>
 
 
+RemovedClass: androidx.compose.animation.AnimatedContentKt:
+    Removed class androidx.compose.animation.AnimatedContentKt
 RemovedClass: androidx.compose.animation.FlingCalculatorKt:
     Removed class androidx.compose.animation.FlingCalculatorKt
 
diff --git a/compose/animation/animation/api/current.txt b/compose/animation/animation/api/current.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/current.txt
+++ b/compose/animation/animation/api/current.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/animation/animation/api/restricted_1.4.0-beta01.txt b/compose/animation/animation/api/restricted_1.4.0-beta01.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/restricted_1.4.0-beta01.txt
+++ b/compose/animation/animation/api/restricted_1.4.0-beta01.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/animation/animation/api/restricted_current.ignore b/compose/animation/animation/api/restricted_current.ignore
index 2b0509b..84b4c0e 100644
--- a/compose/animation/animation/api/restricted_current.ignore
+++ b/compose/animation/animation/api/restricted_current.ignore
@@ -3,6 +3,8 @@
     Method androidx.compose.animation.TransitionKt.animateColor has changed return type from androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> to androidx.compose.runtime.State<? extends androidx.compose.ui.graphics.Color>
 
 
+RemovedClass: androidx.compose.animation.AnimatedContentKt:
+    Removed class androidx.compose.animation.AnimatedContentKt
 RemovedClass: androidx.compose.animation.FlingCalculatorKt:
     Removed class androidx.compose.animation.FlingCalculatorKt
 
diff --git a/compose/animation/animation/api/restricted_current.txt b/compose/animation/animation/api/restricted_current.txt
index 6b3a0d0..9b1560f 100644
--- a/compose/animation/animation/api/restricted_current.txt
+++ b/compose/animation/animation/api/restricted_current.txt
@@ -5,9 +5,6 @@
     method @Deprecated @androidx.compose.runtime.Composable public static androidx.compose.animation.core.DecayAnimationSpec<java.lang.Float> defaultDecayAnimationSpec();
   }
 
-  public final class AnimatedContentKt {
-  }
-
   public final class AnimatedVisibilityKt {
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void AnimatedVisibility(androidx.compose.foundation.layout.RowScope, boolean visible, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.animation.EnterTransition enter, optional androidx.compose.animation.ExitTransition exit, optional String label, kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedVisibilityScope,kotlin.Unit> content);
diff --git a/compose/foundation/foundation-layout/api/1.4.0-beta01.txt b/compose/foundation/foundation-layout/api/1.4.0-beta01.txt
index f9ca366c..95dd32f 100644
--- a/compose/foundation/foundation-layout/api/1.4.0-beta01.txt
+++ b/compose/foundation/foundation-layout/api/1.4.0-beta01.txt
@@ -111,9 +111,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -219,9 +216,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation-layout/api/current.ignore b/compose/foundation/foundation-layout/api/current.ignore
index 5539ed4..2e1b921 100644
--- a/compose/foundation/foundation-layout/api/current.ignore
+++ b/compose/foundation/foundation-layout/api/current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.foundation.layout.RowColumnImplKt:
     Removed class androidx.compose.foundation.layout.RowColumnImplKt
+RemovedClass: androidx.compose.foundation.layout.WindowInsetsConnection_androidKt:
+    Removed class androidx.compose.foundation.layout.WindowInsetsConnection_androidKt
 
 
 RemovedPackage: androidx.compose.foundation.layout.internal:
diff --git a/compose/foundation/foundation-layout/api/current.txt b/compose/foundation/foundation-layout/api/current.txt
index f9ca366c..95dd32f 100644
--- a/compose/foundation/foundation-layout/api/current.txt
+++ b/compose/foundation/foundation-layout/api/current.txt
@@ -111,9 +111,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -219,9 +216,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt b/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt
index bdbef98..3202872 100644
--- a/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt
+++ b/compose/foundation/foundation-layout/api/restricted_1.4.0-beta01.txt
@@ -114,9 +114,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -224,9 +221,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation-layout/api/restricted_current.ignore b/compose/foundation/foundation-layout/api/restricted_current.ignore
index 5539ed4..2e1b921 100644
--- a/compose/foundation/foundation-layout/api/restricted_current.ignore
+++ b/compose/foundation/foundation-layout/api/restricted_current.ignore
@@ -1,6 +1,8 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.foundation.layout.RowColumnImplKt:
     Removed class androidx.compose.foundation.layout.RowColumnImplKt
+RemovedClass: androidx.compose.foundation.layout.WindowInsetsConnection_androidKt:
+    Removed class androidx.compose.foundation.layout.WindowInsetsConnection_androidKt
 
 
 RemovedPackage: androidx.compose.foundation.layout.internal:
diff --git a/compose/foundation/foundation-layout/api/restricted_current.txt b/compose/foundation/foundation-layout/api/restricted_current.txt
index bdbef98..3202872 100644
--- a/compose/foundation/foundation-layout/api/restricted_current.txt
+++ b/compose/foundation/foundation-layout/api/restricted_current.txt
@@ -114,9 +114,6 @@
     method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
-  public final class FlowLayoutKt {
-  }
-
   public final class IntrinsicKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier height(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier requiredHeight(androidx.compose.ui.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
@@ -224,9 +221,6 @@
   public static final class WindowInsets.Companion {
   }
 
-  public final class WindowInsetsConnection_androidKt {
-  }
-
   public final class WindowInsetsKt {
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional int left, optional int top, optional int right, optional int bottom);
     method public static androidx.compose.foundation.layout.WindowInsets WindowInsets(optional float left, optional float top, optional float right, optional float bottom);
diff --git a/compose/foundation/foundation/api/1.4.0-beta01.txt b/compose/foundation/foundation/api/1.4.0-beta01.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/1.4.0-beta01.txt
+++ b/compose/foundation/foundation/api/1.4.0-beta01.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/api/current.ignore b/compose/foundation/foundation/api/current.ignore
index 414998d..529b30a 100644
--- a/compose/foundation/foundation/api/current.ignore
+++ b/compose/foundation/foundation/api/current.ignore
@@ -11,6 +11,14 @@
     Removed class androidx.compose.foundation.Clickable_androidKt
 RemovedClass: androidx.compose.foundation.DarkTheme_androidKt:
     Removed class androidx.compose.foundation.DarkTheme_androidKt
+RemovedClass: androidx.compose.foundation.FocusedBoundsKt:
+    Removed class androidx.compose.foundation.FocusedBoundsKt
+RemovedClass: androidx.compose.foundation.MagnifierKt:
+    Removed class androidx.compose.foundation.MagnifierKt
+RemovedClass: androidx.compose.foundation.OverscrollConfigurationKt:
+    Removed class androidx.compose.foundation.OverscrollConfigurationKt
+RemovedClass: androidx.compose.foundation.OverscrollKt:
+    Removed class androidx.compose.foundation.OverscrollKt
 RemovedClass: androidx.compose.foundation.TempListUtilsKt:
     Removed class androidx.compose.foundation.TempListUtilsKt
 RemovedClass: androidx.compose.foundation.gestures.AndroidScrollable_androidKt:
@@ -41,36 +49,6 @@
     Removed class androidx.compose.foundation.lazy.grid.LazyGridMeasureKt
 RemovedClass: androidx.compose.foundation.lazy.grid.LazySemanticsKt:
     Removed class androidx.compose.foundation.lazy.grid.LazySemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.IntervalListKt:
-    Removed class androidx.compose.foundation.lazy.layout.IntervalListKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt
-RemovedClass: androidx.compose.foundation.lazy.layout.PinnableParentKt:
-    Removed class androidx.compose.foundation.lazy.layout.PinnableParentKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt
 RemovedClass: androidx.compose.foundation.text.AndroidCursorHandle_androidKt:
     Removed class androidx.compose.foundation.text.AndroidCursorHandle_androidKt
 RemovedClass: androidx.compose.foundation.text.ContextMenu_androidKt:
@@ -163,5 +141,13 @@
     Removed method androidx.compose.foundation.gestures.TapGestureDetectorKt.waitForUpOrCancellation(androidx.compose.ui.input.pointer.AwaitPointerEventScope,kotlin.coroutines.Continuation<? super androidx.compose.ui.input.pointer.PointerInputChange>)
 
 
+RemovedPackage: androidx.compose.foundation.gestures.snapping:
+    Removed package androidx.compose.foundation.gestures.snapping
 RemovedPackage: androidx.compose.foundation.internal:
     Removed package androidx.compose.foundation.internal
+RemovedPackage: androidx.compose.foundation.lazy.layout:
+    Removed package androidx.compose.foundation.lazy.layout
+RemovedPackage: androidx.compose.foundation.lazy.staggeredgrid:
+    Removed package androidx.compose.foundation.lazy.staggeredgrid
+RemovedPackage: androidx.compose.foundation.relocation:
+    Removed package androidx.compose.foundation.relocation
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt b/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt
index 9c5def2..9918bcc 100644
--- a/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt
+++ b/compose/foundation/foundation/api/public_plus_experimental_1.4.0-beta01.txt
@@ -787,7 +787,7 @@
   }
 
   public final class LazyLayoutPinnableItemKt {
-    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(Object? key, int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi public final class LazyLayoutPinnedItemList implements kotlin.jvm.internal.markers.KMappedMarker java.util.List<androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList.PinnedItem> {
@@ -796,7 +796,9 @@
 
   @androidx.compose.foundation.ExperimentalFoundationApi public static sealed interface LazyLayoutPinnedItemList.PinnedItem {
     method public int getIndex();
+    method public Object? getKey();
     property public abstract int index;
+    property public abstract Object? key;
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Stable public final class LazyLayoutPrefetchState {
diff --git a/compose/foundation/foundation/api/public_plus_experimental_current.txt b/compose/foundation/foundation/api/public_plus_experimental_current.txt
index 9c5def2..9918bcc 100644
--- a/compose/foundation/foundation/api/public_plus_experimental_current.txt
+++ b/compose/foundation/foundation/api/public_plus_experimental_current.txt
@@ -787,7 +787,7 @@
   }
 
   public final class LazyLayoutPinnableItemKt {
-    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+    method @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static void LazyLayoutPinnableItem(Object? key, int index, androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList pinnedItemList, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi public final class LazyLayoutPinnedItemList implements kotlin.jvm.internal.markers.KMappedMarker java.util.List<androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList.PinnedItem> {
@@ -796,7 +796,9 @@
 
   @androidx.compose.foundation.ExperimentalFoundationApi public static sealed interface LazyLayoutPinnedItemList.PinnedItem {
     method public int getIndex();
+    method public Object? getKey();
     property public abstract int index;
+    property public abstract Object? key;
   }
 
   @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Stable public final class LazyLayoutPrefetchState {
diff --git a/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt b/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt
+++ b/compose/foundation/foundation/api/restricted_1.4.0-beta01.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/api/restricted_current.ignore b/compose/foundation/foundation/api/restricted_current.ignore
index 414998d..529b30a 100644
--- a/compose/foundation/foundation/api/restricted_current.ignore
+++ b/compose/foundation/foundation/api/restricted_current.ignore
@@ -11,6 +11,14 @@
     Removed class androidx.compose.foundation.Clickable_androidKt
 RemovedClass: androidx.compose.foundation.DarkTheme_androidKt:
     Removed class androidx.compose.foundation.DarkTheme_androidKt
+RemovedClass: androidx.compose.foundation.FocusedBoundsKt:
+    Removed class androidx.compose.foundation.FocusedBoundsKt
+RemovedClass: androidx.compose.foundation.MagnifierKt:
+    Removed class androidx.compose.foundation.MagnifierKt
+RemovedClass: androidx.compose.foundation.OverscrollConfigurationKt:
+    Removed class androidx.compose.foundation.OverscrollConfigurationKt
+RemovedClass: androidx.compose.foundation.OverscrollKt:
+    Removed class androidx.compose.foundation.OverscrollKt
 RemovedClass: androidx.compose.foundation.TempListUtilsKt:
     Removed class androidx.compose.foundation.TempListUtilsKt
 RemovedClass: androidx.compose.foundation.gestures.AndroidScrollable_androidKt:
@@ -41,36 +49,6 @@
     Removed class androidx.compose.foundation.lazy.grid.LazyGridMeasureKt
 RemovedClass: androidx.compose.foundation.lazy.grid.LazySemanticsKt:
     Removed class androidx.compose.foundation.lazy.grid.LazySemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.IntervalListKt:
-    Removed class androidx.compose.foundation.lazy.layout.IntervalListKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyAnimateScrollKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutPrefetcher_androidKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazyLayoutSemanticsKt
-RemovedClass: androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt:
-    Removed class androidx.compose.foundation.lazy.layout.LazySaveableStateHolderKt
-RemovedClass: androidx.compose.foundation.lazy.layout.PinnableParentKt:
-    Removed class androidx.compose.foundation.lazy.layout.PinnableParentKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridCellsKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridItemProviderKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasurePolicyKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridMeasureResultKt
-RemovedClass: androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt:
-    Removed class androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridSemanticsKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewKt
-RemovedClass: androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt:
-    Removed class androidx.compose.foundation.relocation.BringIntoViewResponder_androidKt
 RemovedClass: androidx.compose.foundation.text.AndroidCursorHandle_androidKt:
     Removed class androidx.compose.foundation.text.AndroidCursorHandle_androidKt
 RemovedClass: androidx.compose.foundation.text.ContextMenu_androidKt:
@@ -163,5 +141,13 @@
     Removed method androidx.compose.foundation.gestures.TapGestureDetectorKt.waitForUpOrCancellation(androidx.compose.ui.input.pointer.AwaitPointerEventScope,kotlin.coroutines.Continuation<? super androidx.compose.ui.input.pointer.PointerInputChange>)
 
 
+RemovedPackage: androidx.compose.foundation.gestures.snapping:
+    Removed package androidx.compose.foundation.gestures.snapping
 RemovedPackage: androidx.compose.foundation.internal:
     Removed package androidx.compose.foundation.internal
+RemovedPackage: androidx.compose.foundation.lazy.layout:
+    Removed package androidx.compose.foundation.lazy.layout
+RemovedPackage: androidx.compose.foundation.lazy.staggeredgrid:
+    Removed package androidx.compose.foundation.lazy.staggeredgrid
+RemovedPackage: androidx.compose.foundation.relocation:
+    Removed package androidx.compose.foundation.relocation
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index 4ea5f3c..b8a93c56 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -6,9 +6,6 @@
     method public static androidx.compose.ui.Modifier background(androidx.compose.ui.Modifier, androidx.compose.ui.graphics.Brush brush, optional androidx.compose.ui.graphics.Shape shape, optional float alpha);
   }
 
-  public final class BasicMarqueeKt {
-  }
-
   public final class BorderKt {
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, androidx.compose.foundation.BorderStroke border, optional androidx.compose.ui.graphics.Shape shape);
     method public static androidx.compose.ui.Modifier border(androidx.compose.ui.Modifier, float width, long color, optional androidx.compose.ui.graphics.Shape shape);
@@ -58,9 +55,6 @@
     method public static androidx.compose.ui.Modifier focusable(androidx.compose.ui.Modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
   }
 
-  public final class FocusedBoundsKt {
-  }
-
   public final class HoverableKt {
     method public static androidx.compose.ui.Modifier hoverable(androidx.compose.ui.Modifier, androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional boolean enabled);
   }
@@ -86,9 +80,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.foundation.Indication> LocalIndication;
   }
 
-  public final class MagnifierKt {
-  }
-
   public enum MutatePriority {
     method public static androidx.compose.foundation.MutatePriority valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.compose.foundation.MutatePriority[] values();
@@ -103,12 +94,6 @@
     method public suspend <T, R> Object? mutateWith(T? receiver, optional androidx.compose.foundation.MutatePriority priority, kotlin.jvm.functions.Function2<? super T,? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class OverscrollConfigurationKt {
-  }
-
-  public final class OverscrollKt {
-  }
-
   public final class ProgressSemanticsKt {
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier, float value, optional kotlin.ranges.ClosedFloatingPointRange<java.lang.Float> valueRange, optional int steps);
     method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier progressSemantics(androidx.compose.ui.Modifier);
@@ -291,16 +276,6 @@
 
 }
 
-package androidx.compose.foundation.gestures.snapping {
-
-  public final class LazyListSnapLayoutInfoProviderKt {
-  }
-
-  public final class SnapFlingBehaviorKt {
-  }
-
-}
-
 package androidx.compose.foundation.interaction {
 
   public interface DragInteraction extends androidx.compose.foundation.interaction.Interaction {
@@ -632,55 +607,6 @@
 
 }
 
-package androidx.compose.foundation.lazy.layout {
-
-  public final class LazyLayoutItemProviderKt {
-  }
-
-  public final class LazyLayoutKt {
-  }
-
-  public final class LazyLayoutPinnableItemKt {
-  }
-
-  public final class LazyNearestItemsRangeKt {
-  }
-
-  public final class Lazy_androidKt {
-  }
-
-}
-
-package androidx.compose.foundation.lazy.staggeredgrid {
-
-  public final class LazyStaggeredGridDslKt {
-  }
-
-  public final class LazyStaggeredGridStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.pager {
-
-  public final class PagerKt {
-  }
-
-  public final class PagerStateKt {
-  }
-
-}
-
-package androidx.compose.foundation.relocation {
-
-  public final class BringIntoViewRequesterKt {
-  }
-
-  public final class BringIntoViewResponderKt {
-  }
-
-}
-
 package androidx.compose.foundation.selection {
 
   public final class SelectableGroupKt {
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt
index 5647474..a2ce246 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPinnableContainerTest.kt
@@ -39,7 +39,6 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 
@@ -268,7 +267,6 @@
             .assertIsNotPlaced()
     }
 
-    @Ignore // b/268053147
     @Test
     fun pinnedItemIsStillPinnedWhenReorderedAndNotVisibleAnymore() {
         val state = LazyGridState()
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
index 3c9694c..087d8db 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridPrefetcherTest.kt
@@ -86,6 +86,7 @@
         }
 
         waitForPrefetch(4)
+        waitForPrefetch(5)
 
         rule.onNodeWithTag("4")
             .assertExists()
@@ -106,6 +107,7 @@
         }
 
         waitForPrefetch(2)
+        waitForPrefetch(3)
 
         rule.onNodeWithTag("2")
             .assertExists()
@@ -126,6 +128,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -142,6 +145,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
@@ -222,6 +226,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -240,6 +245,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
index ed50322..a743ac3c 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListPinnableContainerTest.kt
@@ -41,7 +41,6 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 
@@ -254,7 +253,6 @@
             .assertIsNotPlaced()
     }
 
-    @Ignore // b/268113792
     @Test
     fun pinnedItemIsStillPinnedWhenReorderedAndNotVisibleAnymore() {
         val state = LazyListState()
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt
index 85b8635..5796438 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridPinnableContainerTest.kt
@@ -40,7 +40,6 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 
@@ -270,7 +269,6 @@
             .assertIsNotPlaced()
     }
 
-    @Ignore // b/267698382
     @Test
     fun pinnedItemIsStillPinnedWhenReorderedAndNotVisibleAnymore() {
         val state = LazyStaggeredGridState()
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
index 00a4e5a..dbdf686 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyList.kt
@@ -298,7 +298,8 @@
 
         measureLazyList(
             itemsCount = itemsCount,
-            itemProvider = measuredItemProvider,
+            itemProvider = itemProvider,
+            measuredItemProvider = measuredItemProvider,
             mainAxisAvailableSize = mainAxisAvailableSize,
             beforeContentPadding = beforeContentPadding,
             afterContentPadding = afterContentPadding,
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt
index 0691a11..80c00e6 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListItemProvider.kt
@@ -80,8 +80,13 @@
         intervals = intervals,
         nearestItemsRange = nearestItemsRange,
         itemContent = { interval, index ->
-            LazyLayoutPinnableItem(index, state.pinnedItems) {
-                interval.value.item.invoke(itemScope, index - interval.startIndex)
+            val localIndex = index - interval.startIndex
+            LazyLayoutPinnableItem(
+                key = interval.value.key?.invoke(localIndex),
+                index = index,
+                pinnedItemList = state.pinnedItems
+            ) {
+                interval.value.item.invoke(itemScope, localIndex)
             }
         }
     )
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt
index d580e73..e25851f 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasure.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList
+import androidx.compose.foundation.lazy.layout.findIndexByKey
 import androidx.compose.ui.layout.MeasureResult
 import androidx.compose.ui.layout.Placeable
 import androidx.compose.ui.unit.Constraints
@@ -41,7 +42,8 @@
 @OptIn(ExperimentalFoundationApi::class)
 internal fun measureLazyList(
     itemsCount: Int,
-    itemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyListItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
     mainAxisAvailableSize: Int,
     beforeContentPadding: Int,
     afterContentPadding: Int,
@@ -124,7 +126,7 @@
         // firstItemScrollOffset
         while (currentFirstItemScrollOffset < 0 && currentFirstItemIndex > DataIndex(0)) {
             val previous = DataIndex(currentFirstItemIndex.value - 1)
-            val measuredItem = itemProvider.getAndMeasure(previous)
+            val measuredItem = measuredItemProvider.getAndMeasure(previous)
             visibleItems.add(0, measuredItem)
             maxCrossAxis = maxOf(maxCrossAxis, measuredItem.crossAxisSize)
             currentFirstItemScrollOffset += measuredItem.sizeWithSpacings
@@ -159,7 +161,7 @@
                 currentMainAxisOffset <= 0 || // filling beforeContentPadding area
                 visibleItems.isEmpty())
         ) {
-            val measuredItem = itemProvider.getAndMeasure(index)
+            val measuredItem = measuredItemProvider.getAndMeasure(index)
             currentMainAxisOffset += measuredItem.sizeWithSpacings
 
             if (currentMainAxisOffset <= minOffset && index.value != itemsCount - 1) {
@@ -184,7 +186,7 @@
                 currentFirstItemIndex > DataIndex(0)
             ) {
                 val previousIndex = DataIndex(currentFirstItemIndex.value - 1)
-                val measuredItem = itemProvider.getAndMeasure(previousIndex)
+                val measuredItem = measuredItemProvider.getAndMeasure(previousIndex)
                 visibleItems.add(0, measuredItem)
                 maxCrossAxis = maxOf(maxCrossAxis, measuredItem.crossAxisSize)
                 currentFirstItemScrollOffset += measuredItem.sizeWithSpacings
@@ -235,6 +237,7 @@
         val extraItemsBefore = createItemsBeforeList(
             beyondBoundsInfo = beyondBoundsInfo,
             currentFirstItemIndex = currentFirstItemIndex,
+            measuredItemProvider = measuredItemProvider,
             itemProvider = itemProvider,
             itemsCount = itemsCount,
             beyondBoundsItemCount = beyondBoundsItemCount,
@@ -250,6 +253,7 @@
         val extraItemsAfter = createItemsAfterList(
             beyondBoundsInfo = beyondBoundsInfo,
             visibleItems = visibleItems,
+            measuredItemProvider = measuredItemProvider,
             itemProvider = itemProvider,
             itemsCount = itemsCount,
             beyondBoundsItemCount = beyondBoundsItemCount,
@@ -291,13 +295,13 @@
             layoutWidth = layoutWidth,
             layoutHeight = layoutHeight,
             positionedItems = positionedItems,
-            itemProvider = itemProvider
+            itemProvider = measuredItemProvider
         )
 
         val headerItem = if (headerIndexes.isNotEmpty()) {
             findOrComposeLazyListHeader(
                 composedVisibleItems = positionedItems,
-                itemProvider = itemProvider,
+                itemProvider = measuredItemProvider,
                 headerIndexes = headerIndexes,
                 beforeContentPadding = beforeContentPadding,
                 layoutWidth = layoutWidth,
@@ -340,7 +344,8 @@
 private fun createItemsAfterList(
     beyondBoundsInfo: LazyListBeyondBoundsInfo,
     visibleItems: MutableList<LazyMeasuredItem>,
-    itemProvider: LazyMeasuredItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyListItemProvider,
     itemsCount: Int,
     beyondBoundsItemCount: Int,
     pinnedItems: LazyLayoutPinnedItemList
@@ -354,7 +359,7 @@
     fun addItem(index: Int) {
         if (list == null) list = mutableListOf()
         requireNotNull(list).add(
-            itemProvider.getAndMeasure(DataIndex(index))
+            measuredItemProvider.getAndMeasure(DataIndex(index))
         )
     }
 
@@ -369,8 +374,9 @@
     }
 
     pinnedItems.fastForEach { item ->
-        if (item.index > end && item.index < itemsCount) {
-            addItem(item.index)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+        if (index > end && index < itemsCount) {
+            addItem(index)
         }
     }
 
@@ -381,7 +387,8 @@
 private fun createItemsBeforeList(
     beyondBoundsInfo: LazyListBeyondBoundsInfo,
     currentFirstItemIndex: DataIndex,
-    itemProvider: LazyMeasuredItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyListItemProvider,
     itemsCount: Int,
     beyondBoundsItemCount: Int,
     pinnedItems: LazyLayoutPinnedItemList
@@ -395,7 +402,7 @@
     fun addItem(index: Int) {
         if (list == null) list = mutableListOf()
         requireNotNull(list).add(
-            itemProvider.getAndMeasure(DataIndex(index))
+            measuredItemProvider.getAndMeasure(DataIndex(index))
         )
     }
 
@@ -410,8 +417,9 @@
     }
 
     pinnedItems.fastForEach { item ->
-        if (item.index < start) {
-            addItem(item.index)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+        if (index < start) {
+            addItem(index)
         }
     }
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt
index 7ecc15a..b6787df 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGrid.kt
@@ -328,6 +328,7 @@
         }
         measureLazyGrid(
             itemsCount = itemsCount,
+            itemProvider = itemProvider,
             measuredLineProvider = measuredLineProvider,
             measuredItemProvider = measuredItemProvider,
             mainAxisAvailableSize = mainAxisAvailableSize,
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt
index 4f148e7..4948efa 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridItemProvider.kt
@@ -88,8 +88,13 @@
     intervals = intervals,
     nearestItemsRange = nearestItemsRange,
     itemContent = { interval, index ->
-        LazyLayoutPinnableItem(index, state.pinnedItems) {
-            interval.value.item.invoke(LazyGridItemScopeImpl, index - interval.startIndex)
+        val localIndex = index - interval.startIndex
+        LazyLayoutPinnableItem(
+            key = interval.value.key?.invoke(localIndex),
+            index = index,
+            pinnedItemList = state.pinnedItems
+        ) {
+            interval.value.item.invoke(LazyGridItemScopeImpl, localIndex)
         }
     }
 ) {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt
index c08c7d0..b36fc51 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasure.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.gestures.Orientation
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.lazy.layout.LazyLayoutPinnedItemList
+import androidx.compose.foundation.lazy.layout.findIndexByKey
 import androidx.compose.ui.layout.MeasureResult
 import androidx.compose.ui.layout.Placeable
 import androidx.compose.ui.unit.Constraints
@@ -42,6 +43,7 @@
 @OptIn(ExperimentalFoundationApi::class)
 internal fun measureLazyGrid(
     itemsCount: Int,
+    itemProvider: LazyGridItemProvider,
     measuredLineProvider: LazyMeasuredLineProvider,
     measuredItemProvider: LazyMeasuredItemProvider,
     mainAxisAvailableSize: Int,
@@ -211,6 +213,7 @@
         val extraItemsBefore = calculateExtraItems(
             pinnedItems,
             measuredItemProvider,
+            itemProvider,
             itemConstraints = { measuredLineProvider.itemConstraints(it) },
             filter = { it in 0 until firstItemIndex }
         )
@@ -218,6 +221,7 @@
         val extraItemsAfter = calculateExtraItems(
             pinnedItems,
             measuredItemProvider,
+            itemProvider,
             itemConstraints = { measuredLineProvider.itemConstraints(it) },
             filter = { it in (lastItemIndex + 1) until itemsCount }
         )
@@ -303,17 +307,22 @@
 @ExperimentalFoundationApi
 private inline fun calculateExtraItems(
     pinnedItems: LazyLayoutPinnedItemList,
-    itemProvider: LazyMeasuredItemProvider,
+    measuredItemProvider: LazyMeasuredItemProvider,
+    itemProvider: LazyGridItemProvider,
     itemConstraints: (ItemIndex) -> Constraints,
     filter: (Int) -> Boolean
 ): List<LazyGridMeasuredItem> {
     var items: MutableList<LazyGridMeasuredItem>? = null
 
     pinnedItems.fastForEach { item ->
-        if (filter(item.index)) {
-            val itemIndex = ItemIndex(item.index)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+        if (filter(index)) {
+            val itemIndex = ItemIndex(index)
             val constraints = itemConstraints(itemIndex)
-            val measuredItem = itemProvider.getAndMeasure(itemIndex, constraints = constraints)
+            val measuredItem = measuredItemProvider.getAndMeasure(
+                itemIndex,
+                constraints = constraints
+            )
             if (items == null) {
                 items = mutableListOf()
             }
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt
index 37bd32f..768c234 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutPinnableItem.kt
@@ -33,18 +33,20 @@
  * Wrapper supporting [PinnableContainer] in lazy layout items. Each pinned item
  * is considered important to keep alive even if it would be discarded otherwise.
  *
- * @param index current index of the item inside the lazy layout
- * @param pinnedItemList container to keep currently pinned items
+ * @param key key of the item inside the lazy layout
+ * @param index index of the item inside the lazy layout
+ * @param pinnedItemList container of currently pinned items
  * @param content inner content of this item
  */
 @ExperimentalFoundationApi
 @Composable
 fun LazyLayoutPinnableItem(
+    key: Any?,
     index: Int,
     pinnedItemList: LazyLayoutPinnedItemList,
     content: @Composable () -> Unit
 ) {
-    val pinnableItem = remember(pinnedItemList) { LazyLayoutPinnableItem(pinnedItemList) }
+    val pinnableItem = remember(key, pinnedItemList) { LazyLayoutPinnableItem(key, pinnedItemList) }
     pinnableItem.index = index
     pinnableItem.parentPinnableContainer = LocalPinnableContainer.current
     DisposableEffect(pinnableItem) { onDispose { pinnableItem.onDisposed() } }
@@ -79,7 +81,12 @@
     @ExperimentalFoundationApi
     sealed interface PinnedItem {
         /**
-         * Index of the pinned item.
+         * Key of the pinned item.
+         */
+        val key: Any?
+
+        /**
+         * Last known index of the pinned item.
          * Note: it is possible for index to change during lifetime of the object.
          */
         val index: Int
@@ -88,6 +95,7 @@
 
 @OptIn(ExperimentalFoundationApi::class)
 private class LazyLayoutPinnableItem(
+    override val key: Any?,
     private val pinnedItemList: LazyLayoutPinnedItemList,
 ) : PinnableContainer, PinnableContainer.PinnedHandle, LazyLayoutPinnedItemList.PinnedItem {
     /**
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt
index 87cf120..f32dda3 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridItemProvider.kt
@@ -50,11 +50,13 @@
                 scope.intervals,
                 nearestItemsRangeState.value,
                 itemContent = { interval, index ->
-                    LazyLayoutPinnableItem(index, state.pinnedItems) {
-                        interval.value.item.invoke(
-                            LazyStaggeredGridItemScopeImpl,
-                            index - interval.startIndex
-                        )
+                    val localIndex = index - interval.startIndex
+                    LazyLayoutPinnableItem(
+                        key = interval.value.key?.invoke(localIndex),
+                        index = index,
+                        pinnedItemList = state.pinnedItems
+                    ) {
+                        interval.value.item.invoke(LazyStaggeredGridItemScopeImpl, localIndex)
                     }
                 }
             ), LazyStaggeredGridItemProvider {
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt
index 1c38c19..3e8e43a 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridMeasure.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.fastMaxOfOrNull
 import androidx.compose.foundation.lazy.layout.LazyLayoutItemProvider
 import androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScope
+import androidx.compose.foundation.lazy.layout.findIndexByKey
 import androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridLaneInfo.Companion.FullSpan
 import androidx.compose.foundation.lazy.staggeredgrid.LazyStaggeredGridLaneInfo.Companion.Unset
 import androidx.compose.runtime.snapshots.Snapshot
@@ -792,12 +793,14 @@
 
     val pinnedItems = state.pinnedItems
     pinnedItems.fastForEach { item ->
-        if (filter(item.index)) {
-            val spanRange = itemProvider.getSpanRange(item.index, 0)
+        val index = itemProvider.findIndexByKey(item.key, item.index)
+
+        if (filter(index)) {
+            val spanRange = itemProvider.getSpanRange(index, 0)
             if (result == null) {
                 result = mutableListOf()
             }
-            val measuredItem = measuredItemProvider.getAndMeasure(item.index, spanRange)
+            val measuredItem = measuredItemProvider.getAndMeasure(index, spanRange)
             result?.add(position(measuredItem))
         }
     }
diff --git a/compose/material/material/api/1.4.0-beta01.txt b/compose/material/material/api/1.4.0-beta01.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/1.4.0-beta01.txt
+++ b/compose/material/material/api/1.4.0-beta01.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material/material/api/current.ignore b/compose/material/material/api/current.ignore
index 11096af..d24bb34 100644
--- a/compose/material/material/api/current.ignore
+++ b/compose/material/material/api/current.ignore
@@ -1,20 +1,36 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material.AlertDialogKt:
     Removed class androidx.compose.material.AlertDialogKt
+RemovedClass: androidx.compose.material.BackdropScaffoldKt:
+    Removed class androidx.compose.material.BackdropScaffoldKt
+RemovedClass: androidx.compose.material.BottomSheetScaffoldKt:
+    Removed class androidx.compose.material.BottomSheetScaffoldKt
+RemovedClass: androidx.compose.material.ChipKt:
+    Removed class androidx.compose.material.ChipKt
 RemovedClass: androidx.compose.material.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material.ElevationKt:
     Removed class androidx.compose.material.ElevationKt
+RemovedClass: androidx.compose.material.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material.ExposedDropdownMenuKt
+RemovedClass: androidx.compose.material.ListItemKt:
+    Removed class androidx.compose.material.ListItemKt
 RemovedClass: androidx.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.compose.material.MaterialTextSelectionColorsKt
 RemovedClass: androidx.compose.material.MaterialTheme_androidKt:
     Removed class androidx.compose.material.MaterialTheme_androidKt
 RemovedClass: androidx.compose.material.MenuKt:
     Removed class androidx.compose.material.MenuKt
+RemovedClass: androidx.compose.material.ModalBottomSheetKt:
+    Removed class androidx.compose.material.ModalBottomSheetKt
 RemovedClass: androidx.compose.material.ShapesKt:
     Removed class androidx.compose.material.ShapesKt
 RemovedClass: androidx.compose.material.Strings_androidKt:
     Removed class androidx.compose.material.Strings_androidKt
+RemovedClass: androidx.compose.material.SwipeToDismissKt:
+    Removed class androidx.compose.material.SwipeToDismissKt
+RemovedClass: androidx.compose.material.SwipeableKt:
+    Removed class androidx.compose.material.SwipeableKt
 RemovedClass: androidx.compose.material.SwipeableV2Kt:
     Removed class androidx.compose.material.SwipeableV2Kt
 RemovedClass: androidx.compose.material.TextFieldDefaultsKt:
@@ -29,3 +45,5 @@
 
 RemovedPackage: androidx.compose.material.internal:
     Removed package androidx.compose.material.internal
+RemovedPackage: androidx.compose.material.pullrefresh:
+    Removed package androidx.compose.material.pullrefresh
diff --git a/compose/material/material/api/current.txt b/compose/material/material/api/current.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/current.txt
+++ b/compose/material/material/api/current.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material/material/api/restricted_1.4.0-beta01.txt b/compose/material/material/api/restricted_1.4.0-beta01.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/restricted_1.4.0-beta01.txt
+++ b/compose/material/material/api/restricted_1.4.0-beta01.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material/material/api/restricted_current.ignore b/compose/material/material/api/restricted_current.ignore
index 11096af..d24bb34 100644
--- a/compose/material/material/api/restricted_current.ignore
+++ b/compose/material/material/api/restricted_current.ignore
@@ -1,20 +1,36 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material.AlertDialogKt:
     Removed class androidx.compose.material.AlertDialogKt
+RemovedClass: androidx.compose.material.BackdropScaffoldKt:
+    Removed class androidx.compose.material.BackdropScaffoldKt
+RemovedClass: androidx.compose.material.BottomSheetScaffoldKt:
+    Removed class androidx.compose.material.BottomSheetScaffoldKt
+RemovedClass: androidx.compose.material.ChipKt:
+    Removed class androidx.compose.material.ChipKt
 RemovedClass: androidx.compose.material.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material.ElevationKt:
     Removed class androidx.compose.material.ElevationKt
+RemovedClass: androidx.compose.material.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material.ExposedDropdownMenuKt
+RemovedClass: androidx.compose.material.ListItemKt:
+    Removed class androidx.compose.material.ListItemKt
 RemovedClass: androidx.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.compose.material.MaterialTextSelectionColorsKt
 RemovedClass: androidx.compose.material.MaterialTheme_androidKt:
     Removed class androidx.compose.material.MaterialTheme_androidKt
 RemovedClass: androidx.compose.material.MenuKt:
     Removed class androidx.compose.material.MenuKt
+RemovedClass: androidx.compose.material.ModalBottomSheetKt:
+    Removed class androidx.compose.material.ModalBottomSheetKt
 RemovedClass: androidx.compose.material.ShapesKt:
     Removed class androidx.compose.material.ShapesKt
 RemovedClass: androidx.compose.material.Strings_androidKt:
     Removed class androidx.compose.material.Strings_androidKt
+RemovedClass: androidx.compose.material.SwipeToDismissKt:
+    Removed class androidx.compose.material.SwipeToDismissKt
+RemovedClass: androidx.compose.material.SwipeableKt:
+    Removed class androidx.compose.material.SwipeableKt
 RemovedClass: androidx.compose.material.SwipeableV2Kt:
     Removed class androidx.compose.material.SwipeableV2Kt
 RemovedClass: androidx.compose.material.TextFieldDefaultsKt:
@@ -29,3 +45,5 @@
 
 RemovedPackage: androidx.compose.material.internal:
     Removed package androidx.compose.material.internal
+RemovedPackage: androidx.compose.material.pullrefresh:
+    Removed package androidx.compose.material.pullrefresh
diff --git a/compose/material/material/api/restricted_current.txt b/compose/material/material/api/restricted_current.txt
index 477a180..a8f3f39 100644
--- a/compose/material/material/api/restricted_current.txt
+++ b/compose/material/material/api/restricted_current.txt
@@ -41,9 +41,6 @@
     field public static final androidx.compose.material.BackdropScaffoldDefaults INSTANCE;
   }
 
-  public final class BackdropScaffoldKt {
-  }
-
   public final class BadgeKt {
     method @androidx.compose.runtime.Composable public static void Badge(optional androidx.compose.ui.Modifier modifier, optional long backgroundColor, optional long contentColor, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit>? content);
     method @androidx.compose.runtime.Composable public static void BadgedBox(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> badge, optional androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
@@ -68,9 +65,6 @@
     field public static final androidx.compose.material.BottomSheetScaffoldDefaults INSTANCE;
   }
 
-  public final class BottomSheetScaffoldKt {
-  }
-
   @androidx.compose.runtime.Stable public interface ButtonColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> backgroundColor(boolean enabled);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> contentColor(boolean enabled);
@@ -132,9 +126,6 @@
     method @androidx.compose.runtime.Composable public static void TriStateCheckbox(androidx.compose.ui.state.ToggleableState state, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource, optional androidx.compose.material.CheckboxColors colors);
   }
 
-  public final class ChipKt {
-  }
-
   @androidx.compose.runtime.Stable public final class Colors {
     ctor public Colors(long primary, long primaryVariant, long secondary, long secondaryVariant, long background, long surface, long error, long onPrimary, long onSecondary, long onBackground, long onSurface, long onError, boolean isLight);
     method public androidx.compose.material.Colors copy(optional long primary, optional long primaryVariant, optional long secondary, optional long secondaryVariant, optional long background, optional long surface, optional long error, optional long onPrimary, optional long onSecondary, optional long onBackground, optional long onSurface, optional long onError, optional boolean isLight);
@@ -265,9 +256,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.material.ElevationOverlay> LocalElevationOverlay;
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material.FabPosition.Companion Companion;
   }
@@ -309,9 +297,6 @@
     method public static androidx.compose.ui.Modifier minimumInteractiveComponentSize(androidx.compose.ui.Modifier);
   }
 
-  public final class ListItemKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Colors getColors();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.compose.material.Shapes getShapes();
@@ -340,9 +325,6 @@
     field public static final androidx.compose.material.ModalBottomSheetDefaults INSTANCE;
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationRailDefaults {
     method public float getElevation();
     property public final float Elevation;
@@ -503,9 +485,6 @@
     method @androidx.compose.runtime.Composable public static void Surface(optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.graphics.Shape shape, optional long color, optional long contentColor, optional androidx.compose.foundation.BorderStroke? border, optional float elevation, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   public final class SwipeableDefaults {
     method public androidx.compose.animation.core.SpringSpec<java.lang.Float> getAnimationSpec();
     method public float getVelocityThreshold();
@@ -517,9 +496,6 @@
     field public static final float StiffResistanceFactor = 20.0f;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
@@ -650,19 +626,3 @@
 
 }
 
-package androidx.compose.material.pullrefresh {
-
-  public final class PullRefreshIndicatorKt {
-  }
-
-  public final class PullRefreshIndicatorTransformKt {
-  }
-
-  public final class PullRefreshKt {
-  }
-
-  public final class PullRefreshStateKt {
-  }
-
-}
-
diff --git a/compose/material3/material3-window-size-class/api/current.ignore b/compose/material3/material3-window-size-class/api/current.ignore
index 470ece8..bb4a3ed 100644
--- a/compose/material3/material3-window-size-class/api/current.ignore
+++ b/compose/material3/material3-window-size-class/api/current.ignore
@@ -1,3 +1,5 @@
 // Baseline format: 1.0
+RemovedClass: androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt:
+    Removed class androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt
 RemovedClass: androidx.compose.material3.windowsizeclass.TestOnly_jvmKt:
     Removed class androidx.compose.material3.windowsizeclass.TestOnly_jvmKt
diff --git a/compose/material3/material3-window-size-class/api/current.txt b/compose/material3/material3-window-size-class/api/current.txt
index 10051db..cc66d9f 100644
--- a/compose/material3/material3-window-size-class/api/current.txt
+++ b/compose/material3/material3-window-size-class/api/current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.compose.material3.windowsizeclass {
 
-  public final class AndroidWindowSizeClass_androidKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class WindowHeightSizeClass implements java.lang.Comparable<androidx.compose.material3.windowsizeclass.WindowHeightSizeClass> {
     method public operator int compareTo(int other);
     field public static final androidx.compose.material3.windowsizeclass.WindowHeightSizeClass.Companion Companion;
diff --git a/compose/material3/material3-window-size-class/api/restricted_current.ignore b/compose/material3/material3-window-size-class/api/restricted_current.ignore
index 470ece8..bb4a3ed 100644
--- a/compose/material3/material3-window-size-class/api/restricted_current.ignore
+++ b/compose/material3/material3-window-size-class/api/restricted_current.ignore
@@ -1,3 +1,5 @@
 // Baseline format: 1.0
+RemovedClass: androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt:
+    Removed class androidx.compose.material3.windowsizeclass.AndroidWindowSizeClass_androidKt
 RemovedClass: androidx.compose.material3.windowsizeclass.TestOnly_jvmKt:
     Removed class androidx.compose.material3.windowsizeclass.TestOnly_jvmKt
diff --git a/compose/material3/material3-window-size-class/api/restricted_current.txt b/compose/material3/material3-window-size-class/api/restricted_current.txt
index 10051db..cc66d9f 100644
--- a/compose/material3/material3-window-size-class/api/restricted_current.txt
+++ b/compose/material3/material3-window-size-class/api/restricted_current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.compose.material3.windowsizeclass {
 
-  public final class AndroidWindowSizeClass_androidKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class WindowHeightSizeClass implements java.lang.Comparable<androidx.compose.material3.windowsizeclass.WindowHeightSizeClass> {
     method public operator int compareTo(int other);
     field public static final androidx.compose.material3.windowsizeclass.WindowHeightSizeClass.Companion Companion;
diff --git a/compose/material3/material3/api/current.ignore b/compose/material3/material3/api/current.ignore
index b29404c..f188367 100644
--- a/compose/material3/material3/api/current.ignore
+++ b/compose/material3/material3/api/current.ignore
@@ -1,14 +1,20 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material3.AlertDialogKt:
     Removed class androidx.compose.material3.AlertDialogKt
+RemovedClass: androidx.compose.material3.BadgeKt:
+    Removed class androidx.compose.material3.BadgeKt
 RemovedClass: androidx.compose.material3.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material3.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material3.ElevationKt:
     Removed class androidx.compose.material3.ElevationKt
+RemovedClass: androidx.compose.material3.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material3.ExposedDropdownMenuKt
 RemovedClass: androidx.compose.material3.IncludeFontPaddingHelper_androidKt:
     Removed class androidx.compose.material3.IncludeFontPaddingHelper_androidKt
 RemovedClass: androidx.compose.material3.MenuKt:
     Removed class androidx.compose.material3.MenuKt
+RemovedClass: androidx.compose.material3.OutlinedTextFieldKt:
+    Removed class androidx.compose.material3.OutlinedTextFieldKt
 RemovedClass: androidx.compose.material3.ShapesKt:
     Removed class androidx.compose.material3.ShapesKt
 RemovedClass: androidx.compose.material3.Strings_androidKt:
@@ -21,6 +27,8 @@
     Removed class androidx.compose.material3.TextFieldDefaultsKt
 RemovedClass: androidx.compose.material3.TextFieldImplKt:
     Removed class androidx.compose.material3.TextFieldImplKt
+RemovedClass: androidx.compose.material3.TextFieldKt:
+    Removed class androidx.compose.material3.TextFieldKt
 RemovedClass: androidx.compose.material3.TonalPaletteKt:
     Removed class androidx.compose.material3.TonalPaletteKt
 RemovedClass: androidx.compose.material3.TouchTargetKt:
diff --git a/compose/material3/material3/api/current.txt b/compose/material3/material3/api/current.txt
index 393c4e4..0c53c8d 100644
--- a/compose/material3/material3/api/current.txt
+++ b/compose/material3/material3/api/current.txt
@@ -46,9 +46,6 @@
     field public static final androidx.compose.material3.AssistChipDefaults INSTANCE;
   }
 
-  public final class BadgeKt {
-  }
-
   public final class BottomAppBarDefaults {
     method @androidx.compose.runtime.Composable public long getBottomAppBarFabColor();
     method @androidx.compose.runtime.Composable public long getContainerColor();
@@ -251,15 +248,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class DatePickerDialog_androidKt {
-  }
-
-  public final class DatePickerKt {
-  }
-
-  public final class DateRangePickerKt {
-  }
-
   public final class DividerDefaults {
     method @androidx.compose.runtime.Composable public long getColor();
     method public float getThickness();
@@ -329,9 +317,6 @@
     method @RequiresApi(android.os.Build.VERSION_CODES.S) public static androidx.compose.material3.ColorScheme dynamicLightColorScheme(android.content.Context context);
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material3.FabPosition.Companion Companion;
   }
@@ -462,9 +447,6 @@
   @androidx.compose.runtime.Immutable public final class MenuItemColors {
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationBarDefaults {
     method @androidx.compose.runtime.Composable public long getContainerColor();
     method public float getElevation();
@@ -536,9 +518,6 @@
     method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationRailItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
-  public final class OutlinedTextFieldKt {
-  }
-
   public final class ProgressIndicatorDefaults {
     method @androidx.compose.runtime.Composable public long getCircularColor();
     method public int getCircularDeterminateStrokeCap();
@@ -610,9 +589,6 @@
     field public static final androidx.compose.material3.SearchBarDefaults INSTANCE;
   }
 
-  public final class SearchBarKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -642,9 +618,6 @@
     property public final androidx.compose.foundation.shape.CornerBasedShape small;
   }
 
-  public final class SheetDefaultsKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SliderColors {
   }
 
@@ -756,9 +729,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SwitchColors {
   }
 
@@ -806,9 +776,6 @@
   @androidx.compose.runtime.Immutable public final class TextFieldColors {
   }
 
-  public final class TextFieldKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
@@ -819,9 +786,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
   }
 
-  public final class TimePickerKt {
-  }
-
   @androidx.compose.runtime.Stable public final class TimePickerState {
     ctor public TimePickerState(int initialHour, int initialMinute, boolean is24Hour);
     method public int getHour();
@@ -838,9 +802,6 @@
     method public androidx.compose.runtime.saveable.Saver<androidx.compose.material3.TimePickerState,?> Saver();
   }
 
-  public final class TooltipKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class Typography {
     ctor public Typography(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
     method public androidx.compose.material3.Typography copy(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
diff --git a/compose/material3/material3/api/restricted_current.ignore b/compose/material3/material3/api/restricted_current.ignore
index b29404c..f188367 100644
--- a/compose/material3/material3/api/restricted_current.ignore
+++ b/compose/material3/material3/api/restricted_current.ignore
@@ -1,14 +1,20 @@
 // Baseline format: 1.0
 RemovedClass: androidx.compose.material3.AlertDialogKt:
     Removed class androidx.compose.material3.AlertDialogKt
+RemovedClass: androidx.compose.material3.BadgeKt:
+    Removed class androidx.compose.material3.BadgeKt
 RemovedClass: androidx.compose.material3.DragGestureDetectorCopyKt:
     Removed class androidx.compose.material3.DragGestureDetectorCopyKt
 RemovedClass: androidx.compose.material3.ElevationKt:
     Removed class androidx.compose.material3.ElevationKt
+RemovedClass: androidx.compose.material3.ExposedDropdownMenuKt:
+    Removed class androidx.compose.material3.ExposedDropdownMenuKt
 RemovedClass: androidx.compose.material3.IncludeFontPaddingHelper_androidKt:
     Removed class androidx.compose.material3.IncludeFontPaddingHelper_androidKt
 RemovedClass: androidx.compose.material3.MenuKt:
     Removed class androidx.compose.material3.MenuKt
+RemovedClass: androidx.compose.material3.OutlinedTextFieldKt:
+    Removed class androidx.compose.material3.OutlinedTextFieldKt
 RemovedClass: androidx.compose.material3.ShapesKt:
     Removed class androidx.compose.material3.ShapesKt
 RemovedClass: androidx.compose.material3.Strings_androidKt:
@@ -21,6 +27,8 @@
     Removed class androidx.compose.material3.TextFieldDefaultsKt
 RemovedClass: androidx.compose.material3.TextFieldImplKt:
     Removed class androidx.compose.material3.TextFieldImplKt
+RemovedClass: androidx.compose.material3.TextFieldKt:
+    Removed class androidx.compose.material3.TextFieldKt
 RemovedClass: androidx.compose.material3.TonalPaletteKt:
     Removed class androidx.compose.material3.TonalPaletteKt
 RemovedClass: androidx.compose.material3.TouchTargetKt:
diff --git a/compose/material3/material3/api/restricted_current.txt b/compose/material3/material3/api/restricted_current.txt
index 393c4e4..0c53c8d 100644
--- a/compose/material3/material3/api/restricted_current.txt
+++ b/compose/material3/material3/api/restricted_current.txt
@@ -46,9 +46,6 @@
     field public static final androidx.compose.material3.AssistChipDefaults INSTANCE;
   }
 
-  public final class BadgeKt {
-  }
-
   public final class BottomAppBarDefaults {
     method @androidx.compose.runtime.Composable public long getBottomAppBarFabColor();
     method @androidx.compose.runtime.Composable public long getContainerColor();
@@ -251,15 +248,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class DatePickerDialog_androidKt {
-  }
-
-  public final class DatePickerKt {
-  }
-
-  public final class DateRangePickerKt {
-  }
-
   public final class DividerDefaults {
     method @androidx.compose.runtime.Composable public long getColor();
     method public float getThickness();
@@ -329,9 +317,6 @@
     method @RequiresApi(android.os.Build.VERSION_CODES.S) public static androidx.compose.material3.ColorScheme dynamicLightColorScheme(android.content.Context context);
   }
 
-  public final class ExposedDropdownMenuKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class FabPosition {
     field public static final androidx.compose.material3.FabPosition.Companion Companion;
   }
@@ -462,9 +447,6 @@
   @androidx.compose.runtime.Immutable public final class MenuItemColors {
   }
 
-  public final class ModalBottomSheetKt {
-  }
-
   public final class NavigationBarDefaults {
     method @androidx.compose.runtime.Composable public long getContainerColor();
     method public float getElevation();
@@ -536,9 +518,6 @@
     method @androidx.compose.runtime.Composable public static void NavigationRailItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> icon, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional boolean alwaysShowLabel, optional androidx.compose.material3.NavigationRailItemColors colors, optional androidx.compose.foundation.interaction.MutableInteractionSource interactionSource);
   }
 
-  public final class OutlinedTextFieldKt {
-  }
-
   public final class ProgressIndicatorDefaults {
     method @androidx.compose.runtime.Composable public long getCircularColor();
     method public int getCircularDeterminateStrokeCap();
@@ -610,9 +589,6 @@
     field public static final androidx.compose.material3.SearchBarDefaults INSTANCE;
   }
 
-  public final class SearchBarKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -642,9 +618,6 @@
     property public final androidx.compose.foundation.shape.CornerBasedShape small;
   }
 
-  public final class SheetDefaultsKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SliderColors {
   }
 
@@ -756,9 +729,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class SwipeToDismissKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class SwitchColors {
   }
 
@@ -806,9 +776,6 @@
   @androidx.compose.runtime.Immutable public final class TextFieldColors {
   }
 
-  public final class TextFieldKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional int minLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
@@ -819,9 +786,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.text.TextStyle> LocalTextStyle;
   }
 
-  public final class TimePickerKt {
-  }
-
   @androidx.compose.runtime.Stable public final class TimePickerState {
     ctor public TimePickerState(int initialHour, int initialMinute, boolean is24Hour);
     method public int getHour();
@@ -838,9 +802,6 @@
     method public androidx.compose.runtime.saveable.Saver<androidx.compose.material3.TimePickerState,?> Saver();
   }
 
-  public final class TooltipKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class Typography {
     ctor public Typography(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
     method public androidx.compose.material3.Typography copy(optional androidx.compose.ui.text.TextStyle displayLarge, optional androidx.compose.ui.text.TextStyle displayMedium, optional androidx.compose.ui.text.TextStyle displaySmall, optional androidx.compose.ui.text.TextStyle headlineLarge, optional androidx.compose.ui.text.TextStyle headlineMedium, optional androidx.compose.ui.text.TextStyle headlineSmall, optional androidx.compose.ui.text.TextStyle titleLarge, optional androidx.compose.ui.text.TextStyle titleMedium, optional androidx.compose.ui.text.TextStyle titleSmall, optional androidx.compose.ui.text.TextStyle bodyLarge, optional androidx.compose.ui.text.TextStyle bodyMedium, optional androidx.compose.ui.text.TextStyle bodySmall, optional androidx.compose.ui.text.TextStyle labelLarge, optional androidx.compose.ui.text.TextStyle labelMedium, optional androidx.compose.ui.text.TextStyle labelSmall);
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt
index 0cf7b76..d2869ed 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/CardTest.kt
@@ -32,7 +32,10 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.SemanticsProperties
 import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.test.SemanticsMatcher
+import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertHasClickAction
 import androidx.compose.ui.test.assertIsEnabled
 import androidx.compose.ui.test.assertIsNotEnabled
@@ -103,6 +106,7 @@
         rule
             .onNodeWithTag("card")
             .assertHasClickAction()
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("0")
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt
index 282a573..46c3e79 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/FloatingActionButtonTest.kt
@@ -38,6 +38,10 @@
 import androidx.compose.ui.layout.boundsInRoot
 import androidx.compose.ui.layout.onGloballyPositioned
 import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.SemanticsProperties
+import androidx.compose.ui.test.SemanticsMatcher
+import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertHeightIsEqualTo
 import androidx.compose.ui.test.assertIsDisplayed
 import androidx.compose.ui.test.assertIsEnabled
@@ -81,6 +85,7 @@
 
         rule.onNodeWithTag("myButton")
             .assertIsEnabled()
+            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
     }
 
     @Test
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt
index bbd38c9..22ceff9 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/IconButtonTest.kt
@@ -373,6 +373,32 @@
     }
 
     @Test
+    fun filledTonalIconButton_defaultSemantics() {
+        rule.setMaterialContent(lightColorScheme()) {
+            FilledTonalIconButton(onClick = { /* doSomething() */ }) {
+                Icon(Icons.Filled.Favorite, contentDescription = "Localized description")
+            }
+        }
+        rule.onNode(hasClickAction()).apply {
+            assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
+            assertIsEnabled()
+        }
+    }
+
+    @Test
+    fun filledTonalIconButton_disabledSemantics() {
+        rule.setMaterialContent(lightColorScheme()) {
+            FilledTonalIconButton(onClick = {}, enabled = false) {
+                Icon(Icons.Filled.Favorite, contentDescription = "Localized description")
+            }
+        }
+        rule.onNode(hasClickAction()).apply {
+            assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
+            assertIsNotEnabled()
+        }
+    }
+
+    @Test
     fun filledIconToggleButton_size() {
         rule
             .setMaterialContentForSizeAssertions {
diff --git a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt
index cbb0705..72d4b3d 100644
--- a/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt
+++ b/compose/material3/material3/src/androidAndroidTest/kotlin/androidx/compose/material3/SurfaceTest.kt
@@ -296,7 +296,7 @@
         }
         rule.onNodeWithTag("surface")
             .assertHasClickAction()
-            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button))
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("0")
@@ -500,7 +500,7 @@
         }
         rule.onNodeWithTag("surface")
             .assertHasClickAction()
-            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Tab))
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("false")
@@ -604,7 +604,7 @@
         }
         rule.onNodeWithTag("surface")
             .assertHasClickAction()
-            .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Switch))
+            .assert(SemanticsMatcher.keyNotDefined(SemanticsProperties.Role))
             .assertIsEnabled()
             // since we merge descendants we should have text on the same node
             .assertTextEquals("false")
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
index 8a71e68..5fac45e 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Button.kt
@@ -50,6 +50,9 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.semantics.role
+import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 
@@ -118,7 +121,7 @@
     val tonalElevation = elevation?.tonalElevation(enabled, interactionSource)?.value ?: 0.dp
     Surface(
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         enabled = enabled,
         shape = shape,
         color = containerColor,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
index 6ad4b7a..30dc766 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Chip.kt
@@ -1319,7 +1319,7 @@
 ) {
     Surface(
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         enabled = enabled,
         shape = shape,
         color = colors.containerColor(enabled).value,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
index 7ffd9a4..a900775 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/DatePicker.kt
@@ -1478,8 +1478,11 @@
     Surface(
         selected = selected,
         onClick = onClick,
+        // Semantic role is intentionally not set here and left to be set by the caller
+        // In the `Month` function above, the implementation checks whether the day is today and
+        // sets the content description differently.
         modifier = modifier
-            .minimumInteractiveComponentSize()
+        .minimumInteractiveComponentSize()
             .requiredSize(
                 DatePickerModalTokens.DateStateLayerWidth,
                 DatePickerModalTokens.DateStateLayerHeight
@@ -1559,10 +1562,7 @@
                         .requiredSize(
                             width = DatePickerModalTokens.SelectionYearContainerWidth,
                             height = DatePickerModalTokens.SelectionYearContainerHeight
-                        )
-                        .semantics {
-                            role = Role.Button
-                        },
+                        ),
                     selected = selectedYear == displayedYear,
                     currentYear = selectedYear == currentYear,
                     onClick = { onYearSelected(selectedYear) },
@@ -1608,14 +1608,14 @@
     Surface(
         selected = selected,
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         shape = DatePickerModalTokens.SelectionYearStateLayerShape.toShape(),
         color = colors.yearContainerColor(selected = selected).value,
         contentColor = colors.yearContentColor(
             currentYear = currentYear,
             selected = selected
         ).value,
-        border = border
+        border = border,
     ) {
         Box(modifier = Modifier.fillMaxWidth(), contentAlignment = Alignment.Center) {
             content()
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
index 75933e7d..42d3063 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/FloatingActionButton.kt
@@ -56,7 +56,10 @@
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.semantics.clearAndSetSemantics
+import androidx.compose.ui.semantics.role
+import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 
@@ -103,7 +106,7 @@
 ) {
     Surface(
         onClick = onClick,
-        modifier = modifier,
+        modifier = modifier.semantics { role = Role.Button },
         shape = shape,
         color = containerColor,
         contentColor = contentColor,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
index 356e4bb..5913a81 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/IconButton.kt
@@ -205,7 +205,7 @@
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
-    modifier = modifier,
+    modifier = modifier.semantics { role = Role.Button },
     enabled = enabled,
     shape = shape,
     color = colors.containerColor(enabled).value,
@@ -266,7 +266,7 @@
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
-    modifier = modifier,
+    modifier = modifier.semantics { role = Role.Button },
     enabled = enabled,
     shape = shape,
     color = colors.containerColor(enabled).value,
@@ -454,7 +454,7 @@
     content: @Composable () -> Unit
 ) = Surface(
     onClick = onClick,
-    modifier = modifier,
+    modifier = modifier.semantics { role = Role.Button },
     enabled = enabled,
     shape = shape,
     color = colors.containerColor(enabled).value,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
index f10ff73..d7ef087 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
@@ -61,10 +61,12 @@
 import androidx.compose.ui.layout.Layout
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalLayoutDirection
+import androidx.compose.ui.semantics.Role
 import androidx.compose.ui.semantics.contentDescription
 import androidx.compose.ui.semantics.dismiss
 import androidx.compose.ui.semantics.onClick
 import androidx.compose.ui.semantics.paneTitle
+import androidx.compose.ui.semantics.role
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.IntOffset
@@ -661,7 +663,7 @@
     Surface(
         selected = selected,
         onClick = onClick,
-        modifier = modifier
+        modifier = modifier.semantics { role = Role.Tab }
             .height(NavigationDrawerTokens.ActiveIndicatorHeight)
             .fillMaxWidth(),
         shape = shape,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt
index deec6fa..a6624b5 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/Surface.kt
@@ -169,9 +169,8 @@
  * a `Modifier.semantics { onClick(label = "YOUR_LABEL", action = null) }` to the Surface.
  *
  * 6) Semantics for clicks. Just like with [Modifier.clickable], clickable version of Surface will
- * produce semantics to indicate that it is clicked. Also, by default, accessibility services will
- * describe the element as [Role.Button]. You may change this by passing a desired [Role] with a
- * [Modifier.semantics].
+ * produce semantics to indicate that it is clicked. No semantic role is set by default, you
+ * may specify one by passing a desired [Role] with a [Modifier.semantics].
  *
  * To manually retrieve the content color inside a surface, use [LocalContentColor].
  *
@@ -235,7 +234,6 @@
                     interactionSource = interactionSource,
                     indication = rememberRipple(),
                     enabled = enabled,
-                    role = Role.Button,
                     onClick = onClick
                 ),
             propagateMinConstraints = true
@@ -279,9 +277,8 @@
  * that doesn't require [onClick] param.
  *
  * 6) Semantics for selection. Just like with [Modifier.selectable], selectable version of Surface
- * will produce semantics to indicate that it is selected. Also, by default, accessibility services
- * will describe the element as [Role.Tab]. You may change this by passing a desired [Role] with a
- * [Modifier.semantics].
+ * will produce semantics to indicate that it is selected. No semantic role is set by default, you
+ * may specify one by passing a desired [Role] with a [Modifier.semantics].
  *
  * To manually retrieve the content color inside a surface, use [LocalContentColor].
  *
@@ -348,7 +345,6 @@
                     interactionSource = interactionSource,
                     indication = rememberRipple(),
                     enabled = enabled,
-                    role = Role.Tab,
                     onClick = onClick
                 ),
             propagateMinConstraints = true
@@ -392,9 +388,8 @@
  * handling, consider using a Surface function that doesn't require [onCheckedChange] param.
  *
  * 6) Semantics for toggle. Just like with [Modifier.toggleable], toggleable version of Surface
- * will produce semantics to indicate that it is checked.  Also, by default, accessibility services
- * will describe the element as [Role.Switch]. You may change this by passing a desired [Role] with
- * a [Modifier.semantics].
+ * will produce semantics to indicate that it is checked.  No semantic role is set by default, you
+ * may specify one by passing a desired [Role] with a [Modifier.semantics].
  *
  * To manually retrieve the content color inside a surface, use [LocalContentColor].
  *
@@ -461,7 +456,6 @@
                     interactionSource = interactionSource,
                     indication = rememberRipple(),
                     enabled = enabled,
-                    role = Role.Switch,
                     onValueChange = onCheckedChange
                 ),
             propagateMinConstraints = true
diff --git a/compose/runtime/runtime/api/1.4.0-beta01.txt b/compose/runtime/runtime/api/1.4.0-beta01.txt
index db6a889..1cb90ed 100644
--- a/compose/runtime/runtime/api/1.4.0-beta01.txt
+++ b/compose/runtime/runtime/api/1.4.0-beta01.txt
@@ -799,9 +799,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state);
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state, androidx.compose.runtime.snapshots.Snapshot snapshot);
diff --git a/compose/runtime/runtime/api/current.ignore b/compose/runtime/runtime/api/current.ignore
index af94053..22c8270 100644
--- a/compose/runtime/runtime/api/current.ignore
+++ b/compose/runtime/runtime/api/current.ignore
@@ -27,6 +27,8 @@
     Removed class androidx.compose.runtime.internal.ThreadMapKt
 RemovedClass: androidx.compose.runtime.snapshots.ListUtilsKt:
     Removed class androidx.compose.runtime.snapshots.ListUtilsKt
+RemovedClass: androidx.compose.runtime.snapshots.SnapshotContextElementKt:
+    Removed class androidx.compose.runtime.snapshots.SnapshotContextElementKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt:
     Removed class androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotIdSetKt:
diff --git a/compose/runtime/runtime/api/current.txt b/compose/runtime/runtime/api/current.txt
index db6a889..1cb90ed 100644
--- a/compose/runtime/runtime/api/current.txt
+++ b/compose/runtime/runtime/api/current.txt
@@ -799,9 +799,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state);
     method public static <T extends androidx.compose.runtime.snapshots.StateRecord> T readable(T, androidx.compose.runtime.snapshots.StateObject state, androidx.compose.runtime.snapshots.Snapshot snapshot);
diff --git a/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt b/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt
index 5a79fb1..5006380 100644
--- a/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt
+++ b/compose/runtime/runtime/api/restricted_1.4.0-beta01.txt
@@ -842,9 +842,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r, androidx.compose.runtime.snapshots.Snapshot snapshot);
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r);
diff --git a/compose/runtime/runtime/api/restricted_current.ignore b/compose/runtime/runtime/api/restricted_current.ignore
index f2b8f6b..7c5ea36 100644
--- a/compose/runtime/runtime/api/restricted_current.ignore
+++ b/compose/runtime/runtime/api/restricted_current.ignore
@@ -21,6 +21,8 @@
     Removed class androidx.compose.runtime.internal.ThreadMapKt
 RemovedClass: androidx.compose.runtime.snapshots.ListUtilsKt:
     Removed class androidx.compose.runtime.snapshots.ListUtilsKt
+RemovedClass: androidx.compose.runtime.snapshots.SnapshotContextElementKt:
+    Removed class androidx.compose.runtime.snapshots.SnapshotContextElementKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt:
     Removed class androidx.compose.runtime.snapshots.SnapshotDoubleIndexHeapKt
 RemovedClass: androidx.compose.runtime.snapshots.SnapshotIdSetKt:
diff --git a/compose/runtime/runtime/api/restricted_current.txt b/compose/runtime/runtime/api/restricted_current.txt
index 5a79fb1..5006380 100644
--- a/compose/runtime/runtime/api/restricted_current.txt
+++ b/compose/runtime/runtime/api/restricted_current.txt
@@ -842,9 +842,6 @@
     field public static final androidx.compose.runtime.snapshots.SnapshotApplyResult.Success INSTANCE;
   }
 
-  public final class SnapshotContextElementKt {
-  }
-
   public final class SnapshotKt {
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r, androidx.compose.runtime.snapshots.Snapshot snapshot);
     method @kotlin.PublishedApi internal static <T extends androidx.compose.runtime.snapshots.StateRecord> T current(T r);
diff --git a/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt b/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-test-junit4/api/1.4.0-beta01.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test-junit4/api/current.ignore b/compose/ui/ui-test-junit4/api/current.ignore
index c08823f..06d8a27 100644
--- a/compose/ui/ui-test-junit4/api/current.ignore
+++ b/compose/ui/ui-test-junit4/api/current.ignore
@@ -7,3 +7,7 @@
     Removed class androidx.compose.ui.test.junit4.ComposeRootRegistry_androidKt
 RemovedClass: androidx.compose.ui.test.junit4.EspressoLink_androidKt:
     Removed class androidx.compose.ui.test.junit4.EspressoLink_androidKt
+
+
+RemovedPackage: androidx.compose.ui.test:
+    Removed package androidx.compose.ui.test
diff --git a/compose/ui/ui-test-junit4/api/current.txt b/compose/ui/ui-test-junit4/api/current.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/current.txt
+++ b/compose/ui/ui-test-junit4/api/current.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-test-junit4/api/restricted_1.4.0-beta01.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test-junit4/api/restricted_current.ignore b/compose/ui/ui-test-junit4/api/restricted_current.ignore
index c08823f..06d8a27 100644
--- a/compose/ui/ui-test-junit4/api/restricted_current.ignore
+++ b/compose/ui/ui-test-junit4/api/restricted_current.ignore
@@ -7,3 +7,7 @@
     Removed class androidx.compose.ui.test.junit4.ComposeRootRegistry_androidKt
 RemovedClass: androidx.compose.ui.test.junit4.EspressoLink_androidKt:
     Removed class androidx.compose.ui.test.junit4.EspressoLink_androidKt
+
+
+RemovedPackage: androidx.compose.ui.test:
+    Removed package androidx.compose.ui.test
diff --git a/compose/ui/ui-test-junit4/api/restricted_current.txt b/compose/ui/ui-test-junit4/api/restricted_current.txt
index 1da7d1c..94a0fe4 100644
--- a/compose/ui/ui-test-junit4/api/restricted_current.txt
+++ b/compose/ui/ui-test-junit4/api/restricted_current.txt
@@ -1,14 +1,4 @@
 // Signature format: 4.0
-package androidx.compose.ui.test {
-
-  public final class ComposeUiTestKt {
-  }
-
-  public final class ComposeUiTest_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.test.junit4 {
 
   public final class AndroidComposeTestRule<R extends org.junit.rules.TestRule, A extends androidx.activity.ComponentActivity> implements androidx.compose.ui.test.junit4.ComposeContentTestRule {
diff --git a/compose/ui/ui-test/api/1.4.0-beta01.txt b/compose/ui/ui-test/api/1.4.0-beta01.txt
index ccf02da..ae53863 100644
--- a/compose/ui/ui-test/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-test/api/1.4.0-beta01.txt
@@ -216,9 +216,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -234,9 +231,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -318,12 +312,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-test/api/current.ignore b/compose/ui/ui-test/api/current.ignore
index a99da50..eb44141 100644
--- a/compose/ui/ui-test/api/current.ignore
+++ b/compose/ui/ui-test/api/current.ignore
@@ -11,8 +11,16 @@
     Removed class androidx.compose.ui.test.ErrorMessagesKt
 RemovedClass: androidx.compose.ui.test.Expect_jvmKt:
     Removed class androidx.compose.ui.test.Expect_jvmKt
+RemovedClass: androidx.compose.ui.test.KeyInjectionScopeKt:
+    Removed class androidx.compose.ui.test.KeyInjectionScopeKt
+RemovedClass: androidx.compose.ui.test.MouseInjectionScopeKt:
+    Removed class androidx.compose.ui.test.MouseInjectionScopeKt
 RemovedClass: androidx.compose.ui.test.SemanticsSelectorKt:
     Removed class androidx.compose.ui.test.SemanticsSelectorKt
+RemovedClass: androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt:
+    Removed class androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt
+RemovedClass: androidx.compose.ui.test.TestOwnerKt:
+    Removed class androidx.compose.ui.test.TestOwnerKt
 RemovedClass: androidx.compose.ui.test.UtilsKt:
     Removed class androidx.compose.ui.test.UtilsKt
 
diff --git a/compose/ui/ui-test/api/current.txt b/compose/ui/ui-test/api/current.txt
index ccf02da..ae53863 100644
--- a/compose/ui/ui-test/api/current.txt
+++ b/compose/ui/ui-test/api/current.txt
@@ -216,9 +216,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -234,9 +231,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -318,12 +312,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt
index 24df72e..8264e10 100644
--- a/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-test/api/restricted_1.4.0-beta01.txt
@@ -217,9 +217,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -235,9 +232,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -319,12 +313,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-test/api/restricted_current.ignore b/compose/ui/ui-test/api/restricted_current.ignore
index a99da50..eb44141 100644
--- a/compose/ui/ui-test/api/restricted_current.ignore
+++ b/compose/ui/ui-test/api/restricted_current.ignore
@@ -11,8 +11,16 @@
     Removed class androidx.compose.ui.test.ErrorMessagesKt
 RemovedClass: androidx.compose.ui.test.Expect_jvmKt:
     Removed class androidx.compose.ui.test.Expect_jvmKt
+RemovedClass: androidx.compose.ui.test.KeyInjectionScopeKt:
+    Removed class androidx.compose.ui.test.KeyInjectionScopeKt
+RemovedClass: androidx.compose.ui.test.MouseInjectionScopeKt:
+    Removed class androidx.compose.ui.test.MouseInjectionScopeKt
 RemovedClass: androidx.compose.ui.test.SemanticsSelectorKt:
     Removed class androidx.compose.ui.test.SemanticsSelectorKt
+RemovedClass: androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt:
+    Removed class androidx.compose.ui.test.TestMonotonicFrameClock_jvmKt
+RemovedClass: androidx.compose.ui.test.TestOwnerKt:
+    Removed class androidx.compose.ui.test.TestOwnerKt
 RemovedClass: androidx.compose.ui.test.UtilsKt:
     Removed class androidx.compose.ui.test.UtilsKt
 
diff --git a/compose/ui/ui-test/api/restricted_current.txt b/compose/ui/ui-test/api/restricted_current.txt
index 24df72e..8264e10 100644
--- a/compose/ui/ui-test/api/restricted_current.txt
+++ b/compose/ui/ui-test/api/restricted_current.txt
@@ -217,9 +217,6 @@
     property public default int width;
   }
 
-  public final class KeyInjectionScopeKt {
-  }
-
   public final class KeyInputHelpersKt {
     method public static boolean performKeyPress(androidx.compose.ui.test.SemanticsNodeInteraction, android.view.KeyEvent keyEvent);
   }
@@ -235,9 +232,6 @@
     property public abstract long currentTime;
   }
 
-  public final class MouseInjectionScopeKt {
-  }
-
   public sealed interface MultiModalInjectionScope extends androidx.compose.ui.test.InjectionScope {
     method public void touch(kotlin.jvm.functions.Function1<? super androidx.compose.ui.test.TouchInjectionScope,kotlin.Unit> block);
   }
@@ -319,12 +313,6 @@
   public final class TestContext {
   }
 
-  public final class TestMonotonicFrameClock_jvmKt {
-  }
-
-  public final class TestOwnerKt {
-  }
-
   public final class TextActionsKt {
     method public static void performImeAction(androidx.compose.ui.test.SemanticsNodeInteraction);
     method public static void performTextClearance(androidx.compose.ui.test.SemanticsNodeInteraction);
diff --git a/compose/ui/ui-text/api/1.4.0-beta01.txt b/compose/ui/ui-text/api/1.4.0-beta01.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-text/api/1.4.0-beta01.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-text/api/current.ignore b/compose/ui/ui-text/api/current.ignore
index 1ecda6d..8b45dbb 100644
--- a/compose/ui/ui-text/api/current.ignore
+++ b/compose/ui/ui-text/api/current.ignore
@@ -21,20 +21,8 @@
     Removed class androidx.compose.ui.text.TempListUtilsKt
 RemovedClass: androidx.compose.ui.text.TextMeasurerKt:
     Removed class androidx.compose.ui.text.TextMeasurerKt
-RemovedClass: androidx.compose.ui.text.android.LayoutHelperKt:
-    Removed class androidx.compose.ui.text.android.LayoutHelperKt
-RemovedClass: androidx.compose.ui.text.android.LayoutIntrinsicsKt:
-    Removed class androidx.compose.ui.text.android.LayoutIntrinsicsKt
-RemovedClass: androidx.compose.ui.text.android.PaintExtensionsKt:
-    Removed class androidx.compose.ui.text.android.PaintExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.SpannedExtensionsKt:
-    Removed class androidx.compose.ui.text.android.SpannedExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.StaticLayoutFactoryKt:
-    Removed class androidx.compose.ui.text.android.StaticLayoutFactoryKt
-RemovedClass: androidx.compose.ui.text.android.TempListUtilsKt:
-    Removed class androidx.compose.ui.text.android.TempListUtilsKt
-RemovedClass: androidx.compose.ui.text.android.TextLayoutKt:
-    Removed class androidx.compose.ui.text.android.TextLayoutKt
+RemovedClass: androidx.compose.ui.text.TextPainterKt:
+    Removed class androidx.compose.ui.text.TextPainterKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontLoader_androidKt:
     Removed class androidx.compose.ui.text.font.AndroidFontLoader_androidKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontResolveInterceptor_androidKt:
@@ -61,20 +49,6 @@
     Removed class androidx.compose.ui.text.intl.AndroidPlatformLocale_androidKt
 RemovedClass: androidx.compose.ui.text.intl.PlatformLocaleKt:
     Removed class androidx.compose.ui.text.intl.PlatformLocaleKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt:
-    Removed class androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraph_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraph_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidTextPaint_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidTextPaint_androidKt
-RemovedClass: androidx.compose.ui.text.platform.Synchronization_jvmKt:
-    Removed class androidx.compose.ui.text.platform.Synchronization_jvmKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.PlaceholderExtensions_androidKt:
@@ -83,13 +57,19 @@
     Removed class androidx.compose.ui.text.platform.extensions.SpannableExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt
+RemovedClass: androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt:
+    Removed class androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.style.TextDrawStyleKt:
     Removed class androidx.compose.ui.text.style.TextDrawStyleKt
 
 
+RemovedPackage: androidx.compose.ui.text.android:
+    Removed package androidx.compose.ui.text.android
 RemovedPackage: androidx.compose.ui.text.android.style:
     Removed package androidx.compose.ui.text.android.style
 RemovedPackage: androidx.compose.ui.text.caches:
     Removed package androidx.compose.ui.text.caches
 RemovedPackage: androidx.compose.ui.text.internal:
     Removed package androidx.compose.ui.text.internal
+RemovedPackage: androidx.compose.ui.text.platform:
+    Removed package androidx.compose.ui.text.platform
diff --git a/compose/ui/ui-text/api/current.txt b/compose/ui/ui-text/api/current.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/current.txt
+++ b/compose/ui/ui-text/api/current.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt b/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt
index 27b653a..9e33150 100644
--- a/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt
+++ b/compose/ui/ui-text/api/public_plus_experimental_1.4.0-beta01.txt
@@ -1230,13 +1230,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
diff --git a/compose/ui/ui-text/api/public_plus_experimental_current.txt b/compose/ui/ui-text/api/public_plus_experimental_current.txt
index 27b653a..9e33150 100644
--- a/compose/ui/ui-text/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui-text/api/public_plus_experimental_current.txt
@@ -1230,13 +1230,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
diff --git a/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-text/api/restricted_1.4.0-beta01.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-text/api/restricted_current.ignore b/compose/ui/ui-text/api/restricted_current.ignore
index 1ecda6d..8b45dbb 100644
--- a/compose/ui/ui-text/api/restricted_current.ignore
+++ b/compose/ui/ui-text/api/restricted_current.ignore
@@ -21,20 +21,8 @@
     Removed class androidx.compose.ui.text.TempListUtilsKt
 RemovedClass: androidx.compose.ui.text.TextMeasurerKt:
     Removed class androidx.compose.ui.text.TextMeasurerKt
-RemovedClass: androidx.compose.ui.text.android.LayoutHelperKt:
-    Removed class androidx.compose.ui.text.android.LayoutHelperKt
-RemovedClass: androidx.compose.ui.text.android.LayoutIntrinsicsKt:
-    Removed class androidx.compose.ui.text.android.LayoutIntrinsicsKt
-RemovedClass: androidx.compose.ui.text.android.PaintExtensionsKt:
-    Removed class androidx.compose.ui.text.android.PaintExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.SpannedExtensionsKt:
-    Removed class androidx.compose.ui.text.android.SpannedExtensionsKt
-RemovedClass: androidx.compose.ui.text.android.StaticLayoutFactoryKt:
-    Removed class androidx.compose.ui.text.android.StaticLayoutFactoryKt
-RemovedClass: androidx.compose.ui.text.android.TempListUtilsKt:
-    Removed class androidx.compose.ui.text.android.TempListUtilsKt
-RemovedClass: androidx.compose.ui.text.android.TextLayoutKt:
-    Removed class androidx.compose.ui.text.android.TextLayoutKt
+RemovedClass: androidx.compose.ui.text.TextPainterKt:
+    Removed class androidx.compose.ui.text.TextPainterKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontLoader_androidKt:
     Removed class androidx.compose.ui.text.font.AndroidFontLoader_androidKt
 RemovedClass: androidx.compose.ui.text.font.AndroidFontResolveInterceptor_androidKt:
@@ -61,20 +49,6 @@
     Removed class androidx.compose.ui.text.intl.AndroidPlatformLocale_androidKt
 RemovedClass: androidx.compose.ui.text.intl.PlatformLocaleKt:
     Removed class androidx.compose.ui.text.intl.PlatformLocaleKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt:
-    Removed class androidx.compose.ui.text.platform.AndroidMultiParagraphDrawKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphHelper_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraphIntrinsics_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidParagraph_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidParagraph_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidStringDelegate_androidKt
-RemovedClass: androidx.compose.ui.text.platform.AndroidTextPaint_androidKt:
-    Removed class androidx.compose.ui.text.platform.AndroidTextPaint_androidKt
-RemovedClass: androidx.compose.ui.text.platform.Synchronization_jvmKt:
-    Removed class androidx.compose.ui.text.platform.Synchronization_jvmKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.LocaleExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.PlaceholderExtensions_androidKt:
@@ -83,13 +57,19 @@
     Removed class androidx.compose.ui.text.platform.extensions.SpannableExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt:
     Removed class androidx.compose.ui.text.platform.extensions.TextPaintExtensions_androidKt
+RemovedClass: androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt:
+    Removed class androidx.compose.ui.text.platform.extensions.UrlAnnotationExtensions_androidKt
 RemovedClass: androidx.compose.ui.text.style.TextDrawStyleKt:
     Removed class androidx.compose.ui.text.style.TextDrawStyleKt
 
 
+RemovedPackage: androidx.compose.ui.text.android:
+    Removed package androidx.compose.ui.text.android
 RemovedPackage: androidx.compose.ui.text.android.style:
     Removed package androidx.compose.ui.text.android.style
 RemovedPackage: androidx.compose.ui.text.caches:
     Removed package androidx.compose.ui.text.caches
 RemovedPackage: androidx.compose.ui.text.internal:
     Removed package androidx.compose.ui.text.internal
+RemovedPackage: androidx.compose.ui.text.platform:
+    Removed package androidx.compose.ui.text.platform
diff --git a/compose/ui/ui-text/api/restricted_current.txt b/compose/ui/ui-text/api/restricted_current.txt
index 1c59a83..1d00051 100644
--- a/compose/ui/ui-text/api/restricted_current.txt
+++ b/compose/ui/ui-text/api/restricted_current.txt
@@ -449,9 +449,6 @@
     field public static final androidx.compose.ui.text.TextPainter INSTANCE;
   }
 
-  public final class TextPainterKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class TextRange {
     method public operator boolean contains(long other);
     method public operator boolean contains(int offset);
@@ -568,13 +565,6 @@
 
 }
 
-package androidx.compose.ui.text.android {
-
-  public final class LayoutCompatKt {
-  }
-
-}
-
 package androidx.compose.ui.text.font {
 
   public abstract class AndroidFont implements androidx.compose.ui.text.font.Font {
@@ -1163,13 +1153,6 @@
 
 }
 
-package androidx.compose.ui.text.platform {
-
-  public final class AndroidAccessibilitySpannableString_androidKt {
-  }
-
-}
-
 package androidx.compose.ui.text.platform.extensions {
 
   public final class TtsAnnotationExtensions_androidKt {
@@ -1177,9 +1160,6 @@
     method public static android.text.style.TtsSpan toSpan(androidx.compose.ui.text.VerbatimTtsAnnotation);
   }
 
-  public final class UrlAnnotationExtensions_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.text.style {
diff --git a/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt b/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt
+++ b/compose/ui/ui-tooling-data/api/1.4.0-beta01.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui-tooling-data/api/current.ignore b/compose/ui/ui-tooling-data/api/current.ignore
new file mode 100644
index 0000000..4f21a78
--- /dev/null
+++ b/compose/ui/ui-tooling-data/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedPackage: androidx.compose.ui.tooling.data:
+    Removed package androidx.compose.ui.tooling.data
diff --git a/compose/ui/ui-tooling-data/api/current.txt b/compose/ui/ui-tooling-data/api/current.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/current.txt
+++ b/compose/ui/ui-tooling-data/api/current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt b/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui-tooling-data/api/restricted_1.4.0-beta01.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui-tooling-data/api/restricted_current.ignore b/compose/ui/ui-tooling-data/api/restricted_current.ignore
new file mode 100644
index 0000000..4f21a78
--- /dev/null
+++ b/compose/ui/ui-tooling-data/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedPackage: androidx.compose.ui.tooling.data:
+    Removed package androidx.compose.ui.tooling.data
diff --git a/compose/ui/ui-tooling-data/api/restricted_current.txt b/compose/ui/ui-tooling-data/api/restricted_current.txt
index ab1e1a2..e6f50d0 100644
--- a/compose/ui/ui-tooling-data/api/restricted_current.txt
+++ b/compose/ui/ui-tooling-data/api/restricted_current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.compose.ui.tooling.data {
-
-  public final class SlotTreeKt {
-  }
-
-}
-
diff --git a/compose/ui/ui/api/1.4.0-beta01.txt b/compose/ui/ui/api/1.4.0-beta01.txt
index 28acb26..d27c2ed 100644
--- a/compose/ui/ui/api/1.4.0-beta01.txt
+++ b/compose/ui/ui/api/1.4.0-beta01.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1927,9 +1921,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2062,12 +2053,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2162,16 +2147,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2179,9 +2158,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2194,24 +2170,6 @@
 
 package androidx.compose.ui.node {
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2229,12 +2187,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2937,9 +2889,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -2971,13 +2920,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/compose/ui/ui/api/current.ignore b/compose/ui/ui/api/current.ignore
index bf19fb4..c3a979a 100644
--- a/compose/ui/ui/api/current.ignore
+++ b/compose/ui/ui/api/current.ignore
@@ -27,22 +27,42 @@
     Removed class androidx.compose.ui.input.pointer.PointerInputEventProcessorKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInputTestUtilKt:
     Removed class androidx.compose.ui.input.pointer.PointerInputTestUtilKt
+RemovedClass: androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt:
+    Removed class androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt:
     Removed class androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt
 RemovedClass: androidx.compose.ui.layout.ContentScaleKt:
     Removed class androidx.compose.ui.layout.ContentScaleKt
 RemovedClass: androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt:
     Removed class androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt
+RemovedClass: androidx.compose.ui.layout.LookaheadLayoutKt:
+    Removed class androidx.compose.ui.layout.LookaheadLayoutKt
 RemovedClass: androidx.compose.ui.layout.MultiContentMeasurePolicyKt:
     Removed class androidx.compose.ui.layout.MultiContentMeasurePolicyKt
 RemovedClass: androidx.compose.ui.layout.PlaceableKt:
     Removed class androidx.compose.ui.layout.PlaceableKt
+RemovedClass: androidx.compose.ui.layout.RelocationModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationModifierKt
+RemovedClass: androidx.compose.ui.layout.RelocationRequesterModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationRequesterModifierKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalConsumerKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalConsumerKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalNodeKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalNodeKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalProviderKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalProviderKt
 RemovedClass: androidx.compose.ui.node.BackwardsCompatNodeKt:
     Removed class androidx.compose.ui.node.BackwardsCompatNodeKt
+RemovedClass: androidx.compose.ui.node.DelegatableNodeKt:
+    Removed class androidx.compose.ui.node.DelegatableNodeKt
+RemovedClass: androidx.compose.ui.node.DrawModifierNodeKt:
+    Removed class androidx.compose.ui.node.DrawModifierNodeKt
 RemovedClass: androidx.compose.ui.node.HitTestResultKt:
     Removed class androidx.compose.ui.node.HitTestResultKt
 RemovedClass: androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt:
     Removed class androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt
+RemovedClass: androidx.compose.ui.node.LayoutModifierNodeKt:
+    Removed class androidx.compose.ui.node.LayoutModifierNodeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeDrawScopeKt:
     Removed class androidx.compose.ui.node.LayoutNodeDrawScopeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeKt:
@@ -51,6 +71,8 @@
     Removed class androidx.compose.ui.node.LayoutNodeLayoutDelegateKt
 RemovedClass: androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt:
     Removed class androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt
+RemovedClass: androidx.compose.ui.node.ModifierNodeElementKt:
+    Removed class androidx.compose.ui.node.ModifierNodeElementKt
 RemovedClass: androidx.compose.ui.node.MyersDiffKt:
     Removed class androidx.compose.ui.node.MyersDiffKt
 RemovedClass: androidx.compose.ui.node.NodeChainKt:
@@ -61,6 +83,10 @@
     Removed class androidx.compose.ui.node.NodeKindKt
 RemovedClass: androidx.compose.ui.node.PointerInputModifierNodeKt:
     Removed class androidx.compose.ui.node.PointerInputModifierNodeKt
+RemovedClass: androidx.compose.ui.node.SemanticsModifierNodeKt:
+    Removed class androidx.compose.ui.node.SemanticsModifierNodeKt
+RemovedClass: androidx.compose.ui.node.ViewInterop_androidKt:
+    Removed class androidx.compose.ui.node.ViewInterop_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidClipboardManager_androidKt:
     Removed class androidx.compose.ui.platform.AndroidClipboardManager_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt:
@@ -89,6 +115,8 @@
     Removed class androidx.compose.ui.res.Resources_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsNodeKt:
     Removed class androidx.compose.ui.semantics.SemanticsNodeKt
+RemovedClass: androidx.compose.ui.semantics.SemanticsProperties_androidKt:
+    Removed class androidx.compose.ui.semantics.SemanticsProperties_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsSortKt:
     Removed class androidx.compose.ui.semantics.SemanticsSortKt
 RemovedClass: androidx.compose.ui.viewinterop.AndroidViewHolder_androidKt:
@@ -105,5 +133,7 @@
     Removed package androidx.compose.ui.internal
 RemovedPackage: androidx.compose.ui.platform.accessibility:
     Removed package androidx.compose.ui.platform.accessibility
+RemovedPackage: androidx.compose.ui.text:
+    Removed package androidx.compose.ui.text
 RemovedPackage: androidx.compose.ui.text.input:
     Removed package androidx.compose.ui.text.input
diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt
index 28acb26..d27c2ed 100644
--- a/compose/ui/ui/api/current.txt
+++ b/compose/ui/ui/api/current.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1927,9 +1921,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2062,12 +2053,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2162,16 +2147,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2179,9 +2158,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2194,24 +2170,6 @@
 
 package androidx.compose.ui.node {
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2229,12 +2187,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2937,9 +2889,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -2971,13 +2920,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt b/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt
index a619ca2..37b8dc1 100644
--- a/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt
+++ b/compose/ui/ui/api/public_plus_experimental_1.4.0-beta01.txt
@@ -2540,9 +2540,6 @@
     method @androidx.compose.ui.ExperimentalComposeUiApi public static void invalidateSemantics(androidx.compose.ui.node.SemanticsModifierNode);
   }
 
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
diff --git a/compose/ui/ui/api/public_plus_experimental_current.txt b/compose/ui/ui/api/public_plus_experimental_current.txt
index a619ca2..37b8dc1 100644
--- a/compose/ui/ui/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui/api/public_plus_experimental_current.txt
@@ -2540,9 +2540,6 @@
     method @androidx.compose.ui.ExperimentalComposeUiApi public static void invalidateSemantics(androidx.compose.ui.node.SemanticsModifierNode);
   }
 
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
diff --git a/compose/ui/ui/api/restricted_1.4.0-beta01.txt b/compose/ui/ui/api/restricted_1.4.0-beta01.txt
index 3c4f4e5..2973b2b 100644
--- a/compose/ui/ui/api/restricted_1.4.0-beta01.txt
+++ b/compose/ui/ui/api/restricted_1.4.0-beta01.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1929,9 +1923,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2068,12 +2059,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2168,16 +2153,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2185,9 +2164,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2236,24 +2212,6 @@
     property public final kotlin.jvm.functions.Function0<androidx.compose.ui.node.ComposeUiNode> VirtualConstructor;
   }
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2271,12 +2229,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2980,9 +2932,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -3014,13 +2963,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/compose/ui/ui/api/restricted_current.ignore b/compose/ui/ui/api/restricted_current.ignore
index 1754535..4ab8136 100644
--- a/compose/ui/ui/api/restricted_current.ignore
+++ b/compose/ui/ui/api/restricted_current.ignore
@@ -27,20 +27,40 @@
     Removed class androidx.compose.ui.input.pointer.PointerInputEventProcessorKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInputTestUtilKt:
     Removed class androidx.compose.ui.input.pointer.PointerInputTestUtilKt
+RemovedClass: androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt:
+    Removed class androidx.compose.ui.input.pointer.PointerInteropFilter_androidKt
 RemovedClass: androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt:
     Removed class androidx.compose.ui.input.pointer.PointerInteropUtils_androidKt
 RemovedClass: androidx.compose.ui.layout.ContentScaleKt:
     Removed class androidx.compose.ui.layout.ContentScaleKt
 RemovedClass: androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt:
     Removed class androidx.compose.ui.layout.LookaheadLayoutCoordinatesKt
+RemovedClass: androidx.compose.ui.layout.LookaheadLayoutKt:
+    Removed class androidx.compose.ui.layout.LookaheadLayoutKt
 RemovedClass: androidx.compose.ui.layout.PlaceableKt:
     Removed class androidx.compose.ui.layout.PlaceableKt
+RemovedClass: androidx.compose.ui.layout.RelocationModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationModifierKt
+RemovedClass: androidx.compose.ui.layout.RelocationRequesterModifierKt:
+    Removed class androidx.compose.ui.layout.RelocationRequesterModifierKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalConsumerKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalConsumerKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalNodeKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalNodeKt
+RemovedClass: androidx.compose.ui.modifier.ModifierLocalProviderKt:
+    Removed class androidx.compose.ui.modifier.ModifierLocalProviderKt
 RemovedClass: androidx.compose.ui.node.BackwardsCompatNodeKt:
     Removed class androidx.compose.ui.node.BackwardsCompatNodeKt
+RemovedClass: androidx.compose.ui.node.DelegatableNodeKt:
+    Removed class androidx.compose.ui.node.DelegatableNodeKt
+RemovedClass: androidx.compose.ui.node.DrawModifierNodeKt:
+    Removed class androidx.compose.ui.node.DrawModifierNodeKt
 RemovedClass: androidx.compose.ui.node.HitTestResultKt:
     Removed class androidx.compose.ui.node.HitTestResultKt
 RemovedClass: androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt:
     Removed class androidx.compose.ui.node.LayoutModifierNodeCoordinatorKt
+RemovedClass: androidx.compose.ui.node.LayoutModifierNodeKt:
+    Removed class androidx.compose.ui.node.LayoutModifierNodeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeDrawScopeKt:
     Removed class androidx.compose.ui.node.LayoutNodeDrawScopeKt
 RemovedClass: androidx.compose.ui.node.LayoutNodeKt:
@@ -49,6 +69,8 @@
     Removed class androidx.compose.ui.node.LayoutNodeLayoutDelegateKt
 RemovedClass: androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt:
     Removed class androidx.compose.ui.node.MeasureScopeWithLayoutNodeKt
+RemovedClass: androidx.compose.ui.node.ModifierNodeElementKt:
+    Removed class androidx.compose.ui.node.ModifierNodeElementKt
 RemovedClass: androidx.compose.ui.node.MyersDiffKt:
     Removed class androidx.compose.ui.node.MyersDiffKt
 RemovedClass: androidx.compose.ui.node.NodeChainKt:
@@ -59,6 +81,10 @@
     Removed class androidx.compose.ui.node.NodeKindKt
 RemovedClass: androidx.compose.ui.node.PointerInputModifierNodeKt:
     Removed class androidx.compose.ui.node.PointerInputModifierNodeKt
+RemovedClass: androidx.compose.ui.node.SemanticsModifierNodeKt:
+    Removed class androidx.compose.ui.node.SemanticsModifierNodeKt
+RemovedClass: androidx.compose.ui.node.ViewInterop_androidKt:
+    Removed class androidx.compose.ui.node.ViewInterop_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidClipboardManager_androidKt:
     Removed class androidx.compose.ui.platform.AndroidClipboardManager_androidKt
 RemovedClass: androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat_androidKt:
@@ -87,6 +113,8 @@
     Removed class androidx.compose.ui.res.Resources_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsNodeKt:
     Removed class androidx.compose.ui.semantics.SemanticsNodeKt
+RemovedClass: androidx.compose.ui.semantics.SemanticsProperties_androidKt:
+    Removed class androidx.compose.ui.semantics.SemanticsProperties_androidKt
 RemovedClass: androidx.compose.ui.semantics.SemanticsSortKt:
     Removed class androidx.compose.ui.semantics.SemanticsSortKt
 RemovedClass: androidx.compose.ui.viewinterop.AndroidViewHolder_androidKt:
@@ -103,5 +131,7 @@
     Removed package androidx.compose.ui.internal
 RemovedPackage: androidx.compose.ui.platform.accessibility:
     Removed package androidx.compose.ui.platform.accessibility
+RemovedPackage: androidx.compose.ui.text:
+    Removed package androidx.compose.ui.text
 RemovedPackage: androidx.compose.ui.text.input:
     Removed package androidx.compose.ui.text.input
diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt
index 3c4f4e5..2973b2b 100644
--- a/compose/ui/ui/api/restricted_current.txt
+++ b/compose/ui/ui/api/restricted_current.txt
@@ -385,9 +385,6 @@
     method public static androidx.compose.ui.Modifier focusRequester(androidx.compose.ui.Modifier, androidx.compose.ui.focus.FocusRequester focusRequester);
   }
 
-  public final class FocusRequesterModifierNodeKt {
-  }
-
   public interface FocusState {
     method public boolean getHasFocus();
     method public boolean isCaptured();
@@ -1663,9 +1660,6 @@
     property public abstract androidx.compose.ui.platform.ViewConfiguration viewConfiguration;
   }
 
-  public final class PointerInteropFilter_androidKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PointerKeyboardModifiers {
     ctor public PointerKeyboardModifiers(int packedValue);
   }
@@ -1929,9 +1923,6 @@
     method public static androidx.compose.ui.Modifier layout(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function3<? super androidx.compose.ui.layout.MeasureScope,? super androidx.compose.ui.layout.Measurable,? super androidx.compose.ui.unit.Constraints,? extends androidx.compose.ui.layout.MeasureResult> measure);
   }
 
-  public final class LookaheadLayoutKt {
-  }
-
   public interface Measurable extends androidx.compose.ui.layout.IntrinsicMeasurable {
     method public androidx.compose.ui.layout.Placeable measure(long constraints);
   }
@@ -2068,12 +2059,6 @@
     property protected abstract int parentWidth;
   }
 
-  public final class RelocationModifierKt {
-  }
-
-  public final class RelocationRequesterModifierKt {
-  }
-
   public interface Remeasurement {
     method public void forceRemeasure();
   }
@@ -2168,16 +2153,10 @@
     method public void onModifierLocalsUpdated(androidx.compose.ui.modifier.ModifierLocalReadScope scope);
   }
 
-  public final class ModifierLocalConsumerKt {
-  }
-
   public final class ModifierLocalKt {
     method public static <T> androidx.compose.ui.modifier.ProvidableModifierLocal<T> modifierLocalOf(kotlin.jvm.functions.Function0<? extends T> defaultFactory);
   }
 
-  public final class ModifierLocalNodeKt {
-  }
-
   @androidx.compose.runtime.Stable @kotlin.jvm.JvmDefaultWithCompatibility public interface ModifierLocalProvider<T> extends androidx.compose.ui.Modifier.Element {
     method public androidx.compose.ui.modifier.ProvidableModifierLocal<T> getKey();
     method public T! getValue();
@@ -2185,9 +2164,6 @@
     property public abstract T! value;
   }
 
-  public final class ModifierLocalProviderKt {
-  }
-
   public interface ModifierLocalReadScope {
     method public <T> T! getCurrent(androidx.compose.ui.modifier.ModifierLocal<T>);
   }
@@ -2236,24 +2212,6 @@
     property public final kotlin.jvm.functions.Function0<androidx.compose.ui.node.ComposeUiNode> VirtualConstructor;
   }
 
-  public final class DelegatableNodeKt {
-  }
-
-  public final class DrawModifierNodeKt {
-  }
-
-  public final class LayoutModifierNodeKt {
-  }
-
-  public final class ModifierNodeElementKt {
-  }
-
-  public final class ObserverNodeKt {
-  }
-
-  public final class ParentDataModifierNodeKt {
-  }
-
   public final class Ref<T> {
     ctor public Ref();
     method public T? getValue();
@@ -2271,12 +2229,6 @@
     property public abstract androidx.compose.ui.text.input.TextInputService textInputService;
   }
 
-  public final class SemanticsModifierNodeKt {
-  }
-
-  public final class ViewInterop_androidKt {
-  }
-
 }
 
 package androidx.compose.ui.platform {
@@ -2980,9 +2932,6 @@
     method public static void setVerticalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange);
   }
 
-  public final class SemanticsProperties_androidKt {
-  }
-
   public final class SemanticsPropertyKey<T> {
     ctor public SemanticsPropertyKey(String name, optional kotlin.jvm.functions.Function2<? super T,? super T,? extends T> mergePolicy);
     method public String getName();
@@ -3014,13 +2963,6 @@
 
 }
 
-package androidx.compose.ui.text {
-
-  public final class TextMeasurerHelperKt {
-  }
-
-}
-
 package androidx.compose.ui.viewinterop {
 
   public final class AndroidView_androidKt {
diff --git a/constraintlayout/constraintlayout-compose/api/current.txt b/constraintlayout/constraintlayout-compose/api/current.txt
index 305e1fb..00f82e2 100644
--- a/constraintlayout/constraintlayout-compose/api/current.txt
+++ b/constraintlayout/constraintlayout-compose/api/current.txt
@@ -437,18 +437,6 @@
     enum_constant public static final androidx.constraintlayout.compose.MotionLayoutFlag FullMeasure;
   }
 
-  public final class MotionLayoutKt {
-  }
-
-  public final class MotionLayoutStateKt {
-  }
-
-  public final class MotionSceneKt {
-  }
-
-  public final class MotionSceneScopeKt {
-  }
-
   public final class State extends androidx.constraintlayout.core.state.State {
     ctor public State(androidx.compose.ui.unit.Density density);
     method public androidx.compose.ui.unit.Density getDensity();
@@ -466,12 +454,6 @@
     property public static final androidx.compose.ui.semantics.SemanticsPropertyKey<androidx.constraintlayout.compose.DesignInfoProvider> DesignInfoDataKey;
   }
 
-  public final class TransitionKt {
-  }
-
-  public final class TransitionScopeKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class VerticalAlign {
     field public static final androidx.constraintlayout.compose.VerticalAlign.Companion Companion;
   }
diff --git a/constraintlayout/constraintlayout-compose/api/restricted_current.txt b/constraintlayout/constraintlayout-compose/api/restricted_current.txt
index aad0717..4c48ef0 100644
--- a/constraintlayout/constraintlayout-compose/api/restricted_current.txt
+++ b/constraintlayout/constraintlayout-compose/api/restricted_current.txt
@@ -509,10 +509,6 @@
     method public void itemsWithProperties(int count, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties>,kotlin.Unit> itemContent);
   }
 
-  public final class MotionDragHandlerKt {
-    method @kotlin.PublishedApi internal static inline androidx.compose.ui.Modifier motionPointerInput(androidx.compose.ui.Modifier, Object key, androidx.constraintlayout.compose.MotionProgress motionProgress, androidx.constraintlayout.compose.MotionMeasurer measurer);
-  }
-
   @kotlin.PublishedApi internal final class MotionDragState {
     ctor public MotionDragState(boolean isDragging, long dragAmount, long velocity);
     method public boolean component1();
@@ -581,9 +577,6 @@
     field @kotlin.PublishedApi internal final androidx.constraintlayout.compose.MotionProgress motionProgress;
   }
 
-  public final class MotionLayoutStateKt {
-  }
-
   @kotlin.PublishedApi internal final class MotionMeasurer extends androidx.constraintlayout.compose.Measurer {
     ctor public MotionMeasurer(androidx.compose.ui.unit.Density density);
     method public void clearConstraintSets();
@@ -609,12 +602,6 @@
     method public androidx.constraintlayout.compose.MotionProgress fromState(androidx.compose.runtime.State<java.lang.Float> progressState, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit> onUpdate);
   }
 
-  public final class MotionSceneKt {
-  }
-
-  public final class MotionSceneScopeKt {
-  }
-
   public final class State extends androidx.constraintlayout.core.state.State {
     ctor public State(androidx.compose.ui.unit.Density density);
     method public androidx.compose.ui.unit.Density getDensity();
@@ -653,12 +640,6 @@
   @kotlin.PublishedApi internal static final class TransitionImpl.Companion {
   }
 
-  public final class TransitionKt {
-  }
-
-  public final class TransitionScopeKt {
-  }
-
   @androidx.compose.runtime.Immutable public final class VerticalAlign {
     field public static final androidx.constraintlayout.compose.VerticalAlign.Companion Companion;
   }
diff --git a/core/core/api/current.txt b/core/core/api/current.txt
index 3f5d92d..5033a53 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -467,6 +467,7 @@
     ctor public NotificationCompat.BigPictureStyle();
     ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
     method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
diff --git a/core/core/api/public_plus_experimental_current.txt b/core/core/api/public_plus_experimental_current.txt
index 9df9106..2b431b6 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -467,6 +467,7 @@
     ctor public NotificationCompat.BigPictureStyle();
     ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
     method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index 51353767..9556806 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -518,6 +518,7 @@
     ctor public NotificationCompat.BigPictureStyle();
     ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+    method @RequiresApi(23) public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.drawable.Icon?);
     method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
     method @RequiresApi(31) public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.drawable.Icon?);
     method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat? getPictureIcon(android.os.Bundle?);
diff --git a/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java b/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
index 4665258..520a252 100644
--- a/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/app/NotificationCompatTest.java
@@ -1411,7 +1411,7 @@
                 .setSmallIcon(1)
                 .setStyle(new NotificationCompat.BigPictureStyle()
                         .bigPicture(bitmap)
-                        .bigLargeIcon(null)
+                        .bigLargeIcon((Bitmap) null)
                         .setBigContentTitle("Big Content Title")
                         .setSummaryText("Summary Text"))
                 .build();
@@ -1424,6 +1424,52 @@
         }
     }
 
+    @SdkSuppress(minSdkVersion = 23)
+    @Test
+    public void testBigPictureStyle_withIconNullBigLargeIcon() {
+        Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(),
+                R.drawable.notification_bg_low_pressed);
+        Notification n = new NotificationCompat.Builder(mContext, "channelId")
+                .setSmallIcon(1)
+                .setStyle(new NotificationCompat.BigPictureStyle()
+                        .bigPicture(bitmap)
+                        .bigLargeIcon((Icon) null)
+                        .setBigContentTitle("Big Content Title")
+                        .setSummaryText("Summary Text"))
+                .build();
+        Bundle extras = NotificationCompat.getExtras(n);
+        assertNotNull(extras);
+        assertTrue(extras.containsKey(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+        assertNull(extras.get(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+    }
+
+    @SdkSuppress(minSdkVersion = 23)
+    @Test
+    public void testBigPictureStyle_withIconBigLargeIcon() {
+        Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(),
+                R.drawable.notification_bg_low_pressed);
+        IconCompat iconCompat = IconCompat.createWithResource(mContext, R.drawable.ic_call_decline);
+        Icon icon = iconCompat.toIcon(mContext);
+
+        Notification n = new NotificationCompat.Builder(mContext, "channelId")
+                .setSmallIcon(1)
+                .setStyle(new NotificationCompat.BigPictureStyle()
+                        .bigPicture(bitmap)
+                        .bigLargeIcon(icon)
+                        .setBigContentTitle("Big Content Title")
+                        .setSummaryText("Summary Text"))
+                .build();
+        Bundle extras = NotificationCompat.getExtras(n);
+        assertNotNull(extras);
+        assertTrue(extras.containsKey(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+        assertNotNull(extras.get(NotificationCompat.EXTRA_LARGE_ICON_BIG));
+
+        Icon recoveredIcon = extras.getParcelable(NotificationCompat.EXTRA_LARGE_ICON_BIG);
+        if (Build.VERSION.SDK_INT >= 28) {
+            assertEquals(icon.getResId(), recoveredIcon.getResId());
+        }
+    }
+
     @SdkSuppress(minSdkVersion = 31)
     @Test
     public void testBigPictureStyle_encodesAndRecoversSetContentDescription() {
@@ -2546,9 +2592,9 @@
 
         NotificationCompat.Builder originalBuilder =
                 new NotificationCompat.Builder(mContext, "test id")
-                .setSmallIcon(1)
-                .setContentTitle("test title")
-                .setStyle(callStyle);
+                        .setSmallIcon(1)
+                        .setContentTitle("test title")
+                        .setStyle(callStyle);
 
         Notification notification = originalBuilder.build();
 
diff --git a/core/core/src/main/java/androidx/core/app/NotificationCompat.java b/core/core/src/main/java/androidx/core/app/NotificationCompat.java
index 4d30246..679e8e0 100644
--- a/core/core/src/main/java/androidx/core/app/NotificationCompat.java
+++ b/core/core/src/main/java/androidx/core/app/NotificationCompat.java
@@ -2497,7 +2497,7 @@
          * this method to explicitly request deferred display.</p>
          *
          * This method has no effect when running on versions prior to
-          * {@link android.os.Build.VERSION_CODES#S}.
+         * {@link android.os.Build.VERSION_CODES#S}.
          */
         @SuppressWarnings("MissingGetterMatchingBuilder") // no underlying getter in platform API
         @NonNull
@@ -3363,6 +3363,16 @@
         }
 
         /**
+         * Override the large icon when the big notification is shown.
+         */
+        @RequiresApi(23)
+        public @NonNull BigPictureStyle bigLargeIcon(@Nullable Icon i) {
+            mBigLargeIcon = i == null ? null : IconCompat.createFromIcon(i);
+            mBigLargeIconSet = true;
+            return this;
+        }
+
+        /**
          * @hide
          */
         @RestrictTo(LIBRARY_GROUP_PREFIX)
@@ -4954,7 +4964,7 @@
                     && extras.containsKey(EXTRA_CALL_PERSON)) {
                 mPerson = Person.fromAndroidPerson(
                         (android.app.Person)
-                        extras.getParcelable(EXTRA_CALL_PERSON));
+                                extras.getParcelable(EXTRA_CALL_PERSON));
             } else if (extras.containsKey(EXTRA_CALL_PERSON_COMPAT)) {
                 mPerson = Person.fromBundle(extras.getBundle(EXTRA_CALL_PERSON_COMPAT));
             }
@@ -5286,7 +5296,7 @@
                 }
                 actionBuilder =
                         Api20Impl.createActionBuilder(iconResId, actionCompat.getTitle(),
-                        actionCompat.getActionIntent());
+                                actionCompat.getActionIntent());
             }
             Bundle actionExtras;
             if (actionCompat.getExtras() != null) {
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt
index 68082e6..8dacb98 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/OnBackStackChangedListenerTest.kt
@@ -19,6 +19,9 @@
 import androidx.fragment.app.FragmentManager.OnBackStackChangedListener
 import androidx.fragment.app.test.FragmentTestActivity
 import androidx.fragment.test.R
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
+import androidx.lifecycle.LifecycleOwner
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
@@ -290,4 +293,46 @@
             incomingFragments.remove(fragment2)
         }
     }
+
+    @Test
+    fun testOnBackChangeRemoveListenerAfterStarted() {
+        with(ActivityScenario.launch(FragmentTestActivity::class.java)) {
+            val fragmentManager = withActivity { supportFragmentManager }
+
+            val fragment = StrictFragment()
+            var startedCount = 0
+            var committedCount = 0
+            val listener = object : OnBackStackChangedListener {
+                override fun onBackStackChanged() { /* nothing */ }
+
+                override fun onBackStackChangeStarted(fragment: Fragment, pop: Boolean) {
+                    startedCount++
+                }
+
+                override fun onBackStackChangeCommitted(fragment: Fragment, pop: Boolean) {
+                    committedCount++
+                }
+            }
+            fragmentManager.addOnBackStackChangedListener(listener)
+            withActivity {
+                fragment.lifecycle.addObserver(object : LifecycleEventObserver {
+                    override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
+                        if (event == Lifecycle.Event.ON_START) {
+                            fragmentManager.removeOnBackStackChangedListener(listener)
+                        }
+                    }
+                })
+            }
+
+            fragmentManager.beginTransaction()
+                .setReorderingAllowed(true)
+                .add(R.id.content, fragment)
+                .addToBackStack(null)
+                .commit()
+            executePendingTransactions()
+
+            assertThat(startedCount).isEqualTo(1)
+            assertThat(committedCount).isEqualTo(0)
+        }
+    }
 }
\ No newline at end of file
diff --git a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
index 24827f0..c84669f 100644
--- a/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
+++ b/fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
@@ -223,7 +223,8 @@
         void onBackStackChanged();
 
         /**
-         * Called whenever the contents of the back stack are starting to be changed.
+         * Called whenever the contents of the back stack are starting to be changed, before
+         * fragments being to move to their target states.
          *
          * @param fragment that is affected by the starting back stack change
          * @param pop whether this back stack change is a pop
@@ -1893,6 +1894,18 @@
         // The last operation determines the overall direction, this ensures that operations
         // such as push, push, pop, push are correctly considered a push
         boolean isPop = isRecordPop.get(endIndex - 1);
+
+        if (mBackStackChangeListeners != null) {
+            // we dispatch callbacks based on each record
+            for (BackStackRecord record : records) {
+                for (Fragment fragment : fragmentsFromRecord(record)) {
+                    // We give all fragment the back stack changed started signal first
+                    for (OnBackStackChangedListener listener : mBackStackChangeListeners) {
+                        listener.onBackStackChangeStarted(fragment, isPop);
+                    }
+                }
+            }
+        }
         // Ensure that Fragments directly affected by operations
         // are moved to their expected state in operation order
         for (int index = startIndex; index < endIndex; index++) {
@@ -1944,15 +1957,9 @@
                 // we dispatch callbacks based on each record
                 for (BackStackRecord record : records) {
                     for (Fragment fragment : fragmentsFromRecord(record)) {
-                        // We give all fragment the back stack changed started signal first
-                        for (int i = 0; i < mBackStackChangeListeners.size(); i++) {
-                            mBackStackChangeListeners.get(i).onBackStackChangeStarted(fragment,
-                                    isPop);
-                        }
                         // Then we give them all the committed signal
-                        for (int i = 0; i < mBackStackChangeListeners.size(); i++) {
-                            mBackStackChangeListeners.get(i).onBackStackChangeCommitted(fragment,
-                                    isPop);
+                        for (OnBackStackChangedListener listener : mBackStackChangeListeners) {
+                            listener.onBackStackChangeCommitted(fragment, isPop);
                         }
                     }
                 }
diff --git a/glance/glance-wear-tiles/api/current.txt b/glance/glance-wear-tiles/api/current.txt
index ca89aca..c693cbc 100644
--- a/glance/glance-wear-tiles/api/current.txt
+++ b/glance/glance-wear-tiles/api/current.txt
@@ -29,9 +29,6 @@
     property public androidx.glance.wear.tiles.TimelineMode timelineMode;
   }
 
-  public final class GlanceWearTilesKt {
-  }
-
   public final class TimeInterval {
     ctor public TimeInterval(optional java.time.Instant start, optional java.time.Instant end);
     method public java.time.Instant component1();
diff --git a/glance/glance-wear-tiles/api/restricted_current.txt b/glance/glance-wear-tiles/api/restricted_current.txt
index ca89aca..c693cbc 100644
--- a/glance/glance-wear-tiles/api/restricted_current.txt
+++ b/glance/glance-wear-tiles/api/restricted_current.txt
@@ -29,9 +29,6 @@
     property public androidx.glance.wear.tiles.TimelineMode timelineMode;
   }
 
-  public final class GlanceWearTilesKt {
-  }
-
   public final class TimeInterval {
     ctor public TimeInterval(optional java.time.Instant start, optional java.time.Instant end);
     method public java.time.Instant component1();
diff --git a/glance/glance/api/current.txt b/glance/glance/api/current.txt
index 004e9be..6363bcd 100644
--- a/glance/glance/api/current.txt
+++ b/glance/glance/api/current.txt
@@ -79,9 +79,6 @@
     method public default <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.glance.GlanceModifier.Element,? super R,? extends R> operation);
   }
 
-  @androidx.glance.GlanceComposable public final class GlanceNodeKt {
-  }
-
   public final class GlanceTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public androidx.glance.color.ColorProviders getColors();
     property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public final androidx.glance.color.ColorProviders colors;
@@ -102,9 +99,6 @@
   public interface ImageProvider {
   }
 
-  public final class UtilsKt {
-  }
-
   public enum Visibility {
     method public static androidx.glance.Visibility valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.glance.Visibility[] values();
diff --git a/glance/glance/api/public_plus_experimental_current.txt b/glance/glance/api/public_plus_experimental_current.txt
index 004e9be..6363bcd 100644
--- a/glance/glance/api/public_plus_experimental_current.txt
+++ b/glance/glance/api/public_plus_experimental_current.txt
@@ -79,9 +79,6 @@
     method public default <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.glance.GlanceModifier.Element,? super R,? extends R> operation);
   }
 
-  @androidx.glance.GlanceComposable public final class GlanceNodeKt {
-  }
-
   public final class GlanceTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public androidx.glance.color.ColorProviders getColors();
     property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public final androidx.glance.color.ColorProviders colors;
@@ -102,9 +99,6 @@
   public interface ImageProvider {
   }
 
-  public final class UtilsKt {
-  }
-
   public enum Visibility {
     method public static androidx.glance.Visibility valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.glance.Visibility[] values();
diff --git a/glance/glance/api/restricted_current.txt b/glance/glance/api/restricted_current.txt
index 004e9be..6363bcd 100644
--- a/glance/glance/api/restricted_current.txt
+++ b/glance/glance/api/restricted_current.txt
@@ -79,9 +79,6 @@
     method public default <R> R! foldOut(R? initial, kotlin.jvm.functions.Function2<? super androidx.glance.GlanceModifier.Element,? super R,? extends R> operation);
   }
 
-  @androidx.glance.GlanceComposable public final class GlanceNodeKt {
-  }
-
   public final class GlanceTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public androidx.glance.color.ColorProviders getColors();
     property @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable @androidx.glance.GlanceComposable public final androidx.glance.color.ColorProviders colors;
@@ -102,9 +99,6 @@
   public interface ImageProvider {
   }
 
-  public final class UtilsKt {
-  }
-
   public enum Visibility {
     method public static androidx.glance.Visibility valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.glance.Visibility[] values();
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
index c82bdd1..1be95806 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/PermissionController.kt
@@ -16,9 +16,7 @@
 package androidx.health.connect.client
 
 import androidx.activity.result.contract.ActivityResultContract
-import androidx.annotation.RestrictTo
 import androidx.health.connect.client.HealthConnectClient.Companion.DEFAULT_PROVIDER_PACKAGE_NAME
-import androidx.health.connect.client.permission.HealthDataRequestPermissions
 import androidx.health.connect.client.permission.HealthDataRequestPermissionsInternal
 import androidx.health.connect.client.permission.HealthPermission
 
@@ -27,21 +25,6 @@
 interface PermissionController {
 
     /**
-     * Returns a set of [HealthPermission] granted by the user to the calling app, out of the input
-     * [permissions] set.
-     *
-     * @param permissions set of permissions interested to check if granted or not
-     * @return set of granted permissions.
-     * @throws android.os.RemoteException For any IPC transportation failures.
-     * @throws java.io.IOException For any disk I/O issues.
-     * @throws IllegalStateException If service is not available.
-     */
-    @RestrictTo(RestrictTo.Scope.LIBRARY) // To be deleted once internal clients have migrated.
-    suspend fun getGrantedPermissionsLegacy(
-        permissions: Set<HealthPermission>
-    ): Set<HealthPermission>
-
-    /**
      * Returns a set of all health permissions granted by the user to the calling app.
      *
      * @return set of granted permissions.
@@ -67,22 +50,6 @@
          *
          * @param providerPackageName Optional provider package name to request health permissions
          *   from.
-         * @see androidx.activity.ComponentActivity.registerForActivityResult
-         */
-        @RestrictTo(RestrictTo.Scope.LIBRARY) // To be deleted once internal clients have migrated.
-        @JvmStatic
-        @JvmOverloads
-        fun createRequestPermissionResultContractLegacy(
-            providerPackageName: String = DEFAULT_PROVIDER_PACKAGE_NAME
-        ): ActivityResultContract<Set<HealthPermission>, Set<HealthPermission>> {
-            return HealthDataRequestPermissions(providerPackageName = providerPackageName)
-        }
-
-        /**
-         * Creates an [ActivityResultContract] to request Health permissions.
-         *
-         * @param providerPackageName Optional provider package name to request health permissions
-         *   from.
          * @sample androidx.health.connect.client.samples.RequestPermission
          * @see androidx.activity.ComponentActivity.registerForActivityResult
          */
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt
index 6006964..680ab63 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/impl/HealthConnectClientImpl.kt
@@ -26,8 +26,6 @@
 import androidx.health.connect.client.impl.converters.aggregate.toAggregateDataRowGroupByPeriod
 import androidx.health.connect.client.impl.converters.datatype.toDataType
 import androidx.health.connect.client.impl.converters.datatype.toDataTypeIdPairProtoList
-import androidx.health.connect.client.impl.converters.permission.toJetpackPermission
-import androidx.health.connect.client.impl.converters.permission.toProtoPermission
 import androidx.health.connect.client.impl.converters.records.toProto
 import androidx.health.connect.client.impl.converters.records.toRecord
 import androidx.health.connect.client.impl.converters.request.toDeleteDataRangeRequestProto
@@ -74,22 +72,6 @@
         },
 ) : HealthConnectClient, PermissionController {
 
-    override suspend fun getGrantedPermissionsLegacy(
-        permissions: Set<HealthPermission>
-    ): Set<HealthPermission> {
-        val grantedPermissions =
-            delegate
-                .getGrantedPermissions(permissions.map { it.toProtoPermission() }.toSet())
-                .await()
-                .map { it.toJetpackPermission() }
-                .toSet()
-        Logger.debug(
-            HEALTH_CONNECT_CLIENT_TAG,
-            "Granted ${grantedPermissions.size} out of ${permissions.size} permissions."
-        )
-        return grantedPermissions
-    }
-
     override suspend fun getGrantedPermissions(): Set<String> {
         val grantedPermissions =
             delegate
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/HealthDataRequestPermissions.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/HealthDataRequestPermissions.kt
deleted file mode 100644
index a33d9af..0000000
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/permission/HealthDataRequestPermissions.kt
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package androidx.health.connect.client.permission
-
-import android.content.Context
-import android.content.Intent
-import androidx.activity.result.contract.ActivityResultContract
-import androidx.health.connect.client.HealthConnectClient.Companion.DEFAULT_PROVIDER_PACKAGE_NAME
-import androidx.health.connect.client.HealthConnectClient.Companion.HEALTH_CONNECT_CLIENT_TAG
-import androidx.health.connect.client.impl.converters.permission.toJetpackPermission
-import androidx.health.connect.client.impl.converters.permission.toProtoPermission
-import androidx.health.platform.client.impl.logger.Logger
-import androidx.health.platform.client.permission.Permission as ParcelablePermission
-import androidx.health.platform.client.service.HealthDataServiceConstants.ACTION_REQUEST_PERMISSIONS
-import androidx.health.platform.client.service.HealthDataServiceConstants.KEY_GRANTED_PERMISSIONS_JETPACK
-import androidx.health.platform.client.service.HealthDataServiceConstants.KEY_REQUESTED_PERMISSIONS_JETPACK
-
-/**
- * An [ActivityResultContract] to request Health Connect permissions.
- *
- * @param providerPackageName Optional provider package name for the backing implementation of
- * choice.
- *
- * @see androidx.activity.ComponentActivity.registerForActivityResult
- */
-internal class HealthDataRequestPermissions(
-    private val providerPackageName: String = DEFAULT_PROVIDER_PACKAGE_NAME,
-) : ActivityResultContract<Set<HealthPermission>, Set<HealthPermission>>() {
-
-    override fun createIntent(context: Context, input: Set<HealthPermission>): Intent {
-        require(input.isNotEmpty()) { "At least one permission is required!" }
-
-        val protoPermissionList =
-            input
-                .asSequence()
-                .map { ParcelablePermission(it.toProtoPermission()) }
-                .toCollection(ArrayList())
-        Logger.debug(HEALTH_CONNECT_CLIENT_TAG, "Requesting ${input.size} permissions.")
-        return Intent(ACTION_REQUEST_PERMISSIONS).apply {
-            putParcelableArrayListExtra(KEY_REQUESTED_PERMISSIONS_JETPACK, protoPermissionList)
-            if (providerPackageName.isNotEmpty()) {
-                setPackage(providerPackageName)
-            }
-        }
-    }
-
-    @Suppress("Deprecation")
-    override fun parseResult(resultCode: Int, intent: Intent?): Set<HealthPermission> {
-        val grantedPermissions =
-            intent
-                ?.getParcelableArrayListExtra<ParcelablePermission>(KEY_GRANTED_PERMISSIONS_JETPACK)
-                ?.asSequence()
-                ?.map { it.proto.toJetpackPermission() }
-                ?.toSet()
-                ?: emptySet()
-        Logger.debug(HEALTH_CONNECT_CLIENT_TAG, "Granted ${grantedPermissions.size} permissions.")
-        return grantedPermissions
-    }
-
-    override fun getSynchronousResult(
-        context: Context,
-        input: Set<HealthPermission>,
-    ): SynchronousResult<Set<HealthPermission>>? {
-        return null
-    }
-}
diff --git a/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt b/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt
index f73d84e..f0d031bc 100644
--- a/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt
+++ b/health/connect/connect-client/src/test/java/androidx/health/connect/client/PermissionControllerTest.kt
@@ -18,7 +18,6 @@
 
 import android.content.Context
 import androidx.health.connect.client.permission.HealthPermission
-import androidx.health.connect.client.records.StepsRecord
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import com.google.common.truth.Truth
@@ -39,20 +38,6 @@
     }
 
     @Test
-    fun createIntentTest() {
-        val requestPermissionContract =
-            PermissionController.createRequestPermissionResultContractLegacy(PROVIDER_PACKAGE_NAME)
-        val intent =
-            requestPermissionContract.createIntent(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        Truth.assertThat(intent.action).isEqualTo("androidx.health.ACTION_REQUEST_PERMISSIONS")
-        Truth.assertThat(intent.`package`).isEqualTo(PROVIDER_PACKAGE_NAME)
-    }
-
-    @Test
     fun createIntentTest_permissionStrings() {
         val requestPermissionContract =
             PermissionController.createRequestPermissionResultContract(PROVIDER_PACKAGE_NAME)
diff --git a/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt b/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt
index 2fc02d2..ef078d3 100644
--- a/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt
+++ b/health/connect/connect-client/src/test/java/androidx/health/connect/client/impl/HealthConnectClientImplTest.kt
@@ -25,7 +25,6 @@
 import androidx.health.connect.client.changes.DeletionChange
 import androidx.health.connect.client.changes.UpsertionChange
 import androidx.health.connect.client.impl.converters.datatype.toDataType
-import androidx.health.connect.client.permission.HealthPermission.Companion.createReadPermissionLegacy
 import androidx.health.connect.client.permission.HealthPermission.Companion.getReadPermission
 import androidx.health.connect.client.permission.HealthPermission.Companion.getWritePermission
 import androidx.health.connect.client.records.ActiveCaloriesBurnedRecord
@@ -88,7 +87,6 @@
 
 private val API_METHOD_LIST =
     listOf<suspend HealthConnectClientImpl.() -> Unit>(
-        { getGrantedPermissionsLegacy(setOf()) },
         { revokeAllPermissions() },
         { insertRecords(listOf()) },
         { updateRecords(listOf()) },
@@ -190,36 +188,6 @@
     }
 
     @Test
-    fun getGrantedPermissionsLegacy_none() = runTest {
-        val response = testBlocking {
-            healthConnectClient.getGrantedPermissionsLegacy(
-                setOf(createReadPermissionLegacy(StepsRecord::class))
-            )
-        }
-
-        assertThat(response).isEmpty()
-    }
-
-    @Test
-    fun getGrantedPermissionsLegacy_steps() = runTest {
-        fakeAhpServiceStub.addGrantedPermission(
-            androidx.health.platform.client.permission.Permission(
-                PermissionProto.Permission.newBuilder()
-                    .setDataType(DataProto.DataType.newBuilder().setName("Steps"))
-                    .setAccessType(PermissionProto.AccessType.ACCESS_TYPE_READ)
-                    .build()
-            )
-        )
-        val response = testBlocking {
-            healthConnectClient.getGrantedPermissionsLegacy(
-                setOf(createReadPermissionLegacy(StepsRecord::class))
-            )
-        }
-
-        assertThat(response).containsExactly(createReadPermissionLegacy(StepsRecord::class))
-    }
-
-    @Test
     fun getGrantedPermissions_none() = runTest {
         val response = testBlocking { healthConnectClient.getGrantedPermissions() }
 
diff --git a/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt b/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt
index 7ef9575..99de1ce 100644
--- a/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt
+++ b/health/connect/connect-client/src/test/java/androidx/health/connect/client/permission/HealthDataRequestPermissionsTest.kt
@@ -15,104 +15,4 @@
  */
 package androidx.health.connect.client.permission
 
-import android.content.Context
-import android.content.Intent
-import androidx.health.connect.client.HealthConnectClient
-import androidx.health.connect.client.records.StepsRecord
-import androidx.health.platform.client.proto.DataProto
-import androidx.health.platform.client.proto.PermissionProto
-import androidx.health.platform.client.service.HealthDataServiceConstants
-import androidx.test.core.app.ApplicationProvider
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.google.common.truth.Truth.assertThat
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
 private const val TEST_PACKAGE = "com.test.app"
-
-@RunWith(AndroidJUnit4::class)
-class HealthDataRequestPermissionsTest {
-
-    private lateinit var context: Context
-
-    @Before
-    fun setUp() {
-        context = ApplicationProvider.getApplicationContext()
-    }
-
-    @Test
-    fun createIntentTest() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val intent =
-            requestPermissionContract.createIntent(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        assertThat(intent.action).isEqualTo("androidx.health.ACTION_REQUEST_PERMISSIONS")
-        assertThat(intent.`package`).isEqualTo(TEST_PACKAGE)
-    }
-
-    @Test
-    fun createIntent_defaultPackage() {
-        val requestPermissionContract = HealthDataRequestPermissions()
-        val intent =
-            requestPermissionContract.createIntent(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        assertThat(intent.action).isEqualTo("androidx.health.ACTION_REQUEST_PERMISSIONS")
-        assertThat(intent.`package`).isEqualTo(HealthConnectClient.DEFAULT_PROVIDER_PACKAGE_NAME)
-    }
-
-    @Test
-    fun parseIntent_null_fallback() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val result = requestPermissionContract.parseResult(0, null)
-
-        assertThat(result).isEmpty()
-    }
-
-    @Test
-    fun parseIntent_emptyIntent() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val result = requestPermissionContract.parseResult(0, Intent())
-
-        assertThat(result).isEmpty()
-    }
-
-    @Test
-    fun parseIntent() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val intent = Intent()
-        intent.putParcelableArrayListExtra(
-            HealthDataServiceConstants.KEY_GRANTED_PERMISSIONS_JETPACK,
-            arrayListOf(
-                androidx.health.platform.client.permission.Permission(
-                    PermissionProto.Permission.newBuilder()
-                        .setDataType(DataProto.DataType.newBuilder().setName("Steps"))
-                        .setAccessType(PermissionProto.AccessType.ACCESS_TYPE_READ)
-                        .build()
-                )
-            )
-        )
-        val result = requestPermissionContract.parseResult(0, intent)
-
-        assertThat(result)
-            .containsExactly(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-    }
-
-    @Test
-    fun synchronousResult_null() {
-        val requestPermissionContract = HealthDataRequestPermissions(TEST_PACKAGE)
-        val result =
-            requestPermissionContract.getSynchronousResult(
-                context,
-                setOf(HealthPermission.createReadPermissionLegacy(StepsRecord::class))
-            )
-
-        assertThat(result).isNull()
-    }
-}
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt b/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/2.6.0-beta01.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     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, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @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/current.ignore b/lifecycle/lifecycle-viewmodel-compose/api/current.ignore
new file mode 100644
index 0000000..0a5b8ff
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-compose/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt:
+    Removed class androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/current.txt b/lifecycle/lifecycle-viewmodel-compose/api/current.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/current.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/current.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     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, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @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_2.6.0-beta01.txt b/lifecycle/lifecycle-viewmodel-compose/api/restricted_2.6.0-beta01.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/restricted_2.6.0-beta01.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/restricted_2.6.0-beta01.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     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, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @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.ignore b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.ignore
new file mode 100644
index 0000000..0a5b8ff
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt:
+    Removed class androidx.lifecycle.viewmodel.compose.SavedStateHandleSaverKt
diff --git a/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
index 05b6910..33d89fc 100644
--- a/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
+++ b/lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
@@ -8,9 +8,6 @@
     field public static final androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner INSTANCE;
   }
 
-  public final class SavedStateHandleSaverKt {
-  }
-
   public final class ViewModelKt {
     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, optional androidx.lifecycle.viewmodel.CreationExtras extras);
     method @Deprecated @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/paging/paging-common/api/current.ignore b/paging/paging-common/api/current.ignore
index aab3a7e..1002700 100644
--- a/paging/paging-common/api/current.ignore
+++ b/paging/paging-common/api/current.ignore
@@ -11,6 +11,8 @@
     Removed class androidx.paging.HintHandlerKt
 RemovedClass: androidx.paging.PageFetcherSnapshotKt:
     Removed class androidx.paging.PageFetcherSnapshotKt
+RemovedClass: androidx.paging.PagingSourceKt:
+    Removed class androidx.paging.PagingSourceKt
 RemovedClass: androidx.paging.RemoteMediatorAccessorKt:
     Removed class androidx.paging.RemoteMediatorAccessorKt
 RemovedClass: androidx.paging.SeparatorsKt:
diff --git a/paging/paging-common/api/current.txt b/paging/paging-common/api/current.txt
index 56ed7dd..3fca865 100644
--- a/paging/paging-common/api/current.txt
+++ b/paging/paging-common/api/current.txt
@@ -411,9 +411,6 @@
   public static final class PagingSource.LoadResult.Page.Companion {
   }
 
-  public final class PagingSourceKt {
-  }
-
   public final class PagingState<Key, Value> {
     ctor public PagingState(java.util.List<androidx.paging.PagingSource.LoadResult.Page<Key,Value>> pages, Integer? anchorPosition, androidx.paging.PagingConfig config, @IntRange(from=0L) int leadingPlaceholderCount);
     method public Value? closestItemToPosition(int anchorPosition);
diff --git a/paging/paging-common/api/public_plus_experimental_current.txt b/paging/paging-common/api/public_plus_experimental_current.txt
index 06ebfb4..3db67b4 100644
--- a/paging/paging-common/api/public_plus_experimental_current.txt
+++ b/paging/paging-common/api/public_plus_experimental_current.txt
@@ -415,9 +415,6 @@
   public static final class PagingSource.LoadResult.Page.Companion {
   }
 
-  public final class PagingSourceKt {
-  }
-
   public final class PagingState<Key, Value> {
     ctor public PagingState(java.util.List<androidx.paging.PagingSource.LoadResult.Page<Key,Value>> pages, Integer? anchorPosition, androidx.paging.PagingConfig config, @IntRange(from=0L) int leadingPlaceholderCount);
     method public Value? closestItemToPosition(int anchorPosition);
diff --git a/paging/paging-common/api/restricted_current.ignore b/paging/paging-common/api/restricted_current.ignore
index aab3a7e..1002700 100644
--- a/paging/paging-common/api/restricted_current.ignore
+++ b/paging/paging-common/api/restricted_current.ignore
@@ -11,6 +11,8 @@
     Removed class androidx.paging.HintHandlerKt
 RemovedClass: androidx.paging.PageFetcherSnapshotKt:
     Removed class androidx.paging.PageFetcherSnapshotKt
+RemovedClass: androidx.paging.PagingSourceKt:
+    Removed class androidx.paging.PagingSourceKt
 RemovedClass: androidx.paging.RemoteMediatorAccessorKt:
     Removed class androidx.paging.RemoteMediatorAccessorKt
 RemovedClass: androidx.paging.SeparatorsKt:
diff --git a/paging/paging-common/api/restricted_current.txt b/paging/paging-common/api/restricted_current.txt
index 56ed7dd..3fca865 100644
--- a/paging/paging-common/api/restricted_current.txt
+++ b/paging/paging-common/api/restricted_current.txt
@@ -411,9 +411,6 @@
   public static final class PagingSource.LoadResult.Page.Companion {
   }
 
-  public final class PagingSourceKt {
-  }
-
   public final class PagingState<Key, Value> {
     ctor public PagingState(java.util.List<androidx.paging.PagingSource.LoadResult.Page<Key,Value>> pages, Integer? anchorPosition, androidx.paging.PagingConfig config, @IntRange(from=0L) int leadingPlaceholderCount);
     method public Value? closestItemToPosition(int anchorPosition);
diff --git a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt
index 4d334f8..a2fcfc5 100644
--- a/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt
+++ b/privacysandbox/tools/tools-apicompiler/src/test/java/androidx/privacysandbox/tools/apicompiler/FullFeaturedSdkTest.kt
@@ -45,6 +45,7 @@
             "com/mysdk/IMySdk.java",
             "com/mysdk/IMySecondInterface.java",
             "com/mysdk/IMyUiInterface.java",
+            "com/mysdk/IMyUiInterfaceCoreLibInfoAndBinderWrapper.java",
             "com/mysdk/IMySecondInterfaceTransactionCallback.java",
             "com/mysdk/IResponseTransactionCallback.java",
             "com/mysdk/IStringTransactionCallback.java",
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt
index dea1e4a..29664ab 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/java/androidx/privacysandbox/tools/apigenerator/InterfaceApiGeneratorTest.kt
@@ -29,6 +29,8 @@
         "com/sdk/IMyInterface.java",
         "com/sdk/IMySecondInterface.java",
         "com/sdk/IMyInterfaceTransactionCallback.java",
+        "com/sdk/IMySecondInterfaceTransactionCallback.java",
+        "com/sdk/IMySecondInterfaceCoreLibInfoAndBinderWrapper.java",
         "com/sdk/IIntTransactionCallback.java",
         "com/sdk/ICancellationSignal.java",
         "com/sdk/ParcelableStackFrame.java",
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
index b64faf5..74b3e78 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/input/com/sdk/MySdk.kt
@@ -1,5 +1,6 @@
 package com.sdk
 
+import androidx.privacysandbox.tools.PrivacySandboxValue
 import androidx.privacysandbox.tools.PrivacySandboxInterface
 import androidx.privacysandbox.tools.PrivacySandboxService
 import androidx.privacysandbox.ui.core.SandboxedUiAdapter
@@ -9,6 +10,8 @@
     suspend fun getInterface(): MyInterface
 
     suspend fun maybeGetInterface(): MyInterface?
+
+    suspend fun getUiInterface(): MySecondInterface
 }
 
 @PrivacySandboxInterface
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
index 8b3e16e..df137b48 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdk.kt
@@ -3,5 +3,7 @@
 public interface MySdk {
     public suspend fun getInterface(): MyInterface
 
+    public suspend fun getUiInterface(): MySecondInterface
+
     public suspend fun maybeGetInterface(): MyInterface?
 }
diff --git a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
index f898c9c..19a398a 100644
--- a/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
+++ b/privacysandbox/tools/tools-apigenerator/src/test/test-data/interfaces/output/com/sdk/MySdkClientProxy.kt
@@ -1,5 +1,6 @@
 package com.sdk
 
+import androidx.privacysandbox.ui.client.SandboxedUiAdapterFactory
 import com.sdk.PrivacySandboxThrowableParcelConverter
 import com.sdk.PrivacySandboxThrowableParcelConverter.fromThrowableParcel
 import kotlin.coroutines.resumeWithException
@@ -30,6 +31,29 @@
         }
     }
 
+    public override suspend fun getUiInterface(): MySecondInterface = suspendCancellableCoroutine {
+        var mCancellationSignal: ICancellationSignal? = null
+        val transactionCallback = object: IMySecondInterfaceTransactionCallback.Stub() {
+            override fun onCancellable(cancellationSignal: ICancellationSignal) {
+                if (it.isCancelled) {
+                    cancellationSignal.cancel()
+                }
+                mCancellationSignal = cancellationSignal
+            }
+            override fun onSuccess(result: IMySecondInterfaceCoreLibInfoAndBinderWrapper) {
+                it.resumeWith(Result.success(MySecondInterfaceClientProxy(result.binder,
+                        SandboxedUiAdapterFactory.createFromCoreLibInfo(result.coreLibInfo))))
+            }
+            override fun onFailure(throwableParcel: PrivacySandboxThrowableParcel) {
+                it.resumeWithException(fromThrowableParcel(throwableParcel))
+            }
+        }
+        remote.getUiInterface(transactionCallback)
+        it.invokeOnCancellation {
+            mCancellationSignal?.cancel()
+        }
+    }
+
     public override suspend fun maybeGetInterface(): MyInterface? = suspendCancellableCoroutine {
         var mCancellationSignal: ICancellationSignal? = null
         val transactionCallback = object: IMyInterfaceTransactionCallback.Stub() {
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
index 5b7307c..27091fa 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/AidlGenerator.kt
@@ -21,6 +21,7 @@
 import androidx.privacysandbox.tools.core.generator.poet.AidlInterfaceSpec.Companion.aidlInterface
 import androidx.privacysandbox.tools.core.generator.poet.AidlMethodSpec
 import androidx.privacysandbox.tools.core.generator.poet.AidlParcelableSpec.Companion.aidlParcelable
+import androidx.privacysandbox.tools.core.generator.poet.AidlTypeKind
 import androidx.privacysandbox.tools.core.generator.poet.AidlTypeSpec
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
 import androidx.privacysandbox.tools.core.model.AnnotatedValue
@@ -32,6 +33,7 @@
 import androidx.privacysandbox.tools.core.model.Types.asNonNull
 import androidx.privacysandbox.tools.core.model.getOnlyService
 import androidx.privacysandbox.tools.core.model.hasSuspendFunctions
+import androidx.privacysandbox.tools.core.model.hasUiInterfaces
 import java.io.File
 import java.nio.file.Path
 import java.nio.file.Paths
@@ -78,12 +80,17 @@
 
     private fun compileAidlInterfaces(aidlSources: List<GeneratedSource>): List<GeneratedSource> {
         aidlCompiler.compile(workingDir, aidlSources.map { it.file.toPath() })
-        val javaSources = aidlSources.map {
-            GeneratedSource(
-                packageName = it.packageName,
-                interfaceName = it.interfaceName,
-                file = getJavaFileForAidlFile(it.file)
-            )
+        val javaSources = aidlSources.mapNotNull {
+            if (it.packageName == bundleType().packageName) {
+                // TODO(b/265266769): use framework stubs so we can stop special Bundle treatment
+                null
+            } else {
+                GeneratedSource(
+                    packageName = it.packageName,
+                    interfaceName = it.interfaceName,
+                    file = getJavaFileForAidlFile(it.file)
+                )
+            }
         }
         javaSources.forEach {
             check(it.file.exists()) {
@@ -96,21 +103,40 @@
     private fun generateAidlContent(): List<AidlFileSpec> {
         val values = api.values.map(::generateValue)
         val service = aidlInterface(api.getOnlyService())
-        val customCallbacks = api.callbacks.map(::aidlInterface)
-        val interfaces = api.interfaces.map(::aidlInterface)
+        val customCallbacks = api.callbacks.flatMap(::aidlInterface)
+        val interfaces = api.interfaces.flatMap(::aidlInterface)
         val suspendFunctionUtilities = generateSuspendFunctionUtilities()
+        val fakeBundle = generateFakeBundle()
         return suspendFunctionUtilities +
             service +
             values +
             customCallbacks +
-            interfaces
+            interfaces +
+            fakeBundle
     }
 
-    private fun aidlInterface(annotatedInterface: AnnotatedInterface) =
-        aidlInterface(Type(annotatedInterface.type.packageName, annotatedInterface.aidlName())) {
+    private fun aidlInterface(annotatedInterface: AnnotatedInterface): List<AidlFileSpec> {
+        val interfaceFile = aidlInterface(
+            Type(annotatedInterface.type.packageName, annotatedInterface.aidlName())
+        ) {
             annotatedInterface.methods.forEach { addMethod(it) }
         }
 
+        return buildList {
+            if (annotatedInterface.inheritsSandboxedUiAdapter) {
+                val uiWrapper = aidlParcelable(annotatedInterface.uiAdapterAidlWrapper()) {
+                    addProperty(
+                        "coreLibInfo",
+                        AidlTypeSpec(bundleType(), kind = AidlTypeKind.PARCELABLE)
+                    )
+                    addProperty("binder", annotatedInterface.aidlType())
+                }
+                add(uiWrapper)
+            }
+            add(interfaceFile)
+        }
+    }
+
     private fun AidlInterfaceSpec.Builder.addMethod(method: Method) {
         addMethod(method.name) {
             method.parameters.forEach { addParameter(it) }
@@ -128,11 +154,14 @@
             "Void cannot be a parameter type."
         }
         val aidlType = getAidlTypeDeclaration(parameter.type)
-        addParameter(
-            parameter.name,
-            aidlType,
-            isIn = api.valueMap.containsKey(parameter.type.asNonNull()) || aidlType.isList
-        )
+
+        addParameter(parameter.name, aidlType)
+    }
+
+    // TODO(b/265266769): Use framework stubs for Bundle
+    private fun generateFakeBundle(): List<AidlFileSpec> {
+        if (!api.hasUiInterfaces()) return emptyList()
+        return listOf(aidlParcelable(bundleType()))
     }
 
     private fun generateSuspendFunctionUtilities(): List<AidlFileSpec> {
@@ -158,10 +187,26 @@
                 addParameter("cancellationSignal", cancellationSignalType())
             }
             addMethod("onSuccess") {
-                if (type != Types.unit) addParameter(Parameter("result", type))
+                val interfaceType = api.interfaceMap[type]
+                if (interfaceType != null && interfaceType.inheritsSandboxedUiAdapter) {
+                    // Bypass getAidlTypeDeclaration, since we want to specify the UI wrapper
+                    // parcelable rather than the interface.
+                    addParameter(
+                        "result",
+                        AidlTypeSpec(
+                            interfaceType.uiAdapterAidlWrapper(),
+                            kind = AidlTypeKind.PARCELABLE
+                        )
+                    )
+                } else if (type != Types.unit) {
+                    addParameter(Parameter("result", type))
+                }
             }
             addMethod("onFailure") {
-                addParameter("throwableParcel", AidlTypeSpec(throwableParcelType()), isIn = true)
+                addParameter(
+                    "throwableParcel",
+                    AidlTypeSpec(throwableParcelType(), kind = AidlTypeKind.PARCELABLE)
+                )
             }
         }
     }
@@ -174,10 +219,21 @@
         return aidlParcelable(throwableParcelType()) {
             addProperty("exceptionClass", primitive("String"))
             addProperty("errorMessage", primitive("String"))
-            addProperty("stackTrace", AidlTypeSpec(parcelableStackFrameType(), isList = true))
-            addProperty("cause", AidlTypeSpec(throwableParcelType(), isList = true))
             addProperty(
-                "suppressedExceptions", AidlTypeSpec(throwableParcelType(), isList = true)
+                "stackTrace",
+                AidlTypeSpec(
+                    parcelableStackFrameType(),
+                    isList = true,
+                    kind = AidlTypeKind.PARCELABLE
+                )
+            )
+            addProperty(
+                "cause",
+                AidlTypeSpec(throwableParcelType(), isList = true, kind = AidlTypeKind.PARCELABLE)
+            )
+            addProperty(
+                "suppressedExceptions",
+                AidlTypeSpec(throwableParcelType(), isList = true, kind = AidlTypeKind.PARCELABLE)
             )
         }
     }
@@ -213,11 +269,18 @@
     }
 
     private fun packageName() = api.getOnlyService().type.packageName
-    private fun cancellationSignalType() = AidlTypeSpec(Type(packageName(), cancellationSignalName))
+    private fun cancellationSignalType() =
+        AidlTypeSpec(Type(packageName(), cancellationSignalName), kind = AidlTypeKind.INTERFACE)
+
     private fun throwableParcelType() = Type(packageName(), throwableParcelName)
     private fun parcelableStackFrameType() = Type(packageName(), parcelableStackFrameName)
+    private fun bundleType() = Type("android.os", "Bundle")
+
     private fun transactionCallback(type: Type) =
-        AidlTypeSpec(Type(api.getOnlyService().type.packageName, type.transactionCallbackName()))
+        AidlTypeSpec(
+            Type(api.getOnlyService().type.packageName, type.transactionCallbackName()),
+            kind = AidlTypeKind.INTERFACE
+        )
 
     private fun getAidlTypeDeclaration(rawType: Type): AidlTypeSpec {
         val type = wrapWithListIfNeeded(rawType)
@@ -254,18 +317,31 @@
     }
 }
 
-fun AnnotatedInterface.aidlName() = "I${type.simpleName}"
+fun AnnotatedInterface.aidlName(): String = "I${type.simpleName}"
 
 fun Type.transactionCallbackName() =
     "I${simpleName}${typeParameters.joinToString("") { it.simpleName }}TransactionCallback"
 
 internal fun AnnotatedValue.aidlType() =
-    AidlTypeSpec(Type(type.packageName, "Parcelable${type.simpleName}"))
+    AidlTypeSpec(
+        Type(type.packageName, "Parcelable${type.simpleName}"),
+        kind = AidlTypeKind.PARCELABLE
+    )
 
-internal fun AnnotatedInterface.aidlType() = AidlTypeSpec(Type(type.packageName, aidlName()))
+internal fun AnnotatedInterface.aidlType() =
+    AidlTypeSpec(Type(type.packageName, aidlName()), kind = AidlTypeKind.INTERFACE)
+
+internal fun AnnotatedInterface.uiAdapterAidlWrapper(): Type {
+    if (!inheritsSandboxedUiAdapter) {
+        throw IllegalArgumentException(
+            "Cannot get UI adapter AIDL wrapper type of non-UI interface"
+        )
+    }
+    return Type(type.packageName, "I${type.simpleName}CoreLibInfoAndBinderWrapper")
+}
 
 internal fun primitive(name: String, isList: Boolean = false) =
-    AidlTypeSpec(Type("", name), requiresImport = false, isList = isList)
+    AidlTypeSpec(Type("", name), isList = isList, kind = AidlTypeKind.PRIMITIVE)
 
 /**
  * Removes nullability from a type, and applies necessary changes to represent it in AIDL.
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt
index ec1cb96..33d8ebf 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/BinderCodeConverter.kt
@@ -190,6 +190,9 @@
         }
         val sandboxInterface = api.interfaceMap[type]
         if (sandboxInterface != null) {
+            if (sandboxInterface.inheritsSandboxedUiAdapter) {
+                return sandboxInterface.uiAdapterAidlWrapper().poetTypeName()
+            }
             return sandboxInterface.aidlType().innerType.poetTypeName()
         }
         if (type.qualifiedName == List::class.qualifiedName)
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
index 679197d..a63fbf1 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/ClientBinderCodeConverter.kt
@@ -18,13 +18,30 @@
 
 import androidx.privacysandbox.tools.core.model.AnnotatedInterface
 import androidx.privacysandbox.tools.core.model.ParsedApi
+import com.squareup.kotlinpoet.ClassName
 import com.squareup.kotlinpoet.CodeBlock
 
 class ClientBinderCodeConverter(api: ParsedApi) : BinderCodeConverter(api) {
+    companion object {
+        val sandboxedUiAdapterFactoryClass =
+            ClassName("androidx.privacysandbox.ui.client", "SandboxedUiAdapterFactory")
+    }
+
     override fun convertToInterfaceModelCode(
         annotatedInterface: AnnotatedInterface,
         expression: String
-    ): CodeBlock = CodeBlock.of("%T(%L)", annotatedInterface.clientProxyNameSpec(), expression)
+    ): CodeBlock {
+        if (annotatedInterface.inheritsSandboxedUiAdapter) {
+            return CodeBlock.of(
+                "%T(%L.binder, %T.createFromCoreLibInfo(%L.coreLibInfo))",
+                annotatedInterface.clientProxyNameSpec(),
+                expression,
+                sandboxedUiAdapterFactoryClass,
+                expression,
+            )
+        }
+        return CodeBlock.of("%T(%L)", annotatedInterface.clientProxyNameSpec(), expression)
+    }
 
     override fun convertToInterfaceBinderCode(
         annotatedInterface: AnnotatedInterface,
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt
index db27169..ce117d6 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlMethodSpec.kt
@@ -26,8 +26,8 @@
             parameters.add(parameter)
         }
 
-        fun addParameter(name: String, type: AidlTypeSpec, isIn: Boolean = false) {
-            addParameter(AidlParameterSpec(name, type, isIn))
+        fun addParameter(name: String, type: AidlTypeSpec) {
+            addParameter(AidlParameterSpec(name, type, isIn = type.isList || type.isParcelable))
         }
 
         fun build() = AidlMethodSpec(name, parameters)
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt
index f87cf6d..4aeb180 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/generator/poet/AidlTypeSpec.kt
@@ -18,9 +18,15 @@
 
 import androidx.privacysandbox.tools.core.model.Type
 
+internal enum class AidlTypeKind {
+    PRIMITIVE,
+    PARCELABLE,
+    INTERFACE,
+}
+
 internal data class AidlTypeSpec(
     val innerType: Type,
-    val requiresImport: Boolean = true,
+    val kind: AidlTypeKind,
     val isList: Boolean = false,
 ) {
     override fun toString() = buildString {
@@ -31,6 +37,9 @@
     /** Returns a new type spec representing a list of this type. */
     fun listSpec(): AidlTypeSpec {
         require(!isList) { "Nested lists are not supported." }
-        return AidlTypeSpec(innerType, requiresImport, isList = true)
+        return copy(isList = true)
     }
+
+    val requiresImport = kind != AidlTypeKind.PRIMITIVE
+    val isParcelable = kind == AidlTypeKind.PARCELABLE
 }
\ No newline at end of file
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt
index 070df87..dc289c6 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/AnnotatedInterface.kt
@@ -26,4 +26,6 @@
      */
     val superTypes: List<Type> = emptyList(),
     val methods: List<Method> = emptyList(),
-)
\ No newline at end of file
+) {
+    val inheritsSandboxedUiAdapter = superTypes.contains(Types.sandboxedUiAdapter)
+}
\ No newline at end of file
diff --git a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
index 88245e9..7b61ecc 100644
--- a/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
+++ b/privacysandbox/tools/tools-core/src/main/java/androidx/privacysandbox/tools/core/model/Models.kt
@@ -30,6 +30,10 @@
         .any(Method::isSuspend)
 }
 
+fun ParsedApi.hasUiInterfaces(): Boolean {
+    return interfaces.any { it.inheritsSandboxedUiAdapter }
+}
+
 object Types {
     val unit = Type(packageName = "kotlin", simpleName = "Unit")
     val boolean = Type(packageName = "kotlin", simpleName = "Boolean")
diff --git a/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt b/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt
index b51203a..b73cc1f 100644
--- a/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt
+++ b/privacysandbox/tools/tools-testing/src/main/java/androidx/privacysandbox/tools/testing/LibraryStubs.kt
@@ -111,6 +111,43 @@
         |}
         |""".trimMargin()
     ),
+    Source.kotlin(
+        "androidx/privacysandbox/ui/client/SandboxedUiAdapterFactory.kt", """
+        |package androidx.privacysandbox.ui.client
+        |import android.content.Context
+        |import android.hardware.display.DisplayManager
+        |import android.os.Binder
+        |import android.os.Build
+        |import android.os.Bundle
+        |import android.view.Display
+        |import android.view.SurfaceControlViewHost
+        |import android.view.SurfaceView
+        |import android.view.View
+        |import androidx.annotation.NonNull
+        |import androidx.annotation.RequiresApi
+        |import androidx.privacysandbox.ui.core.SandboxedUiAdapter
+        |import java.util.concurrent.Executor
+        |@RequiresApi(Build.VERSION_CODES.TIRAMISU)
+        |object SandboxedUiAdapterFactory {
+        |    fun createFromCoreLibInfo(coreLibInfo: Bundle): SandboxedUiAdapter {
+        |        return RemoteAdapter(coreLibInfo)
+        |    }
+        |    private class RemoteAdapter(private val coreLibInfo: Bundle) :
+        |        SandboxedUiAdapter {
+        |        override fun openSession(
+        |            context: Context,
+        |            initialWidth: Int,
+        |            initialHeight: Int,
+        |            isZOrderOnTop: Boolean,
+        |            clientExecutor: Executor,
+        |            client: SandboxedUiAdapter.SessionClient
+        |        ) {
+        |            // This space intentionally left blank
+        |        }
+        |    }
+        |}
+        |""".trimMargin()
+    ),
 )
 
 val allTestLibraryStubs = syntheticSdkRuntimeLibraryStubs + syntheticUiLibraryStubs
\ No newline at end of file
diff --git a/room/room-ktx/api/current.ignore b/room/room-ktx/api/current.ignore
new file mode 100644
index 0000000..26a7fe6
--- /dev/null
+++ b/room/room-ktx/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.room.CoroutinesRoomKt:
+    Removed class androidx.room.CoroutinesRoomKt
diff --git a/room/room-ktx/api/current.txt b/room/room-ktx/api/current.txt
index 6178ad3..666ad72 100644
--- a/room/room-ktx/api/current.txt
+++ b/room/room-ktx/api/current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.room {
 
-  public final class CoroutinesRoomKt {
-  }
-
   public final class RoomDatabaseKt {
     method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
diff --git a/room/room-ktx/api/public_plus_experimental_current.txt b/room/room-ktx/api/public_plus_experimental_current.txt
index 6178ad3..666ad72 100644
--- a/room/room-ktx/api/public_plus_experimental_current.txt
+++ b/room/room-ktx/api/public_plus_experimental_current.txt
@@ -1,9 +1,6 @@
 // Signature format: 4.0
 package androidx.room {
 
-  public final class CoroutinesRoomKt {
-  }
-
   public final class RoomDatabaseKt {
     method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
diff --git a/room/room-ktx/api/restricted_current.ignore b/room/room-ktx/api/restricted_current.ignore
new file mode 100644
index 0000000..26a7fe6
--- /dev/null
+++ b/room/room-ktx/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.room.CoroutinesRoomKt:
+    Removed class androidx.room.CoroutinesRoomKt
diff --git a/room/room-ktx/api/restricted_current.txt b/room/room-ktx/api/restricted_current.txt
index f93c497a9..884fcfe 100644
--- a/room/room-ktx/api/restricted_current.txt
+++ b/room/room-ktx/api/restricted_current.txt
@@ -14,9 +14,6 @@
     method public suspend <R> Object? execute(androidx.room.RoomDatabase db, boolean inTransaction, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Callable<R> callable, kotlin.coroutines.Continuation<? super R>);
   }
 
-  public final class CoroutinesRoomKt {
-  }
-
   public final class RoomDatabaseKt {
     method public static kotlinx.coroutines.flow.Flow<java.util.Set<java.lang.String>> invalidationTrackerFlow(androidx.room.RoomDatabase, String![] tables, optional boolean emitInitialState);
     method public static suspend <R> Object? withTransaction(androidx.room.RoomDatabase, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super R>,?> block, kotlin.coroutines.Continuation<? super R>);
diff --git a/samples/MediaRoutingDemo/build.gradle b/samples/MediaRoutingDemo/build.gradle
index 937acf1..a40ccba 100644
--- a/samples/MediaRoutingDemo/build.gradle
+++ b/samples/MediaRoutingDemo/build.gradle
@@ -4,9 +4,9 @@
 }
 
 dependencies {
-    implementation(project(":appcompat:appcompat"))
+    implementation("androidx.appcompat:appcompat:1.6.0")
     implementation(project(":mediarouter:mediarouter"))
-    implementation(project(":recyclerview:recyclerview"))
+    implementation("androidx.recyclerview:recyclerview:1.2.1")
     implementation("androidx.concurrent:concurrent-futures:1.1.0")
     implementation(libs.material)
 
diff --git a/tv/tv-foundation/api/current.txt b/tv/tv-foundation/api/current.txt
index bffc836..06738d6 100644
--- a/tv/tv-foundation/api/current.txt
+++ b/tv/tv-foundation/api/current.txt
@@ -9,9 +9,6 @@
     property public final float parentFraction;
   }
 
-  public final class ScrollableWithPivotKt {
-  }
-
 }
 
 package androidx.tv.foundation.lazy.grid {
diff --git a/tv/tv-foundation/api/restricted_current.txt b/tv/tv-foundation/api/restricted_current.txt
index bffc836..06738d6 100644
--- a/tv/tv-foundation/api/restricted_current.txt
+++ b/tv/tv-foundation/api/restricted_current.txt
@@ -9,9 +9,6 @@
     property public final float parentFraction;
   }
 
-  public final class ScrollableWithPivotKt {
-  }
-
 }
 
 package androidx.tv.foundation.lazy.grid {
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt
index 914a8d7..513df79 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridPrefetcherTest.kt
@@ -85,6 +85,7 @@
         }
 
         waitForPrefetch(4)
+        waitForPrefetch(5)
 
         rule.onNodeWithTag("4")
             .assertExists()
@@ -105,6 +106,7 @@
         }
 
         waitForPrefetch(2)
+        waitForPrefetch(3)
 
         rule.onNodeWithTag("2")
             .assertExists()
@@ -125,6 +127,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -141,6 +144,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
@@ -221,6 +225,7 @@
         }
 
         waitForPrefetch(6)
+        waitForPrefetch(7)
 
         rule.onNodeWithTag("6")
             .assertExists()
@@ -239,6 +244,7 @@
         }
 
         waitForPrefetch(0)
+        waitForPrefetch(1)
 
         rule.onNodeWithTag("0")
             .assertExists()
diff --git a/tv/tv-material/api/current.txt b/tv/tv-material/api/current.txt
index 83297a9..ad9374e 100644
--- a/tv/tv-material/api/current.txt
+++ b/tv/tv-material/api/current.txt
@@ -1,20 +1,11 @@
 // Signature format: 4.0
 package androidx.tv.material3 {
 
-  public final class CarouselKt {
-  }
-
-  public final class ColorSchemeKt {
-  }
-
   public final class ContentColorKt {
     method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalContentColor();
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class ImmersiveListKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.ColorScheme getColorScheme();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.Shapes getShapes();
@@ -24,9 +15,6 @@
     field public static final androidx.tv.material3.MaterialTheme INSTANCE;
   }
 
-  public final class MaterialThemeKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -61,12 +49,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class TabKt {
-  }
-
-  public final class TabRowKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
diff --git a/tv/tv-material/api/restricted_current.txt b/tv/tv-material/api/restricted_current.txt
index 83297a9..ad9374e 100644
--- a/tv/tv-material/api/restricted_current.txt
+++ b/tv/tv-material/api/restricted_current.txt
@@ -1,20 +1,11 @@
 // Signature format: 4.0
 package androidx.tv.material3 {
 
-  public final class CarouselKt {
-  }
-
-  public final class ColorSchemeKt {
-  }
-
   public final class ContentColorKt {
     method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> getLocalContentColor();
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.graphics.Color> LocalContentColor;
   }
 
-  public final class ImmersiveListKt {
-  }
-
   public final class MaterialTheme {
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.ColorScheme getColorScheme();
     method @androidx.compose.runtime.Composable @androidx.compose.runtime.ReadOnlyComposable public androidx.tv.material3.Shapes getShapes();
@@ -24,9 +15,6 @@
     field public static final androidx.tv.material3.MaterialTheme INSTANCE;
   }
 
-  public final class MaterialThemeKt {
-  }
-
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraLarge();
     method public androidx.compose.foundation.shape.CornerBasedShape getExtraSmall();
@@ -61,12 +49,6 @@
     property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.compose.ui.unit.Dp> LocalAbsoluteTonalElevation;
   }
 
-  public final class TabKt {
-  }
-
-  public final class TabRowKt {
-  }
-
   public final class TextKt {
     method @androidx.compose.runtime.Composable public static void ProvideTextStyle(androidx.compose.ui.text.TextStyle value, kotlin.jvm.functions.Function0<kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void Text(String text, optional androidx.compose.ui.Modifier modifier, optional long color, optional long fontSize, optional androidx.compose.ui.text.font.FontStyle? fontStyle, optional androidx.compose.ui.text.font.FontWeight? fontWeight, optional androidx.compose.ui.text.font.FontFamily? fontFamily, optional long letterSpacing, optional androidx.compose.ui.text.style.TextDecoration? textDecoration, optional androidx.compose.ui.text.style.TextAlign? textAlign, optional long lineHeight, optional int overflow, optional boolean softWrap, optional int maxLines, optional kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.TextLayoutResult,kotlin.Unit> onTextLayout, optional androidx.compose.ui.text.TextStyle style);
diff --git a/wear/compose/compose-foundation/api/current.txt b/wear/compose/compose-foundation/api/current.txt
index 2c1e57f..4e9e434 100644
--- a/wear/compose/compose-foundation/api/current.txt
+++ b/wear/compose/compose-foundation/api/current.txt
@@ -196,9 +196,6 @@
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
-  public final class ScalingLazyColumnMeasureKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
     field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
   }
diff --git a/wear/compose/compose-foundation/api/public_plus_experimental_current.txt b/wear/compose/compose-foundation/api/public_plus_experimental_current.txt
index 2c1e57f..4e9e434 100644
--- a/wear/compose/compose-foundation/api/public_plus_experimental_current.txt
+++ b/wear/compose/compose-foundation/api/public_plus_experimental_current.txt
@@ -196,9 +196,6 @@
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
-  public final class ScalingLazyColumnMeasureKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
     field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
   }
diff --git a/wear/compose/compose-foundation/api/restricted_current.txt b/wear/compose/compose-foundation/api/restricted_current.txt
index 2c1e57f..4e9e434 100644
--- a/wear/compose/compose-foundation/api/restricted_current.txt
+++ b/wear/compose/compose-foundation/api/restricted_current.txt
@@ -196,9 +196,6 @@
     method public static inline <T> void itemsIndexed(androidx.wear.compose.foundation.lazy.ScalingLazyListScope, T![] items, optional kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,?>? key, kotlin.jvm.functions.Function3<? super androidx.wear.compose.foundation.lazy.ScalingLazyListItemScope,? super java.lang.Integer,? super T,kotlin.Unit> itemContent);
   }
 
-  public final class ScalingLazyColumnMeasureKt {
-  }
-
   @androidx.compose.runtime.Immutable @kotlin.jvm.JvmInline public final value class ScalingLazyListAnchorType {
     field public static final androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType.Companion Companion;
   }
diff --git a/wear/compose/compose-material-core/api/current.txt b/wear/compose/compose-material-core/api/current.txt
index d039d22..e6f50d0 100644
--- a/wear/compose/compose-material-core/api/current.txt
+++ b/wear/compose/compose-material-core/api/current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.wear.compose.materialcore {
-
-  public final class ButtonKt {
-  }
-
-}
-
diff --git a/wear/compose/compose-material-core/api/public_plus_experimental_current.txt b/wear/compose/compose-material-core/api/public_plus_experimental_current.txt
index d039d22..e6f50d0 100644
--- a/wear/compose/compose-material-core/api/public_plus_experimental_current.txt
+++ b/wear/compose/compose-material-core/api/public_plus_experimental_current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.wear.compose.materialcore {
-
-  public final class ButtonKt {
-  }
-
-}
-
diff --git a/wear/compose/compose-material-core/api/restricted_current.txt b/wear/compose/compose-material-core/api/restricted_current.txt
index d039d22..e6f50d0 100644
--- a/wear/compose/compose-material-core/api/restricted_current.txt
+++ b/wear/compose/compose-material-core/api/restricted_current.txt
@@ -1,8 +1 @@
 // Signature format: 4.0
-package androidx.wear.compose.materialcore {
-
-  public final class ButtonKt {
-  }
-
-}
-
diff --git a/wear/compose/compose-material/api/current.ignore b/wear/compose/compose-material/api/current.ignore
index b61ff34..7b452d1 100644
--- a/wear/compose/compose-material/api/current.ignore
+++ b/wear/compose/compose-material/api/current.ignore
@@ -9,6 +9,8 @@
     Removed class androidx.wear.compose.material.DefaultTimeSourceKt
 RemovedClass: androidx.wear.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.wear.compose.material.MaterialTextSelectionColorsKt
+RemovedClass: androidx.wear.compose.material.PlaceholderKt:
+    Removed class androidx.wear.compose.material.PlaceholderKt
 RemovedClass: androidx.wear.compose.material.RangeDefaultsKt:
     Removed class androidx.wear.compose.material.RangeDefaultsKt
 RemovedClass: androidx.wear.compose.material.Resources_androidKt:
@@ -17,5 +19,7 @@
     Removed class androidx.wear.compose.material.ScalingLazyColumnMeasureKt
 RemovedClass: androidx.wear.compose.material.ShapesKt:
     Removed class androidx.wear.compose.material.ShapesKt
+RemovedClass: androidx.wear.compose.material.SwipeableKt:
+    Removed class androidx.wear.compose.material.SwipeableKt
 RemovedClass: androidx.wear.compose.material.TypographyKt:
     Removed class androidx.wear.compose.material.TypographyKt
diff --git a/wear/compose/compose-material/api/current.txt b/wear/compose/compose-material/api/current.txt
index c0a9816..fca0d12 100644
--- a/wear/compose/compose-material/api/current.txt
+++ b/wear/compose/compose-material/api/current.txt
@@ -335,9 +335,6 @@
     property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
   }
 
-  public final class PlaceholderKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PositionIndicatorAlignment {
     field public static final androidx.wear.compose.material.PositionIndicatorAlignment.Companion Companion;
   }
@@ -624,9 +621,6 @@
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
diff --git a/wear/compose/compose-material/api/restricted_current.ignore b/wear/compose/compose-material/api/restricted_current.ignore
index b61ff34..7b452d1 100644
--- a/wear/compose/compose-material/api/restricted_current.ignore
+++ b/wear/compose/compose-material/api/restricted_current.ignore
@@ -9,6 +9,8 @@
     Removed class androidx.wear.compose.material.DefaultTimeSourceKt
 RemovedClass: androidx.wear.compose.material.MaterialTextSelectionColorsKt:
     Removed class androidx.wear.compose.material.MaterialTextSelectionColorsKt
+RemovedClass: androidx.wear.compose.material.PlaceholderKt:
+    Removed class androidx.wear.compose.material.PlaceholderKt
 RemovedClass: androidx.wear.compose.material.RangeDefaultsKt:
     Removed class androidx.wear.compose.material.RangeDefaultsKt
 RemovedClass: androidx.wear.compose.material.Resources_androidKt:
@@ -17,5 +19,7 @@
     Removed class androidx.wear.compose.material.ScalingLazyColumnMeasureKt
 RemovedClass: androidx.wear.compose.material.ShapesKt:
     Removed class androidx.wear.compose.material.ShapesKt
+RemovedClass: androidx.wear.compose.material.SwipeableKt:
+    Removed class androidx.wear.compose.material.SwipeableKt
 RemovedClass: androidx.wear.compose.material.TypographyKt:
     Removed class androidx.wear.compose.material.TypographyKt
diff --git a/wear/compose/compose-material/api/restricted_current.txt b/wear/compose/compose-material/api/restricted_current.txt
index c0a9816..fca0d12 100644
--- a/wear/compose/compose-material/api/restricted_current.txt
+++ b/wear/compose/compose-material/api/restricted_current.txt
@@ -335,9 +335,6 @@
     property public final androidx.compose.runtime.saveable.Saver<androidx.wear.compose.material.PickerState,java.lang.Object> Saver;
   }
 
-  public final class PlaceholderKt {
-  }
-
   @kotlin.jvm.JvmInline public final value class PositionIndicatorAlignment {
     field public static final androidx.wear.compose.material.PositionIndicatorAlignment.Companion Companion;
   }
@@ -624,9 +621,6 @@
     enum_constant public static final androidx.wear.compose.material.SwipeToDismissValue Dismissed;
   }
 
-  public final class SwipeableKt {
-  }
-
   @androidx.compose.runtime.Stable public interface SwitchColors {
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> thumbColor(boolean enabled, boolean checked);
     method @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.compose.ui.graphics.Color> trackColor(boolean enabled, boolean checked);
diff --git a/wear/watchface/watchface-client/api/current.ignore b/wear/watchface/watchface-client/api/current.ignore
index 9a0c267..203d029 100644
--- a/wear/watchface/watchface-client/api/current.ignore
+++ b/wear/watchface/watchface-client/api/current.ignore
@@ -23,5 +23,9 @@
     Method androidx.wear.watchface.client.InteractiveWatchFaceClient.getUserStyleSchema added thrown exception android.os.RemoteException
 
 
+RemovedClass: androidx.wear.watchface.client.DeviceConfigKt:
+    Removed class androidx.wear.watchface.client.DeviceConfigKt
+RemovedClass: androidx.wear.watchface.client.EditorStateKt:
+    Removed class androidx.wear.watchface.client.EditorStateKt
 RemovedClass: androidx.wear.watchface.client.WatchFaceExceptionKt:
     Removed class androidx.wear.watchface.client.WatchFaceExceptionKt
diff --git a/wear/watchface/watchface-client/api/current.txt b/wear/watchface/watchface-client/api/current.txt
index 781eadf..b7a6bc0 100644
--- a/wear/watchface/watchface-client/api/current.txt
+++ b/wear/watchface/watchface-client/api/current.txt
@@ -68,9 +68,6 @@
     property public final boolean hasLowBitAmbient;
   }
 
-  public final class DeviceConfigKt {
-  }
-
   public final class DisconnectReasons {
     field public static final int ENGINE_DETACHED = 2; // 0x2
     field public static final int ENGINE_DIED = 1; // 0x1
@@ -100,9 +97,6 @@
     property public final androidx.wear.watchface.client.WatchFaceId watchFaceId;
   }
 
-  public final class EditorStateKt {
-  }
-
   public interface HeadlessWatchFaceClient extends java.lang.AutoCloseable {
     method @AnyThread public void addClientDisconnectListener(androidx.wear.watchface.client.HeadlessWatchFaceClient.ClientDisconnectListener listener, java.util.concurrent.Executor executor);
     method public default static androidx.wear.watchface.client.HeadlessWatchFaceClient createFromBundle(android.os.Bundle bundle);
diff --git a/wear/watchface/watchface-client/api/public_plus_experimental_current.txt b/wear/watchface/watchface-client/api/public_plus_experimental_current.txt
index dc24d57..ff5390c 100644
--- a/wear/watchface/watchface-client/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-client/api/public_plus_experimental_current.txt
@@ -72,9 +72,6 @@
     property public final boolean hasLowBitAmbient;
   }
 
-  public final class DeviceConfigKt {
-  }
-
   public final class DisconnectReasons {
     field public static final int ENGINE_DETACHED = 2; // 0x2
     field public static final int ENGINE_DIED = 1; // 0x1
@@ -104,9 +101,6 @@
     property public final androidx.wear.watchface.client.WatchFaceId watchFaceId;
   }
 
-  public final class EditorStateKt {
-  }
-
   public interface HeadlessWatchFaceClient extends java.lang.AutoCloseable {
     method @AnyThread public void addClientDisconnectListener(androidx.wear.watchface.client.HeadlessWatchFaceClient.ClientDisconnectListener listener, java.util.concurrent.Executor executor);
     method public default static androidx.wear.watchface.client.HeadlessWatchFaceClient createFromBundle(android.os.Bundle bundle);
diff --git a/wear/watchface/watchface-client/api/restricted_current.ignore b/wear/watchface/watchface-client/api/restricted_current.ignore
index 9a0c267..203d029 100644
--- a/wear/watchface/watchface-client/api/restricted_current.ignore
+++ b/wear/watchface/watchface-client/api/restricted_current.ignore
@@ -23,5 +23,9 @@
     Method androidx.wear.watchface.client.InteractiveWatchFaceClient.getUserStyleSchema added thrown exception android.os.RemoteException
 
 
+RemovedClass: androidx.wear.watchface.client.DeviceConfigKt:
+    Removed class androidx.wear.watchface.client.DeviceConfigKt
+RemovedClass: androidx.wear.watchface.client.EditorStateKt:
+    Removed class androidx.wear.watchface.client.EditorStateKt
 RemovedClass: androidx.wear.watchface.client.WatchFaceExceptionKt:
     Removed class androidx.wear.watchface.client.WatchFaceExceptionKt
diff --git a/wear/watchface/watchface-client/api/restricted_current.txt b/wear/watchface/watchface-client/api/restricted_current.txt
index 781eadf..b7a6bc0 100644
--- a/wear/watchface/watchface-client/api/restricted_current.txt
+++ b/wear/watchface/watchface-client/api/restricted_current.txt
@@ -68,9 +68,6 @@
     property public final boolean hasLowBitAmbient;
   }
 
-  public final class DeviceConfigKt {
-  }
-
   public final class DisconnectReasons {
     field public static final int ENGINE_DETACHED = 2; // 0x2
     field public static final int ENGINE_DIED = 1; // 0x1
@@ -100,9 +97,6 @@
     property public final androidx.wear.watchface.client.WatchFaceId watchFaceId;
   }
 
-  public final class EditorStateKt {
-  }
-
   public interface HeadlessWatchFaceClient extends java.lang.AutoCloseable {
     method @AnyThread public void addClientDisconnectListener(androidx.wear.watchface.client.HeadlessWatchFaceClient.ClientDisconnectListener listener, java.util.concurrent.Executor executor);
     method public default static androidx.wear.watchface.client.HeadlessWatchFaceClient createFromBundle(android.os.Bundle bundle);
diff --git a/wear/watchface/watchface-complications-data/api/current.ignore b/wear/watchface/watchface-complications-data/api/current.ignore
new file mode 100644
index 0000000..123515f
--- /dev/null
+++ b/wear/watchface/watchface-complications-data/api/current.ignore
@@ -0,0 +1,13 @@
+// Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.data.DataKt:
+    Removed class androidx.wear.watchface.complications.data.DataKt
+RemovedClass: androidx.wear.watchface.complications.data.ImageKt:
+    Removed class androidx.wear.watchface.complications.data.ImageKt
+RemovedClass: androidx.wear.watchface.complications.data.TextKt:
+    Removed class androidx.wear.watchface.complications.data.TextKt
+RemovedClass: androidx.wear.watchface.complications.data.TypeKt:
+    Removed class androidx.wear.watchface.complications.data.TypeKt
+
+
+RemovedPackage: androidx.wear.watchface.utility:
+    Removed package androidx.wear.watchface.utility
diff --git a/wear/watchface/watchface-complications-data/api/current.txt b/wear/watchface/watchface-complications-data/api/current.txt
index d3d5f95..4a04d64 100644
--- a/wear/watchface/watchface-complications-data/api/current.txt
+++ b/wear/watchface/watchface-complications-data/api/current.txt
@@ -83,9 +83,6 @@
     property public final java.time.Instant instant;
   }
 
-  public final class DataKt {
-  }
-
   public final class EmptyComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     ctor public EmptyComplicationData();
     field public static final androidx.wear.watchface.complications.data.ComplicationType TYPE;
@@ -127,9 +124,6 @@
     method public androidx.wear.watchface.complications.data.GoalProgressComplicationData.Builder setValidTimeRange(androidx.wear.watchface.complications.data.TimeRange? validTimeRange);
   }
 
-  public final class ImageKt {
-  }
-
   public final class LongTextComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public androidx.wear.watchface.complications.data.MonochromaticImage? getMonochromaticImage();
@@ -372,9 +366,6 @@
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
 
-  public final class TextKt {
-  }
-
   public final class TimeDifferenceComplicationText implements androidx.wear.watchface.complications.data.ComplicationText {
     method public java.util.concurrent.TimeUnit? getMinimumTimeUnit();
     method public java.time.Instant getNextChangeTime(java.time.Instant afterInstant);
@@ -444,9 +435,6 @@
     method public androidx.wear.watchface.complications.data.TimeRange between(java.time.Instant startInstant, java.time.Instant endInstant);
   }
 
-  public final class TypeKt {
-  }
-
   @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public final class WeightedElementsComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public int getElementBackgroundColor();
@@ -497,10 +485,3 @@
 
 }
 
-package androidx.wear.watchface.utility {
-
-  public final class TraceEventKt {
-  }
-
-}
-
diff --git a/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt b/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt
index 0ffb4b9..ec88ca3 100644
--- a/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-complications-data/api/public_plus_experimental_current.txt
@@ -86,9 +86,6 @@
     property public final java.time.Instant instant;
   }
 
-  public final class DataKt {
-  }
-
   public final class EmptyComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     ctor public EmptyComplicationData();
     field public static final androidx.wear.watchface.complications.data.ComplicationType TYPE;
@@ -130,9 +127,6 @@
     method public androidx.wear.watchface.complications.data.GoalProgressComplicationData.Builder setValidTimeRange(androidx.wear.watchface.complications.data.TimeRange? validTimeRange);
   }
 
-  public final class ImageKt {
-  }
-
   public final class LongTextComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public androidx.wear.watchface.complications.data.MonochromaticImage? getMonochromaticImage();
@@ -375,9 +369,6 @@
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
 
-  public final class TextKt {
-  }
-
   public final class TimeDifferenceComplicationText implements androidx.wear.watchface.complications.data.ComplicationText {
     method public java.util.concurrent.TimeUnit? getMinimumTimeUnit();
     method public java.time.Instant getNextChangeTime(java.time.Instant afterInstant);
@@ -447,9 +438,6 @@
     method public androidx.wear.watchface.complications.data.TimeRange between(java.time.Instant startInstant, java.time.Instant endInstant);
   }
 
-  public final class TypeKt {
-  }
-
   @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public final class WeightedElementsComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public int getElementBackgroundColor();
@@ -500,10 +488,3 @@
 
 }
 
-package androidx.wear.watchface.utility {
-
-  public final class TraceEventKt {
-  }
-
-}
-
diff --git a/wear/watchface/watchface-complications-data/api/restricted_current.ignore b/wear/watchface/watchface-complications-data/api/restricted_current.ignore
index 6d9ba01..d3ed8b1 100644
--- a/wear/watchface/watchface-complications-data/api/restricted_current.ignore
+++ b/wear/watchface/watchface-complications-data/api/restricted_current.ignore
@@ -1,3 +1,15 @@
 // Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.data.DataKt:
+    Removed class androidx.wear.watchface.complications.data.DataKt
 RemovedClass: androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat:
     Removed class androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat
+RemovedClass: androidx.wear.watchface.complications.data.ImageKt:
+    Removed class androidx.wear.watchface.complications.data.ImageKt
+RemovedClass: androidx.wear.watchface.complications.data.TextKt:
+    Removed class androidx.wear.watchface.complications.data.TextKt
+RemovedClass: androidx.wear.watchface.complications.data.TypeKt:
+    Removed class androidx.wear.watchface.complications.data.TypeKt
+
+
+RemovedPackage: androidx.wear.watchface.utility:
+    Removed package androidx.wear.watchface.utility
diff --git a/wear/watchface/watchface-complications-data/api/restricted_current.txt b/wear/watchface/watchface-complications-data/api/restricted_current.txt
index 1b752c6..dccc614 100644
--- a/wear/watchface/watchface-complications-data/api/restricted_current.txt
+++ b/wear/watchface/watchface-complications-data/api/restricted_current.txt
@@ -83,9 +83,6 @@
     property public final java.time.Instant instant;
   }
 
-  public final class DataKt {
-  }
-
   public final class EmptyComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     ctor public EmptyComplicationData();
     field public static final androidx.wear.watchface.complications.data.ComplicationType TYPE;
@@ -127,9 +124,6 @@
     method public androidx.wear.watchface.complications.data.GoalProgressComplicationData.Builder setValidTimeRange(androidx.wear.watchface.complications.data.TimeRange? validTimeRange);
   }
 
-  public final class ImageKt {
-  }
-
   public final class LongTextComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public androidx.wear.watchface.complications.data.MonochromaticImage? getMonochromaticImage();
@@ -373,9 +367,6 @@
     enum_constant public static final androidx.wear.watchface.complications.data.SmallImageType PHOTO;
   }
 
-  public final class TextKt {
-  }
-
   public final class TimeDifferenceComplicationText implements androidx.wear.watchface.complications.data.ComplicationText {
     method public java.util.concurrent.TimeUnit? getMinimumTimeUnit();
     method public java.time.Instant getNextChangeTime(java.time.Instant afterInstant);
@@ -447,9 +438,6 @@
     method public androidx.wear.watchface.complications.data.TimeRange between(java.time.Instant startInstant, java.time.Instant endInstant);
   }
 
-  public final class TypeKt {
-  }
-
   @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public final class WeightedElementsComplicationData extends androidx.wear.watchface.complications.data.ComplicationData {
     method public androidx.wear.watchface.complications.data.ComplicationText? getContentDescription();
     method public int getElementBackgroundColor();
@@ -500,10 +488,3 @@
 
 }
 
-package androidx.wear.watchface.utility {
-
-  public final class TraceEventKt {
-  }
-
-}
-
diff --git a/wear/watchface/watchface-complications/api/current.ignore b/wear/watchface/watchface-complications/api/current.ignore
new file mode 100644
index 0000000..5d6e1bd
--- /dev/null
+++ b/wear/watchface/watchface-complications/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt:
+    Removed class androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt
diff --git a/wear/watchface/watchface-complications/api/current.txt b/wear/watchface/watchface-complications/api/current.txt
index ad56e5f..53d23f2 100644
--- a/wear/watchface/watchface-complications/api/current.txt
+++ b/wear/watchface/watchface-complications/api/current.txt
@@ -35,9 +35,6 @@
     ctor public ComplicationDataSourceInfoRetriever.ServiceDisconnectedException();
   }
 
-  public final class ComplicationDataSourceInfoRetrieverKt {
-  }
-
   public final class ComplicationSlotBounds {
     ctor public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds, java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeMargins);
     ctor @Deprecated public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds);
diff --git a/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt b/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt
index ad56e5f..53d23f2 100644
--- a/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-complications/api/public_plus_experimental_current.txt
@@ -35,9 +35,6 @@
     ctor public ComplicationDataSourceInfoRetriever.ServiceDisconnectedException();
   }
 
-  public final class ComplicationDataSourceInfoRetrieverKt {
-  }
-
   public final class ComplicationSlotBounds {
     ctor public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds, java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeMargins);
     ctor @Deprecated public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds);
diff --git a/wear/watchface/watchface-complications/api/restricted_current.ignore b/wear/watchface/watchface-complications/api/restricted_current.ignore
index 447539a..b776ca1 100644
--- a/wear/watchface/watchface-complications/api/restricted_current.ignore
+++ b/wear/watchface/watchface-complications/api/restricted_current.ignore
@@ -1,4 +1,8 @@
 // Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt:
+    Removed class androidx.wear.watchface.complications.ComplicationDataSourceInfoRetrieverKt
+
+
 RemovedMethod: androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy#DefaultComplicationDataSourcePolicy(androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat):
     Removed constructor androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy(androidx.wear.watchface.complications.data.DefaultComplicationDataSourcePolicyWireFormat)
 RemovedMethod: androidx.wear.watchface.complications.DefaultComplicationDataSourcePolicy#toWireFormat():
diff --git a/wear/watchface/watchface-complications/api/restricted_current.txt b/wear/watchface/watchface-complications/api/restricted_current.txt
index ad56e5f..53d23f2 100644
--- a/wear/watchface/watchface-complications/api/restricted_current.txt
+++ b/wear/watchface/watchface-complications/api/restricted_current.txt
@@ -35,9 +35,6 @@
     ctor public ComplicationDataSourceInfoRetriever.ServiceDisconnectedException();
   }
 
-  public final class ComplicationDataSourceInfoRetrieverKt {
-  }
-
   public final class ComplicationSlotBounds {
     ctor public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds, java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeMargins);
     ctor @Deprecated public ComplicationSlotBounds(java.util.Map<androidx.wear.watchface.complications.data.ComplicationType,? extends android.graphics.RectF> perComplicationTypeBounds);
diff --git a/wear/watchface/watchface-style/api/current.ignore b/wear/watchface/watchface-style/api/current.ignore
new file mode 100644
index 0000000..ac33402
--- /dev/null
+++ b/wear/watchface/watchface-style/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.style.UserStyleSettingKt:
+    Removed class androidx.wear.watchface.style.UserStyleSettingKt
diff --git a/wear/watchface/watchface-style/api/current.txt b/wear/watchface/watchface-style/api/current.txt
index 5cecba6..53940f3 100644
--- a/wear/watchface/watchface-style/api/current.txt
+++ b/wear/watchface/watchface-style/api/current.txt
@@ -296,9 +296,6 @@
     property public final android.graphics.drawable.Icon? icon;
   }
 
-  public final class UserStyleSettingKt {
-  }
-
   public enum WatchFaceLayer {
     method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
diff --git a/wear/watchface/watchface-style/api/public_plus_experimental_current.txt b/wear/watchface/watchface-style/api/public_plus_experimental_current.txt
index 5cecba6..53940f3 100644
--- a/wear/watchface/watchface-style/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface-style/api/public_plus_experimental_current.txt
@@ -296,9 +296,6 @@
     property public final android.graphics.drawable.Icon? icon;
   }
 
-  public final class UserStyleSettingKt {
-  }
-
   public enum WatchFaceLayer {
     method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
diff --git a/wear/watchface/watchface-style/api/restricted_current.ignore b/wear/watchface/watchface-style/api/restricted_current.ignore
index 1c52092..76438c7 100644
--- a/wear/watchface/watchface-style/api/restricted_current.ignore
+++ b/wear/watchface/watchface-style/api/restricted_current.ignore
@@ -1,4 +1,8 @@
 // Baseline format: 1.0
+RemovedClass: androidx.wear.watchface.style.UserStyleSettingKt:
+    Removed class androidx.wear.watchface.style.UserStyleSettingKt
+
+
 RemovedMethod: androidx.wear.watchface.style.UserStyle#toWireFormat():
     Removed method androidx.wear.watchface.style.UserStyle.toWireFormat()
 RemovedMethod: androidx.wear.watchface.style.UserStyleData#UserStyleData(androidx.wear.watchface.style.data.UserStyleWireFormat):
@@ -43,9 +47,3 @@
     Removed method androidx.wear.watchface.style.UserStyleSetting.Option.toWireFormat()
 RemovedMethod: androidx.wear.watchface.style.UserStyleSetting.Option.Companion#createFromWireFormat(androidx.wear.watchface.style.data.OptionWireFormat):
     Removed method androidx.wear.watchface.style.UserStyleSetting.Option.Companion.createFromWireFormat(androidx.wear.watchface.style.data.OptionWireFormat)
-RemovedMethod: androidx.wear.watchface.style.UserStyleSettingKt#getIntRefAttribute(android.content.res.Resources, android.content.res.XmlResourceParser, String):
-    Removed method androidx.wear.watchface.style.UserStyleSettingKt.getIntRefAttribute(android.content.res.Resources,android.content.res.XmlResourceParser,String)
-RemovedMethod: androidx.wear.watchface.style.UserStyleSettingKt#getStringRefAttribute(android.content.res.Resources, android.content.res.XmlResourceParser, String):
-    Removed method androidx.wear.watchface.style.UserStyleSettingKt.getStringRefAttribute(android.content.res.Resources,android.content.res.XmlResourceParser,String)
-RemovedMethod: androidx.wear.watchface.style.UserStyleSettingKt#moveToStart(org.xmlpull.v1.XmlPullParser, String):
-    Removed method androidx.wear.watchface.style.UserStyleSettingKt.moveToStart(org.xmlpull.v1.XmlPullParser,String)
diff --git a/wear/watchface/watchface-style/api/restricted_current.txt b/wear/watchface/watchface-style/api/restricted_current.txt
index 5cecba6..53940f3 100644
--- a/wear/watchface/watchface-style/api/restricted_current.txt
+++ b/wear/watchface/watchface-style/api/restricted_current.txt
@@ -296,9 +296,6 @@
     property public final android.graphics.drawable.Icon? icon;
   }
 
-  public final class UserStyleSettingKt {
-  }
-
   public enum WatchFaceLayer {
     method public static androidx.wear.watchface.style.WatchFaceLayer valueOf(String name) throws java.lang.IllegalArgumentException;
     method public static androidx.wear.watchface.style.WatchFaceLayer[] values();
diff --git a/wear/watchface/watchface/api/current.ignore b/wear/watchface/watchface/api/current.ignore
index ec425b1..08cfb6e 100644
--- a/wear/watchface/watchface/api/current.ignore
+++ b/wear/watchface/watchface/api/current.ignore
@@ -7,3 +7,5 @@
     Removed class androidx.wear.watchface.RendererKt
 RemovedClass: androidx.wear.watchface.WatchFaceKt:
     Removed class androidx.wear.watchface.WatchFaceKt
+RemovedClass: androidx.wear.watchface.WatchFaceServiceKt:
+    Removed class androidx.wear.watchface.WatchFaceServiceKt
diff --git a/wear/watchface/watchface/api/current.txt b/wear/watchface/watchface/api/current.txt
index 9aec1ab..6b8eb15 100644
--- a/wear/watchface/watchface/api/current.txt
+++ b/wear/watchface/watchface/api/current.txt
@@ -341,9 +341,6 @@
     method @UiThread public void onTapEvent(int tapType, androidx.wear.watchface.TapEvent tapEvent, androidx.wear.watchface.ComplicationSlot? complicationSlot);
   }
 
-  public final class WatchFaceColorsKt {
-  }
-
   public abstract class WatchFaceService extends android.service.wallpaper.WallpaperService {
     ctor public WatchFaceService();
     method @WorkerThread protected androidx.wear.watchface.ComplicationSlotsManager createComplicationSlotsManager(androidx.wear.watchface.style.CurrentUserStyleRepository currentUserStyleRepository);
@@ -362,9 +359,6 @@
   public static final class WatchFaceService.Companion {
   }
 
-  public final class WatchFaceServiceKt {
-  }
-
   public final class WatchState {
     ctor public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, @Px int chinHeight, boolean isHeadless, kotlinx.coroutines.flow.StateFlow<java.lang.String> watchFaceInstanceId);
     ctor @Deprecated public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, int chinHeight, boolean isHeadless);
diff --git a/wear/watchface/watchface/api/public_plus_experimental_current.txt b/wear/watchface/watchface/api/public_plus_experimental_current.txt
index f654e9c..2e7a478 100644
--- a/wear/watchface/watchface/api/public_plus_experimental_current.txt
+++ b/wear/watchface/watchface/api/public_plus_experimental_current.txt
@@ -370,9 +370,6 @@
     property public final android.graphics.Color tertiaryColor;
   }
 
-  public final class WatchFaceColorsKt {
-  }
-
   @kotlin.RequiresOptIn(message="This is an experimental API that may change or be removed without warning.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface WatchFaceExperimental {
   }
 
@@ -394,9 +391,6 @@
   public static final class WatchFaceService.Companion {
   }
 
-  public final class WatchFaceServiceKt {
-  }
-
   public final class WatchState {
     ctor public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, @Px int chinHeight, boolean isHeadless, kotlinx.coroutines.flow.StateFlow<java.lang.String> watchFaceInstanceId);
     ctor @Deprecated public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, int chinHeight, boolean isHeadless);
diff --git a/wear/watchface/watchface/api/restricted_current.ignore b/wear/watchface/watchface/api/restricted_current.ignore
index 148f834..6abfc87 100644
--- a/wear/watchface/watchface/api/restricted_current.ignore
+++ b/wear/watchface/watchface/api/restricted_current.ignore
@@ -7,6 +7,8 @@
     Removed class androidx.wear.watchface.RendererKt
 RemovedClass: androidx.wear.watchface.WatchFaceKt:
     Removed class androidx.wear.watchface.WatchFaceKt
+RemovedClass: androidx.wear.watchface.WatchFaceServiceKt:
+    Removed class androidx.wear.watchface.WatchFaceServiceKt
 
 
 RemovedMethod: androidx.wear.watchface.RenderParameters#RenderParameters(androidx.wear.watchface.data.RenderParametersWireFormat):
diff --git a/wear/watchface/watchface/api/restricted_current.txt b/wear/watchface/watchface/api/restricted_current.txt
index 9aec1ab..6b8eb15 100644
--- a/wear/watchface/watchface/api/restricted_current.txt
+++ b/wear/watchface/watchface/api/restricted_current.txt
@@ -341,9 +341,6 @@
     method @UiThread public void onTapEvent(int tapType, androidx.wear.watchface.TapEvent tapEvent, androidx.wear.watchface.ComplicationSlot? complicationSlot);
   }
 
-  public final class WatchFaceColorsKt {
-  }
-
   public abstract class WatchFaceService extends android.service.wallpaper.WallpaperService {
     ctor public WatchFaceService();
     method @WorkerThread protected androidx.wear.watchface.ComplicationSlotsManager createComplicationSlotsManager(androidx.wear.watchface.style.CurrentUserStyleRepository currentUserStyleRepository);
@@ -362,9 +359,6 @@
   public static final class WatchFaceService.Companion {
   }
 
-  public final class WatchFaceServiceKt {
-  }
-
   public final class WatchState {
     ctor public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, @Px int chinHeight, boolean isHeadless, kotlinx.coroutines.flow.StateFlow<java.lang.String> watchFaceInstanceId);
     ctor @Deprecated public WatchState(kotlinx.coroutines.flow.StateFlow<java.lang.Integer> interruptionFilter, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isAmbient, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isBatteryLowAndNotCharging, kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> isVisible, boolean hasLowBitAmbient, boolean hasBurnInProtection, long analogPreviewReferenceTimeMillis, long digitalPreviewReferenceTimeMillis, int chinHeight, boolean isHeadless);
diff --git a/work/work-runtime-ktx/api/current.ignore b/work/work-runtime-ktx/api/current.ignore
new file mode 100644
index 0000000..8aff62a
--- /dev/null
+++ b/work/work-runtime-ktx/api/current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.work.ListenableFutureKt:
+    Removed class androidx.work.ListenableFutureKt
diff --git a/work/work-runtime-ktx/api/current.txt b/work/work-runtime-ktx/api/current.txt
index efdea4c..c3c6e5c 100644
--- a/work/work-runtime-ktx/api/current.txt
+++ b/work/work-runtime-ktx/api/current.txt
@@ -19,9 +19,6 @@
     method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
   }
 
-  public final class ListenableFutureKt {
-  }
-
   public final class OperationKt {
     method public static suspend inline Object? await(androidx.work.Operation, kotlin.coroutines.Continuation<? super androidx.work.Operation.State.SUCCESS>);
   }
diff --git a/work/work-runtime-ktx/api/public_plus_experimental_current.txt b/work/work-runtime-ktx/api/public_plus_experimental_current.txt
index efdea4c..c3c6e5c 100644
--- a/work/work-runtime-ktx/api/public_plus_experimental_current.txt
+++ b/work/work-runtime-ktx/api/public_plus_experimental_current.txt
@@ -19,9 +19,6 @@
     method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
   }
 
-  public final class ListenableFutureKt {
-  }
-
   public final class OperationKt {
     method public static suspend inline Object? await(androidx.work.Operation, kotlin.coroutines.Continuation<? super androidx.work.Operation.State.SUCCESS>);
   }
diff --git a/work/work-runtime-ktx/api/restricted_current.ignore b/work/work-runtime-ktx/api/restricted_current.ignore
new file mode 100644
index 0000000..8aff62a
--- /dev/null
+++ b/work/work-runtime-ktx/api/restricted_current.ignore
@@ -0,0 +1,3 @@
+// Baseline format: 1.0
+RemovedClass: androidx.work.ListenableFutureKt:
+    Removed class androidx.work.ListenableFutureKt
diff --git a/work/work-runtime-ktx/api/restricted_current.txt b/work/work-runtime-ktx/api/restricted_current.txt
index efdea4c..c3c6e5c 100644
--- a/work/work-runtime-ktx/api/restricted_current.txt
+++ b/work/work-runtime-ktx/api/restricted_current.txt
@@ -19,9 +19,6 @@
     method public static inline androidx.work.Data workDataOf(kotlin.Pair<java.lang.String,?>... pairs);
   }
 
-  public final class ListenableFutureKt {
-  }
-
   public final class OperationKt {
     method public static suspend inline Object? await(androidx.work.Operation, kotlin.coroutines.Continuation<? super androidx.work.Operation.State.SUCCESS>);
   }