Merge "Migrate compose library to always use commonStubsMain for no-op actuals" into androidx-main
diff --git a/activity/activity-compose/src/main/java/androidx/activity/compose/PredictiveBackHandler.kt b/activity/activity-compose/src/main/java/androidx/activity/compose/PredictiveBackHandler.kt
index f234305..1000765 100644
--- a/activity/activity-compose/src/main/java/androidx/activity/compose/PredictiveBackHandler.kt
+++ b/activity/activity-compose/src/main/java/androidx/activity/compose/PredictiveBackHandler.kt
@@ -120,7 +120,6 @@
                 super.handleOnBackCancelled()
                 // cancel will purge the channel of any sent events that are yet to be received
                 onBackInstance?.cancel()
-                onBackInstance = null
                 onBackInstance?.isPredictiveBack = false
             }
         }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
index 464914e..c91b733 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
@@ -293,7 +293,7 @@
         task: AbstractTestTask,
         anchorTask: Task,
     ) {
-        if (task.name !in listOf("linuxx64StubsTest", "jvmStubsTest")) anchorTask.dependsOn(task)
+        if (task.name !in listOf("jvmStubsTest")) anchorTask.dependsOn(task)
         val ignoreFailuresProperty =
             project.providers.gradleProperty(TEST_FAILURES_DO_NOT_FAIL_TEST_TASK)
         val ignoreFailures = ignoreFailuresProperty.isPresent
@@ -670,6 +670,9 @@
         }
         project.setUpCheckDocsTask(androidXExtension)
         project.writeBlankPublicTxtToAar(kotlinMultiplatformAndroidComponentsExtension)
+        kotlinMultiplatformAndroidComponentsExtension.onVariant {
+            project.validateKotlinModuleFiles(it.name, it.artifacts.get(SingleArtifact.AAR))
+        }
     }
 
     private fun Project.writeBlankPublicTxtToAar(
@@ -841,6 +844,10 @@
             onVariants { variant ->
                 variant.configureTests()
                 variant.enableLongMethodTracingInMicrobenchmark(project)
+                project.validateKotlinModuleFiles(
+                    variant.name,
+                    variant.artifacts.get(SingleArtifact.AAR)
+                )
             }
         }
 
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/ValidateKotlinModuleFiles.kt b/buildSrc/private/src/main/kotlin/androidx/build/ValidateKotlinModuleFiles.kt
new file mode 100644
index 0000000..e9ece07
--- /dev/null
+++ b/buildSrc/private/src/main/kotlin/androidx/build/ValidateKotlinModuleFiles.kt
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.build
+
+import androidx.build.uptodatedness.cacheEvenIfNoOutputs
+import com.android.SdkConstants.DOT_KOTLIN_MODULE
+import com.android.utils.appendCapitalized
+import javax.inject.Inject
+import org.gradle.api.DefaultTask
+import org.gradle.api.GradleException
+import org.gradle.api.Project
+import org.gradle.api.file.ArchiveOperations
+import org.gradle.api.file.RegularFile
+import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.Provider
+import org.gradle.api.tasks.CacheableTask
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.Internal
+import org.gradle.api.tasks.PathSensitive
+import org.gradle.api.tasks.PathSensitivity
+import org.gradle.api.tasks.TaskAction
+import org.jetbrains.kotlin.gradle.plugin.KotlinBasePluginWrapper
+import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
+
+internal fun Project.validateKotlinModuleFiles(variantName: String, aar: Provider<RegularFile>) {
+    if (
+        !project.plugins.hasPlugin(KotlinBasePluginWrapper::class.java) &&
+            !project.plugins.hasPlugin(KotlinMultiplatformPluginWrapper::class.java)
+    ) {
+        return
+    }
+    val validateKotlinModuleFiles =
+        tasks.register(
+            "validateKotlinModuleFilesFor".appendCapitalized(variantName),
+            ValidateModuleFilesTask::class.java
+        ) {
+            it.aar.set(aar)
+            it.cacheEvenIfNoOutputs()
+        }
+    project.addToBuildOnServer(validateKotlinModuleFiles)
+}
+
+@CacheableTask
+abstract class ValidateModuleFilesTask() : DefaultTask() {
+
+    @get:Inject abstract val archiveOperations: ArchiveOperations
+
+    @get:PathSensitive(PathSensitivity.NONE) @get:InputFile abstract val aar: RegularFileProperty
+
+    @get:Internal
+    val fileName: String
+        get() = aar.get().asFile.name
+
+    @TaskAction
+    fun execute() {
+        val fileTree = archiveOperations.zipTree(aar)
+        val classesJar =
+            fileTree.find { it.name == "classes.jar" }
+                ?: throw GradleException("Could not classes.jar in $fileName")
+        val jarContents = archiveOperations.zipTree(classesJar)
+        if (jarContents.files.size <= 1) {
+            // only version file, stub project with no sources.
+            return
+        }
+        jarContents.find { it.name.endsWith(DOT_KOTLIN_MODULE) }
+            ?: throw GradleException("Could not find .kotlin_module file in $fileName")
+    }
+}
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
index d326de5..d2b1913 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
@@ -963,6 +963,23 @@
         }
     }
 
+    @Test
+    fun canSetAudioSource() {
+        // Arrange.
+        val recorder = createRecorder(audioSource = MediaRecorder.AudioSource.VOICE_RECOGNITION)
+
+        // Assert.
+        assertThat(recorder.audioSource).isEqualTo(MediaRecorder.AudioSource.VOICE_RECOGNITION)
+
+        // Act: ensure the value is correctly propagated to the internal AudioSource instance.
+        // Start recording to create the AudioSource instance.
+        recordingSession.createRecording(recorder = recorder).startAndVerify(statusCount = 1)
+
+        // Assert.
+        assertThat(recorder.mAudioSource.mAudioSource)
+            .isEqualTo(MediaRecorder.AudioSource.VOICE_RECOGNITION)
+    }
+
     private fun testRecorderIsConfiguredBasedOnTargetVideoEncodingBitrate(targetBitrate: Int) {
         // Arrange.
         val recorder = createRecorder(targetBitrate = targetBitrate)
@@ -1000,6 +1017,7 @@
         targetBitrate: Int? = null,
         retrySetupVideoMaxCount: Int? = null,
         retrySetupVideoDelayMs: Long? = null,
+        audioSource: Int? = null,
     ): Recorder {
         val recorder =
             Recorder.Builder()
@@ -1009,7 +1027,8 @@
                     executor?.let { setExecutor(it) }
                     videoEncoderFactory?.let { setVideoEncoderFactory(it) }
                     audioEncoderFactory?.let { setAudioEncoderFactory(it) }
-                    targetBitrate?.let { setTargetVideoEncodingBitRate(targetBitrate) }
+                    targetBitrate?.let { setTargetVideoEncodingBitRate(it) }
+                    audioSource?.let { setAudioSource(it) }
                 }
                 .build()
                 .apply {
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
index 4d40ce9..6cb8513 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
@@ -66,6 +66,7 @@
 import androidx.camera.testing.impl.getRotation
 import androidx.camera.testing.impl.mocks.MockScreenFlash
 import androidx.camera.testing.impl.useAndRelease
+import androidx.camera.testing.impl.video.Recording
 import androidx.camera.testing.impl.video.RecordingSession
 import androidx.camera.video.VideoRecordEvent.Finalize.ERROR_SOURCE_INACTIVE
 import androidx.lifecycle.LifecycleOwner
@@ -403,13 +404,16 @@
         // Act: Ensure the Recorder is initialized before start test.
         recordingSession.createRecording().startAndVerify().stop()
 
-        instrumentation.runOnMainSync { lifecycleOwner.pauseAndStop() }
-        recordingSession.createRecording().apply {
-            start()
+        lateinit var recording: Recording
+        instrumentation.runOnMainSync {
+            lifecycleOwner.pauseAndStop()
 
-            // Verify.
-            verifyFinalize(error = ERROR_SOURCE_INACTIVE)
+            // TODO(b/353578694): call start() in main thread to workaround the race condition.
+            recording = recordingSession.createRecording().start()
         }
+
+        // Verify.
+        recording.verifyFinalize(error = ERROR_SOURCE_INACTIVE)
     }
 
     @Test
@@ -941,8 +945,7 @@
         )
 
         checkAndBindUseCases(preview, videoCapture)
-        val recording =
-            recordingSession.createRecording(asPersistentRecording = true).startAndVerify()
+        recordingSession.createRecording(asPersistentRecording = true).startAndVerify()
 
         // Act.
         instrumentation.runOnMainSync { lifecycleOwner.pauseAndStop() }
@@ -951,15 +954,6 @@
             false,
             "Lifecycle stopped but camera still in video usage"
         )
-
-        // Clean-up.
-        // TODO(b/353113961): To avoid audio codec leak, resume lifecycle then stop the recording.
-        instrumentation.runOnMainSync { lifecycleOwner.startAndResume() }
-        // Delay a bit by checking status to avoid crash as the stack in b/342977497.
-        recording.verifyStatus()
-        recording.stopAndVerify()
-
-        Unit
     }
 
     // TODO: b/341691683 - Add tests for multiple VideoCapture bound and recording concurrently
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/Recorder.java b/camera/camera-video/src/main/java/androidx/camera/video/Recorder.java
index aee88cb..1250761 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/Recorder.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/Recorder.java
@@ -701,8 +701,9 @@
      * create this recorder, or the default value of {@link AudioSpec#SOURCE_AUTO} if no source was
      * set.
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @AudioSpec.Source
-    int getAudioSource() {
+    public int getAudioSource() {
         return getObservableData(mMediaSpec).getAudioSpec().getSource();
     }
 
@@ -3553,8 +3554,9 @@
          *               {@link AudioSpec#SOURCE_CAMCORDER}. Default is
          *               {@link AudioSpec#SOURCE_AUTO}.
          */
+        @RestrictTo(RestrictTo.Scope.LIBRARY)
         @NonNull
-        Builder setAudioSource(@AudioSpec.Source int source) {
+        public Builder setAudioSource(@AudioSpec.Source int source) {
             mMediaSpecBuilder.configureAudio(builder -> builder.setSource(source));
             return this;
         }
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/audio/AudioSource.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/audio/AudioSource.java
index 70e0f58..38cda9f 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/audio/AudioSource.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/audio/AudioSource.java
@@ -144,6 +144,8 @@
             double mAudioAmplitude;
     long mAmplitudeTimestamp = 0;
     private final int mAudioFormat;
+    @VisibleForTesting
+    public final int mAudioSource;
 
     /**
      * Creates an AudioSource for the given settings.
@@ -192,6 +194,7 @@
         mAudioStream.setCallback(new AudioStreamCallback(), mExecutor);
         mSilentAudioStream = new SilentAudioStream(settings);
         mAudioFormat = settings.getAudioFormat();
+        mAudioSource = settings.getAudioSource();
     }
 
     @SuppressWarnings("WeakerAccess") /* synthetic accessor */
diff --git a/car/app/app-testing/api/1.7.0-beta01.txt b/car/app/app-testing/api/1.7.0-beta01.txt
index 57cf025..b478e9b 100644
--- a/car/app/app-testing/api/1.7.0-beta01.txt
+++ b/car/app/app-testing/api/1.7.0-beta01.txt
@@ -42,6 +42,12 @@
     method public java.util.List<java.lang.String!> getPermissionsRequested();
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public final class TestDelegateInvoker {
+    method public <T> java.util.List<T> requestAllItemsForTest(androidx.car.app.serialization.ListDelegate<? extends T>);
+    method public <T> java.util.List<T> requestItemRangeForTest(androidx.car.app.serialization.ListDelegate<? extends T>, int startIndex, int endIndex);
+    field public static final androidx.car.app.testing.TestDelegateInvoker INSTANCE;
+  }
+
   public class TestScreenManager extends androidx.car.app.ScreenManager {
     method public java.util.List<androidx.car.app.Screen!> getScreensPushed();
     method public java.util.List<androidx.car.app.Screen!> getScreensRemoved();
diff --git a/car/app/app-testing/api/current.txt b/car/app/app-testing/api/current.txt
index 57cf025..b478e9b 100644
--- a/car/app/app-testing/api/current.txt
+++ b/car/app/app-testing/api/current.txt
@@ -42,6 +42,12 @@
     method public java.util.List<java.lang.String!> getPermissionsRequested();
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public final class TestDelegateInvoker {
+    method public <T> java.util.List<T> requestAllItemsForTest(androidx.car.app.serialization.ListDelegate<? extends T>);
+    method public <T> java.util.List<T> requestItemRangeForTest(androidx.car.app.serialization.ListDelegate<? extends T>, int startIndex, int endIndex);
+    field public static final androidx.car.app.testing.TestDelegateInvoker INSTANCE;
+  }
+
   public class TestScreenManager extends androidx.car.app.ScreenManager {
     method public java.util.List<androidx.car.app.Screen!> getScreensPushed();
     method public java.util.List<androidx.car.app.Screen!> getScreensRemoved();
diff --git a/car/app/app-testing/api/restricted_1.7.0-beta01.txt b/car/app/app-testing/api/restricted_1.7.0-beta01.txt
index 57cf025..b478e9b 100644
--- a/car/app/app-testing/api/restricted_1.7.0-beta01.txt
+++ b/car/app/app-testing/api/restricted_1.7.0-beta01.txt
@@ -42,6 +42,12 @@
     method public java.util.List<java.lang.String!> getPermissionsRequested();
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public final class TestDelegateInvoker {
+    method public <T> java.util.List<T> requestAllItemsForTest(androidx.car.app.serialization.ListDelegate<? extends T>);
+    method public <T> java.util.List<T> requestItemRangeForTest(androidx.car.app.serialization.ListDelegate<? extends T>, int startIndex, int endIndex);
+    field public static final androidx.car.app.testing.TestDelegateInvoker INSTANCE;
+  }
+
   public class TestScreenManager extends androidx.car.app.ScreenManager {
     method public java.util.List<androidx.car.app.Screen!> getScreensPushed();
     method public java.util.List<androidx.car.app.Screen!> getScreensRemoved();
diff --git a/car/app/app-testing/api/restricted_current.txt b/car/app/app-testing/api/restricted_current.txt
index 57cf025..b478e9b 100644
--- a/car/app/app-testing/api/restricted_current.txt
+++ b/car/app/app-testing/api/restricted_current.txt
@@ -42,6 +42,12 @@
     method public java.util.List<java.lang.String!> getPermissionsRequested();
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public final class TestDelegateInvoker {
+    method public <T> java.util.List<T> requestAllItemsForTest(androidx.car.app.serialization.ListDelegate<? extends T>);
+    method public <T> java.util.List<T> requestItemRangeForTest(androidx.car.app.serialization.ListDelegate<? extends T>, int startIndex, int endIndex);
+    field public static final androidx.car.app.testing.TestDelegateInvoker INSTANCE;
+  }
+
   public class TestScreenManager extends androidx.car.app.ScreenManager {
     method public java.util.List<androidx.car.app.Screen!> getScreensPushed();
     method public java.util.List<androidx.car.app.Screen!> getScreensRemoved();
diff --git a/car/app/app-testing/build.gradle b/car/app/app-testing/build.gradle
index 9220169..5ec3aa7 100644
--- a/car/app/app-testing/build.gradle
+++ b/car/app/app-testing/build.gradle
@@ -26,15 +26,19 @@
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
+    id("org.jetbrains.kotlin.android")
 }
 
 dependencies {
     api(project(":car:app:app"))
+
     implementation "androidx.lifecycle:lifecycle-runtime:2.2.0"
     implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
     implementation 'androidx.annotation:annotation:1.1.0'
     implementation(libs.robolectric)
     implementation("androidx.annotation:annotation-experimental:1.4.1")
+    api(libs.kotlinStdlib)
+    implementation(libs.kotlinStdlibCommon)
 
     testImplementation(project(":car:app:app-projected"))
     testImplementation(libs.junit)
diff --git a/car/app/app-testing/src/main/java/androidx/car/app/testing/TestDelegateInvoker.kt b/car/app/app-testing/src/main/java/androidx/car/app/testing/TestDelegateInvoker.kt
new file mode 100644
index 0000000..44660ce
--- /dev/null
+++ b/car/app/app-testing/src/main/java/androidx/car/app/testing/TestDelegateInvoker.kt
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Copyright (C) 2024 Google Inc.
+ *
+ * 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.car.app.testing
+
+import android.annotation.SuppressLint
+import androidx.car.app.OnDoneCallback
+import androidx.car.app.annotations.ExperimentalCarApi
+import androidx.car.app.serialization.Bundleable
+import androidx.car.app.serialization.ListDelegate
+
+/** Provides a simplified interface for invoking AIDL/delegate APIs in tests */
+@SuppressLint("NullAnnotationGroup")
+@ExperimentalCarApi
+public object TestDelegateInvoker {
+    public fun <T> ListDelegate<T>.requestAllItemsForTest(): List<T> =
+        requestItemRangeForTest(0, size - 1)
+
+    public fun <T> ListDelegate<T>.requestItemRangeForTest(
+        startIndex: Int,
+        endIndex: Int
+    ): List<T> = runForResult {
+        [email protected](startIndex, endIndex, it)
+    }
+
+    private fun <T> runForResult(f: (OnDoneCallback) -> Unit): T {
+        val callback = ResponseCapturingOnDoneCallback<T>()
+        f(callback)
+
+        // Generally, tests run in a single process.
+        // Therefore, Host/Client AIDL logic runs synchronously.
+        // Therefore, we assume the callback was fulfilled, without waiting.
+        return callback.getResponseOrCrash()
+    }
+
+    /**
+     * [OnDoneCallback] implementation for testing
+     *
+     * This class captures and stores the [Bundleable] response (if any), and unmarshalls it to the
+     * specified type.
+     */
+    private class ResponseCapturingOnDoneCallback<TResponse> : OnDoneCallback {
+        // "null" is a valid response
+        private var hasResponse = false
+        private var response: Bundleable? = null
+
+        override fun onSuccess(response: Bundleable?) {
+            check(!hasResponse) {
+                "Callback was invoked multiple times. Please create a new callback for each API call."
+            }
+            hasResponse = true
+            this.response = response
+        }
+
+        override fun onFailure(response: Bundleable) {
+            error("OnDone callbacks should never fail in tests")
+        }
+
+        fun getResponseOrCrash(): TResponse {
+            check(hasResponse) { "Callback was never invoked." }
+
+            @Suppress("UNCHECKED_CAST") return response?.get() as TResponse
+        }
+    }
+}
diff --git a/car/app/app-testing/src/test/java/androidx/car/app/testing/TestDelegateInvokerTest.kt b/car/app/app-testing/src/test/java/androidx/car/app/testing/TestDelegateInvokerTest.kt
new file mode 100644
index 0000000..5e3374f
--- /dev/null
+++ b/car/app/app-testing/src/test/java/androidx/car/app/testing/TestDelegateInvokerTest.kt
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.car.app.testing
+
+import androidx.car.app.serialization.ListDelegateImpl
+import androidx.car.app.testing.TestDelegateInvoker.requestAllItemsForTest
+import androidx.car.app.testing.TestDelegateInvoker.requestItemRangeForTest
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.internal.DoNotInstrument
+
+/** Tests for {@link TestDelegateInvoker}. */
+@RunWith(RobolectricTestRunner::class)
+@DoNotInstrument
+class TestDelegateInvokerTest {
+    @Test
+    fun requestAllItemsForTest() {
+        val numbers = List(10) { it }
+        val listDelegate = ListDelegateImpl(numbers)
+
+        assertThat(listDelegate.requestAllItemsForTest()).containsExactlyElementsIn(numbers)
+    }
+
+    @Test
+    fun requestItemRangeForTest() {
+        val numbers = List(10) { it }
+        val listDelegate = ListDelegateImpl(numbers)
+
+        assertThat(listDelegate.requestItemRangeForTest(3, 5))
+            .containsExactlyElementsIn(numbers.subList(3, 6)) // indices 3, 4, 5
+    }
+}
diff --git a/car/app/app/api/1.7.0-beta01.txt b/car/app/app/api/1.7.0-beta01.txt
index 958295c..3b4c1e5 100644
--- a/car/app/app/api/1.7.0-beta01.txt
+++ b/car/app/app/api/1.7.0-beta01.txt
@@ -1350,7 +1350,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class GridSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.GridItem!,androidx.car.app.model.GridSection.Builder!> {
     ctor public GridSection.Builder();
-    ctor public GridSection.Builder(androidx.car.app.model.GridSection);
     method public androidx.car.app.model.GridSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemImageShape(int);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemSize(int);
@@ -1694,7 +1693,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class RowSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.Row!,androidx.car.app.model.RowSection.Builder!> {
     ctor public RowSection.Builder();
-    ctor public RowSection.Builder(androidx.car.app.model.RowSection);
     method public androidx.car.app.model.RowSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder clearSelectionGroup();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder setAsSelectionGroup(int);
@@ -1736,14 +1734,13 @@
   @SuppressCompatibility @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi public abstract class Section<T extends androidx.car.app.model.Item> {
     ctor protected Section();
     ctor protected Section(androidx.car.app.model.Section.BaseBuilder<T!,? extends java.lang.Object!>);
-    method public java.util.List<T!> getItems();
+    method public androidx.car.app.serialization.ListDelegate<T!> getItemsDelegate();
     method public androidx.car.app.model.CarText? getNoItemsMessage();
     method public androidx.car.app.model.CarText? getTitle();
   }
 
   protected abstract static class Section.BaseBuilder<T extends androidx.car.app.model.Item, B> {
     ctor protected Section.BaseBuilder();
-    ctor protected Section.BaseBuilder(androidx.car.app.model.Section<T!>);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B addItem(T);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B clearItems();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B setItems(java.util.List<T!>);
@@ -2384,6 +2381,12 @@
     ctor public BundlerException(String?, Throwable);
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public interface ListDelegate<T> {
+    method public int getSize();
+    method public void requestItemRange(int startIndex, int endIndex, androidx.car.app.OnDoneCallback callback);
+    property public abstract int size;
+  }
+
 }
 
 package androidx.car.app.suggestion {
diff --git a/car/app/app/api/current.txt b/car/app/app/api/current.txt
index 958295c..3b4c1e5 100644
--- a/car/app/app/api/current.txt
+++ b/car/app/app/api/current.txt
@@ -1350,7 +1350,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class GridSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.GridItem!,androidx.car.app.model.GridSection.Builder!> {
     ctor public GridSection.Builder();
-    ctor public GridSection.Builder(androidx.car.app.model.GridSection);
     method public androidx.car.app.model.GridSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemImageShape(int);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemSize(int);
@@ -1694,7 +1693,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class RowSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.Row!,androidx.car.app.model.RowSection.Builder!> {
     ctor public RowSection.Builder();
-    ctor public RowSection.Builder(androidx.car.app.model.RowSection);
     method public androidx.car.app.model.RowSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder clearSelectionGroup();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder setAsSelectionGroup(int);
@@ -1736,14 +1734,13 @@
   @SuppressCompatibility @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi public abstract class Section<T extends androidx.car.app.model.Item> {
     ctor protected Section();
     ctor protected Section(androidx.car.app.model.Section.BaseBuilder<T!,? extends java.lang.Object!>);
-    method public java.util.List<T!> getItems();
+    method public androidx.car.app.serialization.ListDelegate<T!> getItemsDelegate();
     method public androidx.car.app.model.CarText? getNoItemsMessage();
     method public androidx.car.app.model.CarText? getTitle();
   }
 
   protected abstract static class Section.BaseBuilder<T extends androidx.car.app.model.Item, B> {
     ctor protected Section.BaseBuilder();
-    ctor protected Section.BaseBuilder(androidx.car.app.model.Section<T!>);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B addItem(T);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B clearItems();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B setItems(java.util.List<T!>);
@@ -2384,6 +2381,12 @@
     ctor public BundlerException(String?, Throwable);
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public interface ListDelegate<T> {
+    method public int getSize();
+    method public void requestItemRange(int startIndex, int endIndex, androidx.car.app.OnDoneCallback callback);
+    property public abstract int size;
+  }
+
 }
 
 package androidx.car.app.suggestion {
diff --git a/car/app/app/api/restricted_1.7.0-beta01.txt b/car/app/app/api/restricted_1.7.0-beta01.txt
index 958295c..3b4c1e5 100644
--- a/car/app/app/api/restricted_1.7.0-beta01.txt
+++ b/car/app/app/api/restricted_1.7.0-beta01.txt
@@ -1350,7 +1350,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class GridSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.GridItem!,androidx.car.app.model.GridSection.Builder!> {
     ctor public GridSection.Builder();
-    ctor public GridSection.Builder(androidx.car.app.model.GridSection);
     method public androidx.car.app.model.GridSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemImageShape(int);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemSize(int);
@@ -1694,7 +1693,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class RowSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.Row!,androidx.car.app.model.RowSection.Builder!> {
     ctor public RowSection.Builder();
-    ctor public RowSection.Builder(androidx.car.app.model.RowSection);
     method public androidx.car.app.model.RowSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder clearSelectionGroup();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder setAsSelectionGroup(int);
@@ -1736,14 +1734,13 @@
   @SuppressCompatibility @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi public abstract class Section<T extends androidx.car.app.model.Item> {
     ctor protected Section();
     ctor protected Section(androidx.car.app.model.Section.BaseBuilder<T!,? extends java.lang.Object!>);
-    method public java.util.List<T!> getItems();
+    method public androidx.car.app.serialization.ListDelegate<T!> getItemsDelegate();
     method public androidx.car.app.model.CarText? getNoItemsMessage();
     method public androidx.car.app.model.CarText? getTitle();
   }
 
   protected abstract static class Section.BaseBuilder<T extends androidx.car.app.model.Item, B> {
     ctor protected Section.BaseBuilder();
-    ctor protected Section.BaseBuilder(androidx.car.app.model.Section<T!>);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B addItem(T);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B clearItems();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B setItems(java.util.List<T!>);
@@ -2384,6 +2381,12 @@
     ctor public BundlerException(String?, Throwable);
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public interface ListDelegate<T> {
+    method public int getSize();
+    method public void requestItemRange(int startIndex, int endIndex, androidx.car.app.OnDoneCallback callback);
+    property public abstract int size;
+  }
+
 }
 
 package androidx.car.app.suggestion {
diff --git a/car/app/app/api/restricted_current.txt b/car/app/app/api/restricted_current.txt
index 958295c..3b4c1e5 100644
--- a/car/app/app/api/restricted_current.txt
+++ b/car/app/app/api/restricted_current.txt
@@ -1350,7 +1350,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class GridSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.GridItem!,androidx.car.app.model.GridSection.Builder!> {
     ctor public GridSection.Builder();
-    ctor public GridSection.Builder(androidx.car.app.model.GridSection);
     method public androidx.car.app.model.GridSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemImageShape(int);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.GridSection.Builder setItemSize(int);
@@ -1694,7 +1693,6 @@
 
   @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public static final class RowSection.Builder extends androidx.car.app.model.Section.BaseBuilder<androidx.car.app.model.Row!,androidx.car.app.model.RowSection.Builder!> {
     ctor public RowSection.Builder();
-    ctor public RowSection.Builder(androidx.car.app.model.RowSection);
     method public androidx.car.app.model.RowSection build();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder clearSelectionGroup();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public androidx.car.app.model.RowSection.Builder setAsSelectionGroup(int);
@@ -1736,14 +1734,13 @@
   @SuppressCompatibility @androidx.car.app.annotations.CarProtocol @androidx.car.app.annotations.ExperimentalCarApi public abstract class Section<T extends androidx.car.app.model.Item> {
     ctor protected Section();
     ctor protected Section(androidx.car.app.model.Section.BaseBuilder<T!,? extends java.lang.Object!>);
-    method public java.util.List<T!> getItems();
+    method public androidx.car.app.serialization.ListDelegate<T!> getItemsDelegate();
     method public androidx.car.app.model.CarText? getNoItemsMessage();
     method public androidx.car.app.model.CarText? getTitle();
   }
 
   protected abstract static class Section.BaseBuilder<T extends androidx.car.app.model.Item, B> {
     ctor protected Section.BaseBuilder();
-    ctor protected Section.BaseBuilder(androidx.car.app.model.Section<T!>);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B addItem(T);
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B clearItems();
     method @com.google.errorprone.annotations.CanIgnoreReturnValue public B setItems(java.util.List<T!>);
@@ -2384,6 +2381,12 @@
     ctor public BundlerException(String?, Throwable);
   }
 
+  @SuppressCompatibility @androidx.car.app.annotations.ExperimentalCarApi public interface ListDelegate<T> {
+    method public int getSize();
+    method public void requestItemRange(int startIndex, int endIndex, androidx.car.app.OnDoneCallback callback);
+    property public abstract int size;
+  }
+
 }
 
 package androidx.car.app.suggestion {
diff --git a/car/app/app/src/main/java/androidx/car/app/model/GridSection.java b/car/app/app/src/main/java/androidx/car/app/model/GridSection.java
index 9718f2a..6f25eb1 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/GridSection.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/GridSection.java
@@ -160,13 +160,6 @@
             super();
         }
 
-        /** Create a new {@link GridSection} builder, copying values from an existing instance. */
-        public Builder(@NonNull GridSection gridSection) {
-            super(gridSection);
-            mItemSize = gridSection.mItemSize;
-            mItemImageShape = gridSection.mItemImageShape;
-        }
-
         /** Sets the size of the items within this section. */
         @NonNull
         @CanIgnoreReturnValue
diff --git a/car/app/app/src/main/java/androidx/car/app/model/RowSection.java b/car/app/app/src/main/java/androidx/car/app/model/RowSection.java
index 7603d2a..a2220d0 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/RowSection.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/RowSection.java
@@ -51,7 +51,8 @@
     }
 
     /**
-     * When set to a value that correlates to an index in {@link #getItems()}, this entire row
+     * When set to a value that correlates to an index in {@link #getItemsDelegate()}, this
+     * entire row
      * section should be treated as a selection group (eg. radio group). Otherwise this will be a
      * negative value to denote that this row section should not be transformed into a selection
      * group.
@@ -119,12 +120,6 @@
             super();
         }
 
-        /** Create a new {@link RowSection} builder, copying values from an existing instance. */
-        public Builder(@NonNull RowSection rowSection) {
-            super(rowSection);
-            mInitialSelectedIndex = rowSection.mInitialSelectedIndex;
-        }
-
         /**
          * Sets this entire {@link RowSection} as a selection group when passed a non-negative
          * integer correlating to a valid index within the list of items added. The UI behaves
diff --git a/car/app/app/src/main/java/androidx/car/app/model/Section.java b/car/app/app/src/main/java/androidx/car/app/model/Section.java
index e000a0d..212006b 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/Section.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/Section.java
@@ -22,6 +22,8 @@
 import androidx.car.app.annotations.ExperimentalCarApi;
 import androidx.car.app.annotations.KeepFields;
 import androidx.car.app.model.constraints.CarTextConstraints;
+import androidx.car.app.serialization.ListDelegate;
+import androidx.car.app.serialization.ListDelegateImpl;
 
 import com.google.errorprone.annotations.CanIgnoreReturnValue;
 
@@ -41,7 +43,7 @@
 @ExperimentalCarApi
 public abstract class Section<T extends Item> {
     @NonNull
-    private final List<T> mItems;
+    private final ListDelegate<T> mItemsDelegate;
     @Nullable
     private final CarText mTitle;
     @Nullable
@@ -49,22 +51,22 @@
 
     // Empty constructor for serialization
     protected Section() {
-        mItems = Collections.emptyList();
+        mItemsDelegate = new ListDelegateImpl<>(Collections.emptyList());
         mTitle = null;
         mNoItemsMessage = null;
     }
 
     /** Constructor that fills out fields from any section builder. */
     protected Section(@NonNull BaseBuilder<T, ?> builder) {
-        mItems = Collections.unmodifiableList(builder.mItems);
+        mItemsDelegate = new ListDelegateImpl<>(Collections.unmodifiableList(builder.mItems));
         mTitle = builder.mHeader;
         mNoItemsMessage = builder.mNoItemsMessage;
     }
 
     /** Returns the items added to this section. */
     @NonNull
-    public List<T> getItems() {
-        return mItems;
+    public ListDelegate<T> getItemsDelegate() {
+        return mItemsDelegate;
     }
 
     /** Returns the optional text that should appear with the items in this section. */
@@ -91,20 +93,20 @@
         }
         Section<?> section = (Section<?>) other;
 
-        return Objects.equals(mItems, section.mItems) && Objects.equals(mTitle, section.mTitle)
+        return Objects.equals(mItemsDelegate, section.mItemsDelegate) && Objects.equals(mTitle,
+                section.mTitle)
                 && Objects.equals(mNoItemsMessage, section.mNoItemsMessage);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mItems, mTitle, mNoItemsMessage);
+        return Objects.hash(mItemsDelegate, mTitle, mNoItemsMessage);
     }
 
     @NonNull
     @Override
     public String toString() {
-        return "Section { items: " + mItems + ", title: " + mTitle + ", noItemsMessage: "
-                + mNoItemsMessage + " }";
+        return "Section";
     }
 
     /**
@@ -125,12 +127,6 @@
         protected BaseBuilder() {
         }
 
-        protected BaseBuilder(@NonNull Section<T> section) {
-            mItems = section.mItems;
-            mHeader = section.mTitle;
-            mNoItemsMessage = section.mNoItemsMessage;
-        }
-
         /** Sets the items for this section, overwriting any other previously set items. */
         @NonNull
         @CanIgnoreReturnValue
@@ -175,7 +171,7 @@
             CarText carText = CarText.create(title);
             CarTextConstraints.TEXT_ONLY.validateOrThrow(carText);
             mHeader = carText;
-            return  (B) this;
+            return (B) this;
         }
 
         /**
diff --git a/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegate.kt b/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegate.kt
index 8e87b8c..4e99e87 100644
--- a/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegate.kt
+++ b/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegate.kt
@@ -16,8 +16,6 @@
 package androidx.car.app.serialization
 
 import android.annotation.SuppressLint
-import androidx.annotation.RestrictTo
-import androidx.annotation.RestrictTo.Scope.LIBRARY
 import androidx.car.app.OnDoneCallback
 import androidx.car.app.annotations.ExperimentalCarApi
 
@@ -27,8 +25,7 @@
  * <p> Long lists are stored on the client for performance reasons.
  */
 @ExperimentalCarApi
-@RestrictTo(LIBRARY)
-interface ListDelegate<T> {
+interface ListDelegate<out T> {
     /** The size of the underlying [List] */
     val size: Int
 
diff --git a/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegateImpl.kt b/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegateImpl.kt
index 196397a..628be63 100644
--- a/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegateImpl.kt
+++ b/car/app/app/src/main/java/androidx/car/app/serialization/ListDelegateImpl.kt
@@ -31,10 +31,20 @@
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 class ListDelegateImpl<T> : ListDelegate<T> {
     private var _size: Int = -1
+
+    /**
+     * The hash of the underlying list.
+     *
+     * This hash is used to determine whether two [ListDelegate]s contain the same items, without
+     * needing to load every item in the list.
+     */
+    private var listHashCode: Int = -1
+
     private lateinit var mStub: IRemoteList
 
     constructor(content: List<T>) {
         _size = content.size
+        listHashCode = content.hashCode()
         mStub = RemoteListStub<T>(content)
     }
 
@@ -60,6 +70,11 @@
         }
     }
 
+    override fun equals(other: Any?) =
+        other is ListDelegateImpl<*> && other.listHashCode == listHashCode
+
+    override fun hashCode(): Int = listHashCode
+
     private class RemoteListStub<T>(private val mContent: List<T>) : IRemoteList.Stub() {
         @Throws(RemoteException::class)
         override fun requestItemRange(startIndex: Int, endIndex: Int, callback: IOnDoneCallback) {
diff --git a/car/app/app/src/test/java/androidx/car/app/model/GridSectionTest.kt b/car/app/app/src/test/java/androidx/car/app/model/GridSectionTest.kt
index e6fe370..8d20b10 100644
--- a/car/app/app/src/test/java/androidx/car/app/model/GridSectionTest.kt
+++ b/car/app/app/src/test/java/androidx/car/app/model/GridSectionTest.kt
@@ -46,26 +46,6 @@
     }
 
     @Test
-    fun builderFromObject() {
-        val section =
-            GridSection.Builder()
-                .setItemSize(GridSection.ITEM_SIZE_LARGE)
-                .setItemImageShape(GridSection.ITEM_IMAGE_SHAPE_CIRCLE)
-                .setItems(testItemList)
-                .setTitle(testHeader)
-                .setNoItemsMessage("Test no items message")
-                .build()
-
-        val result = GridSection.Builder(section).build()
-
-        assertThat(result.itemSize).isEqualTo(GridSection.ITEM_SIZE_LARGE)
-        assertThat(result.itemImageShape).isEqualTo(GridSection.ITEM_IMAGE_SHAPE_CIRCLE)
-        assertThat(result.items).containsExactlyElementsIn(testItemList)
-        assertThat(result.title).isEqualTo(testHeader)
-        assertThat(result.noItemsMessage).isEqualTo(CarText.create("Test no items message"))
-    }
-
-    @Test
     fun equals_returnsFalse_whenPassedNull() {
         val section = GridSection.Builder().build()
 
diff --git a/car/app/app/src/test/java/androidx/car/app/model/RowSectionTest.kt b/car/app/app/src/test/java/androidx/car/app/model/RowSectionTest.kt
index dd4680a..66aad825 100644
--- a/car/app/app/src/test/java/androidx/car/app/model/RowSectionTest.kt
+++ b/car/app/app/src/test/java/androidx/car/app/model/RowSectionTest.kt
@@ -102,25 +102,6 @@
     }
 
     @Test
-    fun builderFromObject() {
-        val section =
-            RowSection.Builder()
-                .setItems(testItemList)
-                .setAsSelectionGroup(1)
-                .setTitle(testHeader)
-                .setNoItemsMessage(testNoItemsMessage)
-                .build()
-
-        val result = RowSection.Builder(section).build()
-
-        assertThat(result.items).containsExactlyElementsIn(testItemList)
-        assertThat(result.isSelectionGroup).isTrue()
-        assertThat(result.initialSelectedIndex).isEqualTo(1)
-        assertThat(result.title).isEqualTo(testHeader)
-        assertThat(result.noItemsMessage).isEqualTo(testNoItemsMessage)
-    }
-
-    @Test
     fun equals_returnsFalse_whenPassedNull() {
         val section = RowSection.Builder().build()
 
diff --git a/car/app/app/src/test/java/androidx/car/app/model/SectionTest.kt b/car/app/app/src/test/java/androidx/car/app/model/SectionTest.kt
index bccf051..318c749 100644
--- a/car/app/app/src/test/java/androidx/car/app/model/SectionTest.kt
+++ b/car/app/app/src/test/java/androidx/car/app/model/SectionTest.kt
@@ -18,6 +18,7 @@
 
 import android.text.SpannableString
 import android.text.Spanned
+import androidx.car.app.testing.TestDelegateInvoker.requestAllItemsForTest
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
 import org.junit.Test
@@ -27,7 +28,9 @@
 @RunWith(RobolectricTestRunner::class)
 class SectionTest {
     /** An example item containing a uniquely identifying field. */
-    private data class TestItem(val someUniquelyIdentifyingField: Int) : Item
+    private data class TestItem(val someUniquelyIdentifyingField: Int) : Item {
+        constructor() : this(-1)
+    }
 
     /** An empty section implementation to test the base class. */
     private class TestSection(builder: Builder) : Section<TestItem>(builder) {
@@ -42,7 +45,7 @@
         val item = TestItem(1)
         val section = TestSection.Builder().addItem(item).build()
 
-        assertThat(section.items).containsExactly(item)
+        assertThat(section.itemsDelegate.requestAllItemsForTest()).containsExactly(item)
     }
 
     @Test
diff --git a/car/app/app/src/test/java/androidx/car/app/serialization/ListDelegateTest.kt b/car/app/app/src/test/java/androidx/car/app/serialization/ListDelegateTest.kt
index 7014c15..b5f8108 100644
--- a/car/app/app/src/test/java/androidx/car/app/serialization/ListDelegateTest.kt
+++ b/car/app/app/src/test/java/androidx/car/app/serialization/ListDelegateTest.kt
@@ -54,6 +54,22 @@
         assertInvalidIndices(2, 1) // end before start
     }
 
+    @Test
+    fun equalsAndHashCode_sameInstance_areEqual() =
+        ListDelegateImpl(testList).let { assertEqual(it, it) }
+
+    @Test
+    fun equalsAndHashCode_equivalentItems_areEqual() =
+        testList.let { assertEqual(ListDelegateImpl(it), ListDelegateImpl(it)) }
+
+    @Test
+    fun equalsAndHashCode_marshalledItem_areEqual() =
+        ListDelegateImpl(testList).let { assertEqual(it, marshallUnmarshall(it)) }
+
+    @Test
+    fun equalsAndHashCode_differentItems_areNotEqual() =
+        assertNotEqual(ListDelegateImpl((10..19).toList()), ListDelegateImpl((20..29).toList()))
+
     private fun assertInvalidIndices(startIndex: Int, endIndex: Int) {
         assertThrows(AssertionError::class.java) { requestItemRange(startIndex, endIndex) }
     }
@@ -70,4 +86,20 @@
 
         @Suppress("UNCHECKED_CAST") return resultCaptor.lastValue.get() as List<Int>
     }
+
+    private fun <T : Any> assertEqual(a: T, b: T) {
+        assertThat(a).isEqualTo(b)
+        assertThat(b).isEqualTo(a)
+        assertThat(a.hashCode()).isEqualTo(b.hashCode())
+    }
+
+    private fun <T : Any> assertNotEqual(a: T, b: T) {
+        assertThat(a).isNotEqualTo(b)
+        assertThat(b).isNotEqualTo(a)
+        assertThat(a.hashCode()).isNotEqualTo(b.hashCode())
+    }
+
+    @Suppress("UNCHECKED_CAST")
+    private fun <T : Any> marshallUnmarshall(obj: T): T =
+        Bundler.fromBundle(Bundler.toBundle(obj)) as T
 }
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Focusable.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Focusable.kt
index ef4fce6..55adc64 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Focusable.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Focusable.kt
@@ -19,6 +19,7 @@
 import androidx.compose.foundation.interaction.FocusInteraction
 import androidx.compose.foundation.interaction.Interaction
 import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.relocation.findBringIntoViewParent
 import androidx.compose.foundation.relocation.scrollIntoView
 import androidx.compose.runtime.Stable
 import androidx.compose.ui.Modifier
@@ -39,6 +40,7 @@
 import androidx.compose.ui.node.findNearestAncestor
 import androidx.compose.ui.node.invalidateSemantics
 import androidx.compose.ui.node.observeReads
+import androidx.compose.ui.node.requireLayoutCoordinates
 import androidx.compose.ui.platform.InspectorInfo
 import androidx.compose.ui.semantics.SemanticsPropertyReceiver
 import androidx.compose.ui.semantics.focused
@@ -211,7 +213,15 @@
         if (isFocused == wasFocused) return
         if (isFocused) {
             onFocus?.invoke()
-            coroutineScope.launch { if (isAttached) scrollIntoView() }
+            val parent = findBringIntoViewParent()
+            if (parent != null) {
+                val layoutCoordinates = requireLayoutCoordinates()
+                coroutineScope.launch {
+                    if (isAttached) {
+                        parent.scrollIntoView(layoutCoordinates)
+                    }
+                }
+            }
             val pinnableContainer = retrievePinnableContainer()
             pinnedHandle = pinnableContainer?.pin()
             notifyObserverWhenAttached()
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/ScrollIntoViewRequester.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/ScrollIntoViewRequester.kt
index 2fd1dc2..9a40c89 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/ScrollIntoViewRequester.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/relocation/ScrollIntoViewRequester.kt
@@ -21,6 +21,7 @@
 
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.toRect
+import androidx.compose.ui.layout.LayoutCoordinates
 import androidx.compose.ui.node.DelegatableNode
 import androidx.compose.ui.node.requireLayoutCoordinates
 import androidx.compose.ui.unit.toSize
@@ -46,7 +47,15 @@
     if (!node.isAttached) return
     val layoutCoordinates = requireLayoutCoordinates()
     val parent = findBringIntoViewParent() ?: return
-    parent.bringChildIntoView(layoutCoordinates) {
+    parent.scrollIntoView(layoutCoordinates, rect)
+}
+
+internal suspend fun BringIntoViewParent.scrollIntoView(
+    layoutCoordinates: LayoutCoordinates,
+    rect: Rect? = null
+) {
+    if (!layoutCoordinates.isAttached) return
+    bringChildIntoView(layoutCoordinates) {
         // If the rect is not specified, use a rectangle representing the entire composable.
         // If the coordinates are detached when this call is made, we don't bother even
         // submitting the request, but if the coordinates become detached while the request
diff --git a/compose/integration-tests/macrobenchmark-target/build.gradle b/compose/integration-tests/macrobenchmark-target/build.gradle
index 8e43d97..5946d76 100644
--- a/compose/integration-tests/macrobenchmark-target/build.gradle
+++ b/compose/integration-tests/macrobenchmark-target/build.gradle
@@ -29,6 +29,7 @@
     implementation 'androidx.viewpager2:viewpager2:1.0.0'
 
     implementation(libs.kotlinStdlib)
+    implementation(libs.material)
     implementation(project(":activity:activity-compose"))
     implementation("androidx.appcompat:appcompat:1.4.1")
     implementation("androidx.cardview:cardview:1.0.0")
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml b/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
index 0eadc27..d249e08 100644
--- a/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
+++ b/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
@@ -20,12 +20,11 @@
     <uses-permission android:name="android.permission.INTERNET"/>
 
     <application
-        android:label="Jetpack Compose Macrobenchmark Target"
         android:allowBackup="false"
-        android:supportsRtl="true"
         android:icon="@mipmap/ic_launcher"
+        android:label="Jetpack Compose Macrobenchmark Target"
+        android:supportsRtl="true"
         tools:ignore="GoogleAppIndexingWarning">
-
         <!-- Profileable to enable macrobenchmark profiling -->
         <profileable android:shell="true"/>
 
@@ -37,8 +36,8 @@
          -->
         <activity
             android:name=".TrivialStartupActivity"
-            android:label="C Trivial"
-            android:exported="true">
+            android:exported="true"
+            android:label="C Trivial">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -50,8 +49,8 @@
         </activity>
         <activity
             android:name=".StaticScrollingContentWithChromeInitialCompositionActivity"
-            android:label="C StaticScrollingWithChrome Init"
-            android:exported="true">
+            android:exported="true"
+            android:label="C StaticScrollingWithChrome Init">
             <intent-filter>
                 <action android:name="androidx.compose.integration.macrobenchmark.target.STATIC_SCROLLING_CONTENT_WITH_CHROME_INITIAL_COMPOSITION_ACTIVITY" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -63,8 +62,8 @@
         </activity>
         <activity
             android:name=".TrivialStartupTracingActivity"
-            android:label="C TrivialTracing"
-            android:exported="true">
+            android:exported="true"
+            android:label="C TrivialTracing">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -92,8 +91,8 @@
         </activity>
         <activity
             android:name=".LazyColumnActivity"
-            android:label="C LazyColumn"
-            android:exported="true">
+            android:exported="true"
+            android:label="C LazyColumn">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -105,8 +104,8 @@
         </activity>
         <activity
             android:name=".FrameExperimentActivity"
-            android:label="FrameExp"
-            android:exported="true">
+            android:exported="true"
+            android:label="FrameExp">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -176,7 +175,6 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".ViewPagerActivity"
             android:exported="true"
@@ -186,7 +184,6 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".RecyclerViewAsCarouselActivity"
             android:exported="true"
@@ -196,7 +193,6 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".PagerAsCarouselActivity"
             android:exported="true"
@@ -206,7 +202,6 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".PagerActivity"
             android:exported="true"
@@ -216,7 +211,6 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".TrivialTracingActivity"
             android:exported="true">
@@ -225,7 +219,8 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <activity android:name=".AndroidViewListActivity"
+        <activity
+            android:name=".AndroidViewListActivity"
             android:exported="true"
             android:theme="@style/Theme.AppCompat">
             <intent-filter>
@@ -233,7 +228,8 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <activity android:name=".RecyclerViewListActivity"
+        <activity
+            android:name=".RecyclerViewListActivity"
             android:exported="true"
             android:theme="@style/Theme.AppCompat">
             <intent-filter>
@@ -241,11 +237,10 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        
-	<activity
+        <activity
             android:name=".VectorsListActivity"
-            android:label="Compose vectors list"
-            android:exported="true">
+            android:exported="true"
+            android:label="Compose vectors list">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -255,11 +250,10 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".CrossfadeActivity"
-            android:label="Compose Crossfade Benchmark"
-            android:exported="true">
+            android:exported="true"
+            android:label="Compose Crossfade Benchmark">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -268,9 +262,9 @@
                 <action android:name="androidx.compose.integration.macrobenchmark.target.CROSSFADE_ACTIVITY" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-	</activity>
-
-	<activity android:name=".PagerOfLazyGridActivity"
+        </activity>
+        <activity
+            android:name=".PagerOfLazyGridActivity"
             android:exported="true"
             android:theme="@style/Theme.AppCompat">
             <intent-filter>
@@ -278,5 +272,20 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+        <activity
+            android:name=".FormFillingActivity"
+            android:exported="true"
+            android:label="Compose Form Filling Benchmark"
+            android:launchMode="singleInstance"
+            android:theme="@style/Theme.AppCompat.Light">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="androidx.compose.integration.macrobenchmark.target.FORM_ACTIVITY" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
     </application>
 </manifest>
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/FormFillingActivity.kt b/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/FormFillingActivity.kt
new file mode 100644
index 0000000..2958dfe
--- /dev/null
+++ b/compose/integration-tests/macrobenchmark-target/src/main/java/androidx/compose/integration/macrobenchmark/target/FormFillingActivity.kt
@@ -0,0 +1,286 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.integration.macrobenchmark.target
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.view.accessibility.AccessibilityNodeInfo
+import android.widget.EditText
+import android.widget.LinearLayout
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.LazyListState
+import androidx.compose.foundation.lazy.rememberLazyListState
+import androidx.compose.foundation.text.BasicTextField
+import androidx.compose.material.LocalTextStyle
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.semantics.CustomAccessibilityAction
+import androidx.compose.ui.semantics.customActions
+import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.TextUnit
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import androidx.compose.ui.util.fastRoundToInt
+import androidx.compose.ui.util.trace
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.Adapter
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
+
+class FormFillingActivity : ComponentActivity() {
+    private lateinit var lazyListState: LazyListState
+    private lateinit var formView: FormView
+    private lateinit var type: String
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+        val rowHeightDp: Dp
+        val fontSize: TextUnit
+        when (intent.getIntExtra(MODE, 0)) {
+            FRAME_MEASUREMENT_MODE -> {
+                // Larger number of rows to stress the system while measuring frame info.
+                rowHeightDp = 30.dp
+                fontSize = 5.sp
+            }
+            CREATE_ANI_MODE -> {
+                // Smaller number of rows so that we have no dropped frames.
+                rowHeightDp = 100.dp
+                fontSize = 10.sp
+            }
+            else -> error("Invalid Mode")
+        }
+
+        type = checkNotNull(intent.getStringExtra(TYPE)) { "No type specified." }
+        when (type) {
+            COMPOSE ->
+                setContent {
+                    lazyListState = rememberLazyListState()
+                    FormComposable(lazyListState, rowHeightDp, fontSize)
+                }
+            VIEW -> {
+                val rowHeightPx = rowHeightDp.value * resources.displayMetrics.densityDpi / 160f
+                formView = FormView(this, rowHeightPx, fontSize)
+                setContentView(formView)
+            }
+            else -> error("Unknown Type")
+        }
+    }
+
+    override fun onNewIntent(intent: Intent) {
+        when (type) {
+            COMPOSE -> lazyListState.requestScrollToItem(lazyListState.firstVisibleItemIndex + 100)
+            VIEW -> formView.scrollToPosition(formView.lastVisibleItemIndex + 100)
+            else -> error("Unknown Type")
+        }
+        super.onNewIntent(intent)
+    }
+
+    @Composable
+    private fun FormComposable(lazyListState: LazyListState, rowHeight: Dp, fontSize: TextUnit) {
+        val textStyle = LocalTextStyle.current.copy(fontSize = fontSize)
+        LazyColumn(state = lazyListState) {
+            items(data.size) { index ->
+                val person = data[index]
+                Row(
+                    modifier =
+                        Modifier.height(rowHeight).semantics {
+                            customActions =
+                                listOf(CustomAccessibilityAction("customAction") { false })
+                        }
+                ) {
+                    BasicTextField(
+                        value = person.title,
+                        onValueChange = { person.title = it },
+                        textStyle = textStyle
+                    )
+                    BasicTextField(
+                        value = person.firstName,
+                        onValueChange = { person.firstName = it },
+                        textStyle = textStyle
+                    )
+                    BasicTextField(
+                        value = person.middleName,
+                        onValueChange = { person.middleName = it },
+                        textStyle = textStyle
+                    )
+                    BasicTextField(
+                        value = person.lastName,
+                        onValueChange = { person.lastName = it },
+                        textStyle = textStyle
+                    )
+                    BasicTextField(
+                        value = person.age.toString(),
+                        onValueChange = { person.age = it.toInt() },
+                        textStyle = textStyle
+                    )
+                }
+            }
+        }
+    }
+
+    private class FormView(context: Context, rowHeight: Float, fontSize: TextUnit) :
+        RecyclerView(context) {
+        private val linearLayoutManager: LinearLayoutManager
+
+        init {
+            setHasFixedSize(true)
+            linearLayoutManager = LinearLayoutManager(context, VERTICAL, false)
+            layoutManager = linearLayoutManager
+            adapter = DemoAdapter(data, rowHeight, fontSize)
+        }
+
+        val lastVisibleItemIndex: Int
+            get() = linearLayoutManager.findLastVisibleItemPosition()
+
+        override fun createAccessibilityNodeInfo(): AccessibilityNodeInfo {
+            return trace(CREATE_ANI_TRACE) { super.createAccessibilityNodeInfo() }
+        }
+
+        override fun sendAccessibilityEvent(eventType: Int) {
+            return trace(ACCESSIBILITY_EVENT_TRACE) { super.sendAccessibilityEvent(eventType) }
+        }
+    }
+
+    private class RowView(context: Context, content: (RowView) -> Unit) : LinearLayout(context) {
+        init {
+            gravity = Gravity.CENTER_VERTICAL
+            content(this)
+        }
+
+        override fun createAccessibilityNodeInfo(): AccessibilityNodeInfo {
+            return trace(CREATE_ANI_TRACE) { super.createAccessibilityNodeInfo() }
+        }
+
+        override fun sendAccessibilityEvent(eventType: Int) {
+            return trace(ACCESSIBILITY_EVENT_TRACE) { super.sendAccessibilityEvent(eventType) }
+        }
+    }
+
+    @SuppressLint("AppCompatCustomView")
+    private class EditTextView(context: Context, fontSize: Float) : EditText(context) {
+        init {
+            textSize = fontSize
+            gravity = Gravity.CENTER_VERTICAL
+        }
+
+        fun replaceText(newText: String) {
+            text.replace(0, length(), newText, 0, newText.length)
+        }
+
+        override fun createAccessibilityNodeInfo(): AccessibilityNodeInfo {
+            return trace(CREATE_ANI_TRACE) { super.createAccessibilityNodeInfo() }
+        }
+
+        override fun sendAccessibilityEvent(eventType: Int) {
+            return trace(ACCESSIBILITY_EVENT_TRACE) { super.sendAccessibilityEvent(eventType) }
+        }
+    }
+
+    private class DemoAdapter(
+        val data: List<FormData>,
+        val rowHeightPx: Float,
+        textSize: TextUnit
+    ) : Adapter<DemoAdapter.DemoViewHolder>() {
+
+        private class DemoViewHolder(
+            val title: EditTextView,
+            val firstName: EditTextView,
+            val middleName: EditTextView,
+            val lastName: EditTextView,
+            val age: EditTextView,
+            itemRoot: View
+        ) : ViewHolder(itemRoot)
+
+        val textSize = textSize.value
+
+        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DemoViewHolder {
+            val title = EditTextView(parent.context, textSize)
+            val firstName = EditTextView(parent.context, textSize)
+            val middleName = EditTextView(parent.context, textSize)
+            val lastName = EditTextView(parent.context, textSize)
+            val age = EditTextView(parent.context, textSize)
+
+            return DemoViewHolder(
+                title,
+                firstName,
+                middleName,
+                lastName,
+                age,
+                RowView(parent.context) {
+                    it.minimumHeight = rowHeightPx.fastRoundToInt()
+                    it.addView(title)
+                    it.addView(firstName)
+                    it.addView(middleName)
+                    it.addView(lastName)
+                    it.addView(age)
+                }
+            )
+        }
+
+        override fun onBindViewHolder(holder: DemoViewHolder, position: Int) {
+            val formData = data.elementAt(position)
+            holder.title.replaceText(formData.title)
+            holder.firstName.replaceText(formData.firstName)
+            holder.middleName.replaceText(formData.middleName)
+            holder.lastName.replaceText(formData.lastName)
+            holder.age.replaceText(formData.age.toString())
+        }
+
+        override fun getItemCount(): Int = data.size
+    }
+
+    private data class FormData(
+        var title: String = "",
+        var firstName: String = "",
+        var middleName: String = "",
+        var lastName: String = "",
+        var age: Int = 0,
+    )
+
+    private companion object {
+        private const val TYPE = "TYPE"
+        private const val COMPOSE = "Compose"
+        private const val VIEW = "View"
+        private const val MODE = "MODE"
+        private const val CREATE_ANI_MODE = 1
+        private const val FRAME_MEASUREMENT_MODE = 2
+        private const val CREATE_ANI_TRACE = "createAccessibilityNodeInfo"
+        private const val ACCESSIBILITY_EVENT_TRACE = "sendAccessibilityEvent"
+        private val data by lazy {
+            List(200000) {
+                FormData(
+                    title = "Mr",
+                    firstName = "John $it",
+                    middleName = "Ace $it",
+                    lastName = "Doe $it",
+                    age = it
+                )
+            }
+        }
+    }
+}
diff --git a/compose/integration-tests/macrobenchmark/src/main/java/androidx/compose/integration/macrobenchmark/FormFillingBenchmark.kt b/compose/integration-tests/macrobenchmark/src/main/java/androidx/compose/integration/macrobenchmark/FormFillingBenchmark.kt
new file mode 100644
index 0000000..9b05e73
--- /dev/null
+++ b/compose/integration-tests/macrobenchmark/src/main/java/androidx/compose/integration/macrobenchmark/FormFillingBenchmark.kt
@@ -0,0 +1,213 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.integration.macrobenchmark
+
+import android.app.Instrumentation
+import android.app.UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
+import android.content.Intent
+import android.os.Build.VERSION_CODES.N
+import android.provider.Settings.Secure
+import androidx.benchmark.macro.ExperimentalMetricApi
+import androidx.benchmark.macro.FrameTimingMetric
+import androidx.benchmark.macro.TraceSectionMetric
+import androidx.benchmark.macro.junit4.MacrobenchmarkRule
+import androidx.test.filters.LargeTest
+import androidx.test.filters.SdkSuppress
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.Configurator
+import androidx.test.uiautomator.UiDevice
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+@SdkSuppress(minSdkVersion = N)
+@LargeTest
+@RunWith(Parameterized::class)
+class FormFillingBenchmark(private var talkbackEnabled: Boolean, private val type: String) {
+
+    @get:Rule val benchmarkRule = MacrobenchmarkRule()
+    private lateinit var instrumentation: Instrumentation
+    private var previousTalkbackSettings: String? = null
+    private lateinit var device: UiDevice
+
+    @Test
+    fun createAccessibilityNodeInfo() {
+        if (!talkbackEnabled) return
+        benchmarkRule.measureRepeated(
+            packageName = PACKAGE,
+            metrics =
+                @OptIn(ExperimentalMetricApi::class)
+                listOf(
+                    TraceSectionMetric(
+                        sectionName = CREATE_ANI_TRACE,
+                        mode = TraceSectionMetric.Mode.Sum
+                    ),
+                    TraceSectionMetric(
+                        sectionName = ACCESSIBILITY_EVENT_TRACE,
+                        mode = TraceSectionMetric.Mode.Sum
+                    )
+                ),
+            iterations = 10,
+            setupBlock = {
+                if (iteration == 0) {
+                    startActivityAndWait(
+                        Intent()
+                            .setAction("$PACKAGE.$ACTIVITY")
+                            .putExtra(TYPE, type)
+                            .putExtra(MODE, CREATE_ANI_MODE)
+                    )
+                    device.waitForIdle()
+
+                    // Run one iteration to allow the scroll position to stabilize, and to remove
+                    // the effect of the initial frame which draws the accessibility focus box.
+                    performScrollAndWait(millis = 10_000)
+                }
+            },
+            measureBlock = {
+
+                // Scroll and pause to allow all frames to complete, for the accessibility events
+                // to be sent, for talkback to assign focus, and finally for talkback to trigger
+                // createAccessibilityNodeInfo calls which is the thing we want to measure.
+                performScrollAndWait(millis = 10_000)
+            }
+        )
+    }
+
+    @Test
+    fun frameInfo() {
+        benchmarkRule.measureRepeated(
+            packageName = PACKAGE,
+            metrics = listOf(FrameTimingMetric()),
+            iterations = 10,
+            setupBlock = {
+                if (iteration == 0) {
+                    startActivityAndWait(
+                        Intent()
+                            .setAction("$PACKAGE.$ACTIVITY")
+                            .putExtra(TYPE, type)
+                            .putExtra(MODE, FRAME_MEASUREMENT_MODE)
+                    )
+                    Thread.sleep(2_000)
+                    device.waitForIdle()
+
+                    // Run one iteration to allow the scroll position to stabilize, and to remove
+                    // the effect of the initial frame which draws the accessibility focus box.
+                    performScrollAndWait(millis = 20)
+                }
+            },
+            measureBlock = {
+                // Instead of using an animation to scroll (Where the number of frames triggered
+                // is not deterministic, we attempt to scroll 100 times with an aim to scroll once
+                // every frame deadline of 20ms.
+                repeat(100) { performScrollAndWait(millis = 20) }
+                Thread.sleep(10_000)
+            }
+        )
+    }
+
+    @Before
+    fun setUp() {
+        Configurator.getInstance().uiAutomationFlags = FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
+        instrumentation = InstrumentationRegistry.getInstrumentation()
+        device = UiDevice.getInstance(instrumentation)
+        if (talkbackEnabled) {
+            previousTalkbackSettings = instrumentation.enableTalkback()
+            // Wait for talkback to turn on.
+            Thread.sleep(2_000)
+        }
+    }
+
+    @After
+    fun tearDown() {
+        if (talkbackEnabled) {
+            instrumentation.disableTalkback(previousTalkbackSettings)
+            // Wait for talkback to turn off.
+            Thread.sleep(2_000)
+        }
+    }
+
+    private fun performScrollAndWait(millis: Long) {
+        // We don't use UI Automator to scroll because UI Automator itself is an accessibility
+        // service, and this affects the benchmark. Instead we send an event to the activity that
+        // requests it to scroll.
+        instrumentation.context.startActivity(
+            Intent().addFlags(Intent.FLAG_ACTIVITY_NEW_TASK).setAction("$PACKAGE.$ACTIVITY")
+        )
+
+        // Pause to allow all frames to complete, for the accessibility events to be sent,
+        // for talkback to assign focus, and finally for talkback to trigger
+        // createAccessibilityNodeInfo calls which is the thing we want to measure.
+        Thread.sleep(millis)
+    }
+
+    companion object {
+        private const val PACKAGE = "androidx.compose.integration.macrobenchmark.target"
+        private const val ACTIVITY = "FORM_ACTIVITY"
+        private const val TYPE = "TYPE"
+        private const val COMPOSE = "Compose"
+        private const val VIEW = "View"
+        const val MODE = "MODE"
+        const val CREATE_ANI_MODE = 1
+        const val FRAME_MEASUREMENT_MODE = 2
+        const val CREATE_ANI_TRACE = "createAccessibilityNodeInfo"
+        const val ACCESSIBILITY_EVENT_TRACE = "sendAccessibilityEvent"
+
+        // Manually set up LastPass on the device and use these parameters when running locally.
+        // @Parameterized.Parameters(name = "LastPassEnabled=true, type={1}")
+        // @JvmStatic
+        // fun parameters() = mutableListOf<Array<Any>>().also {
+        //    for (type in arrayOf(COMPOSE, VIEW)) {
+        //        it.add(arrayOf(false, type))
+        //    }
+        // }
+
+        @Parameterized.Parameters(name = "TalkbackEnabled={0}, type={1}")
+        @JvmStatic
+        fun parameters() =
+            mutableListOf<Array<Any>>().also {
+                for (talkbackEnabled in arrayOf(false, true)) {
+                    for (type in arrayOf(COMPOSE, VIEW)) {
+                        it.add(arrayOf(talkbackEnabled, type))
+                    }
+                }
+            }
+    }
+}
+
+private fun Instrumentation.enableTalkback(): String? {
+    val talkback =
+        "com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService"
+    val previousTalkbackSettings =
+        Secure.getString(context.contentResolver, Secure.ENABLED_ACCESSIBILITY_SERVICES)
+    UiDevice.getInstance(this)
+        .executeShellCommand("settings put secure enabled_accessibility_services $talkback")
+    return previousTalkbackSettings
+}
+
+private fun Instrumentation.disableTalkback(previousTalkbackSettings: String? = null): String {
+    return UiDevice.getInstance(this)
+        .executeShellCommand(
+            if (previousTalkbackSettings == null || previousTalkbackSettings == "") {
+                "settings delete secure enabled_accessibility_services"
+            } else {
+                "settings put secure enabled_accessibility_services $previousTalkbackSettings"
+            }
+        )
+}
diff --git a/compose/material3/benchmark/src/androidTest/java/androidx/compose/material3/benchmark/FloatingAppBarBenchmark.kt b/compose/material3/benchmark/src/androidTest/java/androidx/compose/material3/benchmark/FloatingAppBarBenchmark.kt
new file mode 100644
index 0000000..d91c668
--- /dev/null
+++ b/compose/material3/benchmark/src/androidTest/java/androidx/compose/material3/benchmark/FloatingAppBarBenchmark.kt
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.material3.benchmark
+
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Add
+import androidx.compose.material.icons.filled.Check
+import androidx.compose.material.icons.filled.Edit
+import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
+import androidx.compose.material3.HorizontalFloatingAppBar
+import androidx.compose.material3.Icon
+import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.VerticalFloatingAppBar
+import androidx.compose.runtime.Composable
+import androidx.compose.testutils.LayeredComposeTestCase
+import androidx.compose.testutils.benchmark.ComposeBenchmarkRule
+import androidx.compose.testutils.benchmark.benchmarkFirstCompose
+import androidx.compose.testutils.benchmark.benchmarkFirstDraw
+import androidx.compose.testutils.benchmark.benchmarkFirstLayout
+import androidx.compose.testutils.benchmark.benchmarkFirstMeasure
+import androidx.compose.testutils.benchmark.benchmarkToFirstPixel
+import androidx.compose.ui.Modifier
+import org.junit.Ignore
+import org.junit.Rule
+import org.junit.Test
+
+class FloatingAppBarBenchmark {
+    @get:Rule val benchmarkRule = ComposeBenchmarkRule()
+
+    private val horizontalFloatingAppBarTestCaseFactory = { HorizontalFloatingAppBarTestCase() }
+    private val verticalFloatingAppBarTestCaseFactory = { VerticalFloatingAppBarTestCase() }
+
+    @Ignore
+    @Test
+    fun horizontalFloatingAppBar_first_compose() {
+        benchmarkRule.benchmarkFirstCompose(horizontalFloatingAppBarTestCaseFactory)
+    }
+
+    @Ignore
+    @Test
+    fun verticalFloatingAppBar_first_compose() {
+        benchmarkRule.benchmarkFirstCompose(verticalFloatingAppBarTestCaseFactory)
+    }
+
+    @Ignore
+    @Test
+    fun horizontalFloatingAppBar_first_measure() {
+        benchmarkRule.benchmarkFirstMeasure(horizontalFloatingAppBarTestCaseFactory)
+    }
+
+    @Ignore
+    @Test
+    fun verticalFloatingAppBar_first_measure() {
+        benchmarkRule.benchmarkFirstMeasure(verticalFloatingAppBarTestCaseFactory)
+    }
+
+    @Ignore
+    @Test
+    fun horizontalFloatingAppBar_first_layout() {
+        benchmarkRule.benchmarkFirstLayout(horizontalFloatingAppBarTestCaseFactory)
+    }
+
+    @Ignore
+    @Test
+    fun verticalFloatingAppBar_first_layout() {
+        benchmarkRule.benchmarkFirstLayout(verticalFloatingAppBarTestCaseFactory)
+    }
+
+    @Ignore
+    @Test
+    fun horizontalFloatingAppBar_first_draw() {
+        benchmarkRule.benchmarkFirstDraw(horizontalFloatingAppBarTestCaseFactory)
+    }
+
+    @Ignore
+    @Test
+    fun verticalFloatingAppBar_first_draw() {
+        benchmarkRule.benchmarkFirstDraw(verticalFloatingAppBarTestCaseFactory)
+    }
+
+    @Test
+    fun horizontalFloatingAppBar_firstPixel() {
+        benchmarkRule.benchmarkToFirstPixel(horizontalFloatingAppBarTestCaseFactory)
+    }
+
+    @Test
+    fun verticalFloatingAppBar_firstPixel() {
+        benchmarkRule.benchmarkToFirstPixel(verticalFloatingAppBarTestCaseFactory)
+    }
+}
+
+@OptIn(ExperimentalMaterial3ExpressiveApi::class)
+internal class HorizontalFloatingAppBarTestCase : LayeredComposeTestCase() {
+    @Composable
+    override fun MeasuredContent() {
+        HorizontalFloatingAppBar(
+            expanded = true,
+            modifier = Modifier.fillMaxWidth(),
+            trailingContent = { trailingContent() },
+            leadingContent = { leadingContent() },
+            content = { mainContent() },
+        )
+    }
+
+    @Composable
+    override fun ContentWrappers(content: @Composable () -> Unit) {
+        MaterialTheme { content() }
+    }
+}
+
+@OptIn(ExperimentalMaterial3ExpressiveApi::class)
+internal class VerticalFloatingAppBarTestCase : LayeredComposeTestCase() {
+    @Composable
+    override fun MeasuredContent() {
+        VerticalFloatingAppBar(
+            expanded = true,
+            modifier = Modifier.fillMaxHeight(),
+            trailingContent = { trailingContent() },
+            leadingContent = { leadingContent() },
+            content = { mainContent() },
+        )
+    }
+
+    @Composable
+    override fun ContentWrappers(content: @Composable () -> Unit) {
+        MaterialTheme { content() }
+    }
+}
+
+@Composable
+private fun trailingContent() {
+    IconButton(onClick = { /* doSomething() */ }) {
+        Icon(Icons.Filled.Check, contentDescription = "Localized description")
+    }
+}
+
+@Composable
+private fun leadingContent() {
+    IconButton(onClick = { /* doSomething() */ }) {
+        Icon(Icons.Filled.Add, contentDescription = "Localized description")
+    }
+}
+
+@Composable
+private fun mainContent() {
+    IconButton(onClick = { /* doSomething() */ }) {
+        Icon(Icons.Filled.Edit, contentDescription = "Localized description")
+    }
+}
diff --git a/compose/material3/material3/api/current.txt b/compose/material3/material3/api/current.txt
index 9e67cb0..a4960cc 100644
--- a/compose/material3/material3/api/current.txt
+++ b/compose/material3/material3/api/current.txt
@@ -1402,7 +1402,7 @@
     method @androidx.compose.runtime.Composable public androidx.compose.material3.TextFieldColors colors();
     method @androidx.compose.runtime.Composable public androidx.compose.material3.TextFieldColors colors(optional long focusedTextColor, optional long unfocusedTextColor, optional long disabledTextColor, optional long errorTextColor, optional long focusedContainerColor, optional long unfocusedContainerColor, optional long disabledContainerColor, optional long errorContainerColor, optional long cursorColor, optional long errorCursorColor, optional androidx.compose.foundation.text.selection.TextSelectionColors? selectionColors, optional long focusedBorderColor, optional long unfocusedBorderColor, optional long disabledBorderColor, optional long errorBorderColor, optional long focusedLeadingIconColor, optional long unfocusedLeadingIconColor, optional long disabledLeadingIconColor, optional long errorLeadingIconColor, optional long focusedTrailingIconColor, optional long unfocusedTrailingIconColor, optional long disabledTrailingIconColor, optional long errorTrailingIconColor, optional long focusedLabelColor, optional long unfocusedLabelColor, optional long disabledLabelColor, optional long errorLabelColor, optional long focusedPlaceholderColor, optional long unfocusedPlaceholderColor, optional long disabledPlaceholderColor, optional long errorPlaceholderColor, optional long focusedSupportingTextColor, optional long unfocusedSupportingTextColor, optional long disabledSupportingTextColor, optional long errorSupportingTextColor, optional long focusedPrefixColor, optional long unfocusedPrefixColor, optional long disabledPrefixColor, optional long errorPrefixColor, optional long focusedSuffixColor, optional long unfocusedSuffixColor, optional long disabledSuffixColor, optional long errorSuffixColor);
     method public androidx.compose.foundation.layout.PaddingValues contentPadding(optional float start, optional float top, optional float end, optional float bottom);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
     method public float getFocusedBorderThickness();
     method public float getMinHeight();
     method public float getMinWidth();
@@ -1417,7 +1417,7 @@
   }
 
   public final class OutlinedTextFieldKt {
-    method @androidx.compose.runtime.Composable public static void OutlinedTextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void OutlinedTextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
     method @androidx.compose.runtime.Composable public static void OutlinedTextField(androidx.compose.ui.text.input.TextFieldValue value, kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.input.TextFieldValue,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
     method @androidx.compose.runtime.Composable public static void OutlinedTextField(String value, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
   }
@@ -2199,7 +2199,7 @@
     method @androidx.compose.runtime.Composable public androidx.compose.material3.TextFieldColors colors(optional long focusedTextColor, optional long unfocusedTextColor, optional long disabledTextColor, optional long errorTextColor, optional long focusedContainerColor, optional long unfocusedContainerColor, optional long disabledContainerColor, optional long errorContainerColor, optional long cursorColor, optional long errorCursorColor, optional androidx.compose.foundation.text.selection.TextSelectionColors? selectionColors, optional long focusedIndicatorColor, optional long unfocusedIndicatorColor, optional long disabledIndicatorColor, optional long errorIndicatorColor, optional long focusedLeadingIconColor, optional long unfocusedLeadingIconColor, optional long disabledLeadingIconColor, optional long errorLeadingIconColor, optional long focusedTrailingIconColor, optional long unfocusedTrailingIconColor, optional long disabledTrailingIconColor, optional long errorTrailingIconColor, optional long focusedLabelColor, optional long unfocusedLabelColor, optional long disabledLabelColor, optional long errorLabelColor, optional long focusedPlaceholderColor, optional long unfocusedPlaceholderColor, optional long disabledPlaceholderColor, optional long errorPlaceholderColor, optional long focusedSupportingTextColor, optional long unfocusedSupportingTextColor, optional long disabledSupportingTextColor, optional long errorSupportingTextColor, optional long focusedPrefixColor, optional long unfocusedPrefixColor, optional long disabledPrefixColor, optional long errorPrefixColor, optional long focusedSuffixColor, optional long unfocusedSuffixColor, optional long disabledSuffixColor, optional long errorSuffixColor);
     method public androidx.compose.foundation.layout.PaddingValues contentPaddingWithLabel(optional float start, optional float end, optional float top, optional float bottom);
     method public androidx.compose.foundation.layout.PaddingValues contentPaddingWithoutLabel(optional float start, optional float top, optional float end, optional float bottom);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
     method @Deprecated @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.Shape getFilledShape();
     method @Deprecated public float getFocusedBorderThickness();
     method public float getFocusedIndicatorThickness();
@@ -2226,7 +2226,7 @@
   }
 
   public final class TextFieldKt {
-    method @androidx.compose.runtime.Composable public static void TextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void TextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
     method @androidx.compose.runtime.Composable public static void TextField(androidx.compose.ui.text.input.TextFieldValue value, kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.input.TextFieldValue,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
     method @androidx.compose.runtime.Composable public static void TextField(String value, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
   }
diff --git a/compose/material3/material3/api/restricted_current.txt b/compose/material3/material3/api/restricted_current.txt
index 9e67cb0..a4960cc 100644
--- a/compose/material3/material3/api/restricted_current.txt
+++ b/compose/material3/material3/api/restricted_current.txt
@@ -1402,7 +1402,7 @@
     method @androidx.compose.runtime.Composable public androidx.compose.material3.TextFieldColors colors();
     method @androidx.compose.runtime.Composable public androidx.compose.material3.TextFieldColors colors(optional long focusedTextColor, optional long unfocusedTextColor, optional long disabledTextColor, optional long errorTextColor, optional long focusedContainerColor, optional long unfocusedContainerColor, optional long disabledContainerColor, optional long errorContainerColor, optional long cursorColor, optional long errorCursorColor, optional androidx.compose.foundation.text.selection.TextSelectionColors? selectionColors, optional long focusedBorderColor, optional long unfocusedBorderColor, optional long disabledBorderColor, optional long errorBorderColor, optional long focusedLeadingIconColor, optional long unfocusedLeadingIconColor, optional long disabledLeadingIconColor, optional long errorLeadingIconColor, optional long focusedTrailingIconColor, optional long unfocusedTrailingIconColor, optional long disabledTrailingIconColor, optional long errorTrailingIconColor, optional long focusedLabelColor, optional long unfocusedLabelColor, optional long disabledLabelColor, optional long errorLabelColor, optional long focusedPlaceholderColor, optional long unfocusedPlaceholderColor, optional long disabledPlaceholderColor, optional long errorPlaceholderColor, optional long focusedSupportingTextColor, optional long unfocusedSupportingTextColor, optional long disabledSupportingTextColor, optional long errorSupportingTextColor, optional long focusedPrefixColor, optional long unfocusedPrefixColor, optional long disabledPrefixColor, optional long errorPrefixColor, optional long focusedSuffixColor, optional long unfocusedSuffixColor, optional long disabledSuffixColor, optional long errorSuffixColor);
     method public androidx.compose.foundation.layout.PaddingValues contentPadding(optional float start, optional float top, optional float end, optional float bottom);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
     method public float getFocusedBorderThickness();
     method public float getMinHeight();
     method public float getMinWidth();
@@ -1417,7 +1417,7 @@
   }
 
   public final class OutlinedTextFieldKt {
-    method @androidx.compose.runtime.Composable public static void OutlinedTextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void OutlinedTextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
     method @androidx.compose.runtime.Composable public static void OutlinedTextField(androidx.compose.ui.text.input.TextFieldValue value, kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.input.TextFieldValue,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
     method @androidx.compose.runtime.Composable public static void OutlinedTextField(String value, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
   }
@@ -2199,7 +2199,7 @@
     method @androidx.compose.runtime.Composable public androidx.compose.material3.TextFieldColors colors(optional long focusedTextColor, optional long unfocusedTextColor, optional long disabledTextColor, optional long errorTextColor, optional long focusedContainerColor, optional long unfocusedContainerColor, optional long disabledContainerColor, optional long errorContainerColor, optional long cursorColor, optional long errorCursorColor, optional androidx.compose.foundation.text.selection.TextSelectionColors? selectionColors, optional long focusedIndicatorColor, optional long unfocusedIndicatorColor, optional long disabledIndicatorColor, optional long errorIndicatorColor, optional long focusedLeadingIconColor, optional long unfocusedLeadingIconColor, optional long disabledLeadingIconColor, optional long errorLeadingIconColor, optional long focusedTrailingIconColor, optional long unfocusedTrailingIconColor, optional long disabledTrailingIconColor, optional long errorTrailingIconColor, optional long focusedLabelColor, optional long unfocusedLabelColor, optional long disabledLabelColor, optional long errorLabelColor, optional long focusedPlaceholderColor, optional long unfocusedPlaceholderColor, optional long disabledPlaceholderColor, optional long errorPlaceholderColor, optional long focusedSupportingTextColor, optional long unfocusedSupportingTextColor, optional long disabledSupportingTextColor, optional long errorSupportingTextColor, optional long focusedPrefixColor, optional long unfocusedPrefixColor, optional long disabledPrefixColor, optional long errorPrefixColor, optional long focusedSuffixColor, optional long unfocusedSuffixColor, optional long disabledSuffixColor, optional long errorSuffixColor);
     method public androidx.compose.foundation.layout.PaddingValues contentPaddingWithLabel(optional float start, optional float end, optional float top, optional float bottom);
     method public androidx.compose.foundation.layout.PaddingValues contentPaddingWithoutLabel(optional float start, optional float top, optional float end, optional float bottom);
-    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
+    method @SuppressCompatibility @androidx.compose.material3.ExperimentalMaterial3Api @androidx.compose.runtime.Composable public androidx.compose.foundation.text.input.TextFieldDecorator decorator(androidx.compose.foundation.text.input.TextFieldState state, boolean enabled, androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, androidx.compose.foundation.interaction.InteractionSource interactionSource, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional kotlin.jvm.functions.Function0<kotlin.Unit> container);
     method @Deprecated @androidx.compose.runtime.Composable public androidx.compose.ui.graphics.Shape getFilledShape();
     method @Deprecated public float getFocusedBorderThickness();
     method public float getFocusedIndicatorThickness();
@@ -2226,7 +2226,7 @@
   }
 
   public final class TextFieldKt {
-    method @androidx.compose.runtime.Composable public static void TextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
+    method @androidx.compose.runtime.Composable public static void TextField(androidx.compose.foundation.text.input.TextFieldState state, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional boolean alwaysMinimizeLabel, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.foundation.text.input.InputTransformation? inputTransformation, optional androidx.compose.foundation.text.input.OutputTransformation? outputTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.input.KeyboardActionHandler? onKeyboardAction, optional androidx.compose.foundation.text.input.TextFieldLineLimits lineLimits, optional kotlin.jvm.functions.Function2<? super androidx.compose.ui.unit.Density,? super kotlin.jvm.functions.Function0<androidx.compose.ui.text.TextLayoutResult?>,kotlin.Unit>? onTextLayout, optional androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors, optional androidx.compose.foundation.layout.PaddingValues contentPadding, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource);
     method @androidx.compose.runtime.Composable public static void TextField(androidx.compose.ui.text.input.TextFieldValue value, kotlin.jvm.functions.Function1<? super androidx.compose.ui.text.input.TextFieldValue,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
     method @androidx.compose.runtime.Composable public static void TextField(String value, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onValueChange, optional androidx.compose.ui.Modifier modifier, optional boolean enabled, optional boolean readOnly, optional androidx.compose.ui.text.TextStyle textStyle, optional kotlin.jvm.functions.Function0<kotlin.Unit>? label, optional kotlin.jvm.functions.Function0<kotlin.Unit>? placeholder, optional kotlin.jvm.functions.Function0<kotlin.Unit>? leadingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? trailingIcon, optional kotlin.jvm.functions.Function0<kotlin.Unit>? prefix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? suffix, optional kotlin.jvm.functions.Function0<kotlin.Unit>? supportingText, optional boolean isError, optional androidx.compose.ui.text.input.VisualTransformation visualTransformation, optional androidx.compose.foundation.text.KeyboardOptions keyboardOptions, optional androidx.compose.foundation.text.KeyboardActions keyboardActions, optional boolean singleLine, optional int maxLines, optional int minLines, optional androidx.compose.foundation.interaction.MutableInteractionSource? interactionSource, optional androidx.compose.ui.graphics.Shape shape, optional androidx.compose.material3.TextFieldColors colors);
   }
diff --git a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TextFieldSamples.kt b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TextFieldSamples.kt
index 61abf46..6e9b7fd 100644
--- a/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TextFieldSamples.kt
+++ b/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TextFieldSamples.kt
@@ -20,6 +20,7 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
@@ -39,6 +40,7 @@
 import androidx.compose.material.icons.filled.Favorite
 import androidx.compose.material.icons.filled.Visibility
 import androidx.compose.material.icons.filled.VisibilityOff
+import androidx.compose.material3.Checkbox
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.Icon
 import androidx.compose.material3.IconButton
@@ -142,26 +144,44 @@
 @Sampled
 @Composable
 fun TextFieldWithPlaceholder() {
-    TextField(
-        state = rememberTextFieldState(),
-        lineLimits = TextFieldLineLimits.SingleLine,
-        label = { Text("Email") },
-        placeholder = { Text("[email protected]") }
-    )
+    var alwaysMinimizeLabel by remember { mutableStateOf(false) }
+    Column {
+        Row {
+            Checkbox(checked = alwaysMinimizeLabel, onCheckedChange = { alwaysMinimizeLabel = it })
+            Text("Show placeholder even when unfocused")
+        }
+        Spacer(Modifier.height(16.dp))
+        TextField(
+            state = rememberTextFieldState(),
+            lineLimits = TextFieldLineLimits.SingleLine,
+            label = { Text("Email") },
+            alwaysMinimizeLabel = alwaysMinimizeLabel,
+            placeholder = { Text("[email protected]") }
+        )
+    }
 }
 
 @Preview
 @Sampled
 @Composable
 fun TextFieldWithPrefixAndSuffix() {
-    TextField(
-        state = rememberTextFieldState(),
-        lineLimits = TextFieldLineLimits.SingleLine,
-        label = { Text("Label") },
-        prefix = { Text("www.") },
-        suffix = { Text(".com") },
-        placeholder = { Text("google") },
-    )
+    var alwaysMinimizeLabel by remember { mutableStateOf(false) }
+    Column {
+        Row {
+            Checkbox(checked = alwaysMinimizeLabel, onCheckedChange = { alwaysMinimizeLabel = it })
+            Text("Show placeholder even when unfocused")
+        }
+        Spacer(Modifier.height(16.dp))
+        TextField(
+            state = rememberTextFieldState(),
+            lineLimits = TextFieldLineLimits.SingleLine,
+            label = { Text("Label") },
+            alwaysMinimizeLabel = alwaysMinimizeLabel,
+            prefix = { Text("www.") },
+            suffix = { Text(".com") },
+            placeholder = { Text("google") },
+        )
+    }
 }
 
 @Preview
diff --git a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldScreenshotTest.kt b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldScreenshotTest.kt
index 6f20f08..32e7efe 100644
--- a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldScreenshotTest.kt
+++ b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldScreenshotTest.kt
@@ -593,6 +593,35 @@
     }
 
     @Test
+    fun outlinedTextField_alwaysMinimizeLabel_noPlaceholder() {
+        rule.setMaterialContent(lightColorScheme()) {
+            OutlinedTextField(
+                state = rememberTextFieldState(),
+                modifier = Modifier.testTag(TextFieldTag),
+                label = { Text("Label") },
+                alwaysMinimizeLabel = true,
+            )
+        }
+
+        assertAgainstGolden("outlinedTextField_alwaysMinimizeLabel_noPlaceholder")
+    }
+
+    @Test
+    fun outlinedTextField_alwaysMinimizeLabel_withPlaceholder() {
+        rule.setMaterialContent(lightColorScheme()) {
+            OutlinedTextField(
+                state = rememberTextFieldState(),
+                modifier = Modifier.testTag(TextFieldTag),
+                label = { Text("Label") },
+                alwaysMinimizeLabel = true,
+                placeholder = { Text("Placeholder") },
+            )
+        }
+
+        assertAgainstGolden("outlinedTextField_alwaysMinimizeLabel_withPlaceholder")
+    }
+
+    @Test
     fun outlinedTextField_prefixSuffix_withLabelAndInput() {
         rule.setMaterialContent(lightColorScheme()) {
             OutlinedTextField(
diff --git a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt
index b5d1385..db825fd 100644
--- a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt
+++ b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/OutlinedTextFieldTest.kt
@@ -77,6 +77,7 @@
 import androidx.compose.ui.test.SemanticsMatcher
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.assertIsNotDisplayed
 import androidx.compose.ui.test.assertWidthIsEqualTo
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.click
@@ -897,6 +898,53 @@
     }
 
     @Test
+    fun testOutlinedTextField_prefixAndSuffixAndPlaceholder_areNotDisplayed_withLabel_ifLabelCanExpand() {
+        val labelText = "Label"
+        val prefixText = "Prefix"
+        val suffixText = "Suffix"
+        val placeholderText = "Placeholder"
+        rule.setMaterialContent(lightColorScheme()) {
+            OutlinedTextField(
+                state = rememberTextFieldState(),
+                label = { Text(labelText) },
+                prefix = { Text(prefixText) },
+                suffix = { Text(suffixText) },
+                placeholder = { Text(placeholderText) },
+                alwaysMinimizeLabel = false,
+            )
+        }
+
+        rule.onNodeWithText(labelText).assertIsDisplayed()
+
+        rule.onNodeWithText(prefixText).assertIsNotDisplayed()
+        rule.onNodeWithText(suffixText).assertIsNotDisplayed()
+        rule.onNodeWithText(placeholderText).assertIsNotDisplayed()
+    }
+
+    @Test
+    fun testOutlinedTextField_prefixAndSuffixAndPlaceholder_areDisplayed_withLabel_ifLabelCannotExpand() {
+        val labelText = "Label"
+        val prefixText = "Prefix"
+        val suffixText = "Suffix"
+        val placeholderText = "Placeholder"
+        rule.setMaterialContent(lightColorScheme()) {
+            OutlinedTextField(
+                state = rememberTextFieldState(),
+                label = { Text(labelText) },
+                prefix = { Text(prefixText) },
+                suffix = { Text(suffixText) },
+                placeholder = { Text(placeholderText) },
+                alwaysMinimizeLabel = true,
+            )
+        }
+
+        rule.onNodeWithText(labelText).assertIsDisplayed()
+        rule.onNodeWithText(prefixText).assertIsDisplayed()
+        rule.onNodeWithText(suffixText).assertIsDisplayed()
+        rule.onNodeWithText(placeholderText).assertIsDisplayed()
+    }
+
+    @Test
     fun testOutlinedTextField_prefixAndSuffixPosition_withLabel() {
         val textFieldWidth = 300.dp
         val prefixPosition = Ref<Offset>()
diff --git a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldScreenshotTest.kt b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldScreenshotTest.kt
index 5e44ee9..f38d737 100644
--- a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldScreenshotTest.kt
+++ b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldScreenshotTest.kt
@@ -559,6 +559,35 @@
     }
 
     @Test
+    fun textField_alwaysMinimizeLabel_noPlaceholder() {
+        rule.setMaterialContent(lightColorScheme()) {
+            TextField(
+                state = rememberTextFieldState(),
+                modifier = Modifier.testTag(TextFieldTag),
+                label = { Text("Label") },
+                alwaysMinimizeLabel = true,
+            )
+        }
+
+        assertAgainstGolden("textField_alwaysMinimizeLabel_noPlaceholder")
+    }
+
+    @Test
+    fun textField_alwaysMinimizeLabel_withPlaceholder() {
+        rule.setMaterialContent(lightColorScheme()) {
+            TextField(
+                state = rememberTextFieldState(),
+                modifier = Modifier.testTag(TextFieldTag),
+                label = { Text("Label") },
+                alwaysMinimizeLabel = true,
+                placeholder = { Text("Placeholder") },
+            )
+        }
+
+        assertAgainstGolden("textField_alwaysMinimizeLabel_withPlaceholder")
+    }
+
+    @Test
     fun textField_prefixSuffix_withLabelAndInput() {
         rule.setMaterialContent(lightColorScheme()) {
             TextField(
diff --git a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldTest.kt b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldTest.kt
index a5069cf..4f290a9 100644
--- a/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldTest.kt
+++ b/compose/material3/material3/src/androidInstrumentedTest/kotlin/androidx/compose/material3/TextFieldTest.kt
@@ -89,6 +89,7 @@
 import androidx.compose.ui.test.assert
 import androidx.compose.ui.test.assertHeightIsEqualTo
 import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.assertIsNotDisplayed
 import androidx.compose.ui.test.assertWidthIsEqualTo
 import androidx.compose.ui.test.captureToImage
 import androidx.compose.ui.test.click
@@ -917,6 +918,53 @@
     }
 
     @Test
+    fun testTextField_prefixAndSuffixAndPlaceholder_areNotDisplayed_withLabel_ifLabelCanExpand() {
+        val labelText = "Label"
+        val prefixText = "Prefix"
+        val suffixText = "Suffix"
+        val placeholderText = "Placeholder"
+        rule.setMaterialContent(lightColorScheme()) {
+            TextField(
+                state = rememberTextFieldState(),
+                label = { Text(labelText) },
+                prefix = { Text(prefixText) },
+                suffix = { Text(suffixText) },
+                placeholder = { Text(placeholderText) },
+                alwaysMinimizeLabel = false,
+            )
+        }
+
+        rule.onNodeWithText(labelText).assertIsDisplayed()
+
+        rule.onNodeWithText(prefixText).assertIsNotDisplayed()
+        rule.onNodeWithText(suffixText).assertIsNotDisplayed()
+        rule.onNodeWithText(placeholderText).assertIsNotDisplayed()
+    }
+
+    @Test
+    fun testTextField_prefixAndSuffixAndPlaceholder_areDisplayed_withLabel_ifLabelCannotExpand() {
+        val labelText = "Label"
+        val prefixText = "Prefix"
+        val suffixText = "Suffix"
+        val placeholderText = "Placeholder"
+        rule.setMaterialContent(lightColorScheme()) {
+            TextField(
+                state = rememberTextFieldState(),
+                label = { Text(labelText) },
+                prefix = { Text(prefixText) },
+                suffix = { Text(suffixText) },
+                placeholder = { Text(placeholderText) },
+                alwaysMinimizeLabel = true,
+            )
+        }
+
+        rule.onNodeWithText(labelText).assertIsDisplayed()
+        rule.onNodeWithText(prefixText).assertIsDisplayed()
+        rule.onNodeWithText(suffixText).assertIsDisplayed()
+        rule.onNodeWithText(placeholderText).assertIsDisplayed()
+    }
+
+    @Test
     fun testTextField_prefixAndSuffixPosition_withLabel() {
         val prefixPosition = Ref<Offset>()
         val prefixSize = MinTextLineHeight
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
index 4d4d865..a628d71 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/ListItem.kt
@@ -21,6 +21,7 @@
 import androidx.compose.foundation.layout.padding
 import androidx.compose.material3.internal.ProvideContentColorTextStyle
 import androidx.compose.material3.internal.heightOrZero
+import androidx.compose.material3.internal.subtractConstraintSafely
 import androidx.compose.material3.internal.widthOrZero
 import androidx.compose.material3.tokens.ListTokens
 import androidx.compose.material3.tokens.TypographyKeyTokens
@@ -769,10 +770,3 @@
         ListItemType.ThreeLine -> ListItemThreeLineVerticalPadding
         else -> ListItemVerticalPadding
     }
-
-private fun Int.subtractConstraintSafely(n: Int): Int {
-    if (this == Constraints.Infinity) {
-        return this
-    }
-    return this - n
-}
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt
index d2affed..fc461d4 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/OutlinedTextField.kt
@@ -56,11 +56,11 @@
 import androidx.compose.material3.internal.SupportingId
 import androidx.compose.material3.internal.TextFieldId
 import androidx.compose.material3.internal.TrailingId
-import androidx.compose.material3.internal.ZeroConstraints
 import androidx.compose.material3.internal.defaultErrorSemantics
 import androidx.compose.material3.internal.getString
 import androidx.compose.material3.internal.heightOrZero
 import androidx.compose.material3.internal.layoutId
+import androidx.compose.material3.internal.subtractConstraintSafely
 import androidx.compose.material3.internal.widthOrZero
 import androidx.compose.material3.tokens.TypeScaleTokens
 import androidx.compose.runtime.Composable
@@ -135,9 +135,12 @@
  *   be modified. However, a user can focus it and copy text from it. Read-only text fields are
  *   usually used to display pre-filled forms that a user cannot edit.
  * @param textStyle the style to be applied to the input text. Defaults to [LocalTextStyle].
+ * @param alwaysMinimizeLabel whether to always minimize the label of this text field. Defaults to
+ *   `false`, so the label will expand to occupy the input area when the text field is unfocused and
+ *   empty. When `true`, this allows displaying the [placeholder], [prefix], and [suffix] alongside
+ *   the [label] when the text field is unfocused and empty.
  * @param label the optional label to be displayed with this text field. The default text style uses
- *   [Typography.bodySmall] when the text field is in focus and [Typography.bodyLarge] when the text
- *   field is not in focus.
+ *   [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
  * @param placeholder the optional placeholder to be displayed when the input text is empty. The
  *   default text style uses [Typography.bodyLarge].
  * @param leadingIcon the optional leading icon to be displayed at the beginning of the text field
@@ -198,6 +201,7 @@
     enabled: Boolean = true,
     readOnly: Boolean = false,
     textStyle: TextStyle = LocalTextStyle.current,
+    alwaysMinimizeLabel: Boolean = false,
     label: @Composable (() -> Unit)? = null,
     placeholder: @Composable (() -> Unit)? = null,
     leadingIcon: @Composable (() -> Unit)? = null,
@@ -270,6 +274,7 @@
                     lineLimits = lineLimits,
                     outputTransformation = outputTransformation,
                     interactionSource = interactionSource,
+                    alwaysMinimizeLabel = alwaysMinimizeLabel,
                     label = label,
                     placeholder = placeholder,
                     leadingIcon = leadingIcon,
@@ -320,9 +325,8 @@
  *   be modified. However, a user can focus it and copy text from it. Read-only text fields are
  *   usually used to display pre-filled forms that a user cannot edit.
  * @param textStyle the style to be applied to the input text. Defaults to [LocalTextStyle].
- * @param label the optional label to be displayed inside the text field container. The default text
- *   style for internal [Text] is [Typography.bodySmall] when the text field is in focus and
- *   [Typography.bodyLarge] when the text field is not in focus
+ * @param label the optional label to be displayed with this text field. The default text style uses
+ *   [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
  * @param placeholder the optional placeholder to be displayed when the text field is in focus and
  *   the input text is empty. The default text style for internal [Text] is [Typography.bodyLarge]
  * @param leadingIcon the optional leading icon to be displayed at the beginning of the text field
@@ -491,9 +495,8 @@
  *   be modified. However, a user can focus it and copy text from it. Read-only text fields are
  *   usually used to display pre-filled forms that a user cannot edit.
  * @param textStyle the style to be applied to the input text. Defaults to [LocalTextStyle].
- * @param label the optional label to be displayed inside the text field container. The default text
- *   style for internal [Text] is [Typography.bodySmall] when the text field is in focus and
- *   [Typography.bodyLarge] when the text field is not in focus
+ * @param label the optional label to be displayed with this text field. The default text style uses
+ *   [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
  * @param placeholder the optional placeholder to be displayed when the text field is in focus and
  *   the input text is empty. The default text style for internal [Text] is [Typography.bodyLarge]
  * @param leadingIcon the optional leading icon to be displayed at the beginning of the text field
@@ -651,18 +654,18 @@
     prefix: @Composable (() -> Unit)?,
     suffix: @Composable (() -> Unit)?,
     singleLine: Boolean,
-    animationProgress: Float,
+    labelProgress: Float,
     onLabelMeasured: (Size) -> Unit,
     container: @Composable () -> Unit,
     supporting: @Composable (() -> Unit)?,
     paddingValues: PaddingValues
 ) {
     val measurePolicy =
-        remember(onLabelMeasured, singleLine, animationProgress, paddingValues) {
+        remember(onLabelMeasured, singleLine, labelProgress, paddingValues) {
             OutlinedTextFieldMeasurePolicy(
                 onLabelMeasured,
                 singleLine,
-                animationProgress,
+                labelProgress,
                 paddingValues
             )
         }
@@ -748,12 +751,7 @@
             if (label != null) {
                 Box(
                     Modifier.heightIn(
-                            min =
-                                lerp(
-                                    MinTextLineHeight,
-                                    MinFocusedLabelLineHeight,
-                                    animationProgress
-                                )
+                            min = lerp(MinTextLineHeight, MinFocusedLabelLineHeight, labelProgress)
                         )
                         .wrapContentHeight()
                         .layoutId(LabelId)
@@ -780,7 +778,7 @@
 private class OutlinedTextFieldMeasurePolicy(
     private val onLabelMeasured: (Size) -> Unit,
     private val singleLine: Boolean,
-    private val animationProgress: Float,
+    private val labelProgress: Float,
     private val paddingValues: PaddingValues
 ) : MeasurePolicy {
     override fun MeasureScope.measure(
@@ -796,32 +794,32 @@
         // measure leading icon
         val leadingPlaceable =
             measurables.fastFirstOrNull { it.layoutId == LeadingId }?.measure(relaxedConstraints)
-        occupiedSpaceHorizontally += widthOrZero(leadingPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(leadingPlaceable))
+        occupiedSpaceHorizontally += leadingPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, leadingPlaceable.heightOrZero)
 
         // measure trailing icon
         val trailingPlaceable =
             measurables
                 .fastFirstOrNull { it.layoutId == TrailingId }
                 ?.measure(relaxedConstraints.offset(horizontal = -occupiedSpaceHorizontally))
-        occupiedSpaceHorizontally += widthOrZero(trailingPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(trailingPlaceable))
+        occupiedSpaceHorizontally += trailingPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, trailingPlaceable.heightOrZero)
 
         // measure prefix
         val prefixPlaceable =
             measurables
                 .fastFirstOrNull { it.layoutId == PrefixId }
                 ?.measure(relaxedConstraints.offset(horizontal = -occupiedSpaceHorizontally))
-        occupiedSpaceHorizontally += widthOrZero(prefixPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(prefixPlaceable))
+        occupiedSpaceHorizontally += prefixPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, prefixPlaceable.heightOrZero)
 
         // measure suffix
         val suffixPlaceable =
             measurables
                 .fastFirstOrNull { it.layoutId == SuffixId }
                 ?.measure(relaxedConstraints.offset(horizontal = -occupiedSpaceHorizontally))
-        occupiedSpaceHorizontally += widthOrZero(suffixPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(suffixPlaceable))
+        occupiedSpaceHorizontally += suffixPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, suffixPlaceable.heightOrZero)
 
         // measure label
         val labelHorizontalPaddingOffset =
@@ -834,7 +832,7 @@
                         -occupiedSpaceHorizontally -
                             labelHorizontalPaddingOffset, // label in middle
                         -labelHorizontalPaddingOffset, // label at top
-                        animationProgress,
+                        labelProgress,
                     ),
                 vertical = -bottomPadding
             )
@@ -852,7 +850,7 @@
 
         // measure text field
         val topPadding =
-            max(heightOrZero(labelPlaceable) / 2, paddingValues.calculateTopPadding().roundToPx())
+            max(labelPlaceable.heightOrZero / 2, paddingValues.calculateTopPadding().roundToPx())
         val textConstraints =
             constraints
                 .offset(
@@ -873,24 +871,21 @@
         occupiedSpaceVertically =
             max(
                 occupiedSpaceVertically,
-                max(heightOrZero(textFieldPlaceable), heightOrZero(placeholderPlaceable)) +
+                max(textFieldPlaceable.heightOrZero, placeholderPlaceable.heightOrZero) +
                     topPadding +
                     bottomPadding
             )
 
         val width =
             calculateWidth(
-                leadingPlaceableWidth = widthOrZero(leadingPlaceable),
-                trailingPlaceableWidth = widthOrZero(trailingPlaceable),
-                prefixPlaceableWidth = widthOrZero(prefixPlaceable),
-                suffixPlaceableWidth = widthOrZero(suffixPlaceable),
+                leadingPlaceableWidth = leadingPlaceable.widthOrZero,
+                trailingPlaceableWidth = trailingPlaceable.widthOrZero,
+                prefixPlaceableWidth = prefixPlaceable.widthOrZero,
+                suffixPlaceableWidth = suffixPlaceable.widthOrZero,
                 textFieldPlaceableWidth = textFieldPlaceable.width,
-                labelPlaceableWidth = widthOrZero(labelPlaceable),
-                placeholderPlaceableWidth = widthOrZero(placeholderPlaceable),
-                animationProgress = animationProgress,
+                labelPlaceableWidth = labelPlaceable.widthOrZero,
+                placeholderPlaceableWidth = placeholderPlaceable.widthOrZero,
                 constraints = constraints,
-                density = density,
-                paddingValues = paddingValues,
             )
 
         // measure supporting text
@@ -899,22 +894,19 @@
                 .offset(vertical = -occupiedSpaceVertically)
                 .copy(minHeight = 0, maxWidth = width)
         val supportingPlaceable = supportingMeasurable?.measure(supportingConstraints)
-        val supportingHeight = heightOrZero(supportingPlaceable)
+        val supportingHeight = supportingPlaceable.heightOrZero
 
         val totalHeight =
             calculateHeight(
-                leadingHeight = heightOrZero(leadingPlaceable),
-                trailingHeight = heightOrZero(trailingPlaceable),
-                prefixHeight = heightOrZero(prefixPlaceable),
-                suffixHeight = heightOrZero(suffixPlaceable),
+                leadingHeight = leadingPlaceable.heightOrZero,
+                trailingHeight = trailingPlaceable.heightOrZero,
+                prefixHeight = prefixPlaceable.heightOrZero,
+                suffixHeight = suffixPlaceable.heightOrZero,
                 textFieldHeight = textFieldPlaceable.height,
-                labelHeight = heightOrZero(labelPlaceable),
-                placeholderHeight = heightOrZero(placeholderPlaceable),
-                supportingHeight = heightOrZero(supportingPlaceable),
-                animationProgress = animationProgress,
+                labelHeight = labelPlaceable.heightOrZero,
+                placeholderHeight = placeholderPlaceable.heightOrZero,
+                supportingHeight = supportingPlaceable.heightOrZero,
                 constraints = constraints,
-                density = density,
-                paddingValues = paddingValues,
             )
         val height = totalHeight - supportingHeight
 
@@ -942,11 +934,8 @@
                 placeholderPlaceable = placeholderPlaceable,
                 containerPlaceable = containerPlaceable,
                 supportingPlaceable = supportingPlaceable,
-                animationProgress = animationProgress,
-                singleLine = singleLine,
                 density = density,
                 layoutDirection = layoutDirection,
-                paddingValues = paddingValues,
             )
         }
     }
@@ -1026,10 +1015,7 @@
             textFieldPlaceableWidth = textFieldWidth,
             labelPlaceableWidth = labelWidth,
             placeholderPlaceableWidth = placeholderWidth,
-            animationProgress = animationProgress,
-            constraints = ZeroConstraints,
-            density = density,
-            paddingValues = paddingValues,
+            constraints = Constraints(),
         )
     }
 
@@ -1044,7 +1030,7 @@
                 .fastFirstOrNull { it.layoutId == LeadingId }
                 ?.let {
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     intrinsicMeasurer(it, width)
@@ -1054,7 +1040,7 @@
                 .fastFirstOrNull { it.layoutId == TrailingId }
                 ?.let {
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     intrinsicMeasurer(it, width)
@@ -1063,7 +1049,7 @@
         val labelHeight =
             measurables
                 .fastFirstOrNull { it.layoutId == LabelId }
-                ?.let { intrinsicMeasurer(it, lerp(remainingWidth, width, animationProgress)) } ?: 0
+                ?.let { intrinsicMeasurer(it, lerp(remainingWidth, width, labelProgress)) } ?: 0
 
         val prefixHeight =
             measurables
@@ -1071,7 +1057,7 @@
                 ?.let {
                     val height = intrinsicMeasurer(it, remainingWidth)
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     height
@@ -1082,7 +1068,7 @@
                 ?.let {
                     val height = intrinsicMeasurer(it, remainingWidth)
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     height
@@ -1110,198 +1096,182 @@
             labelHeight = labelHeight,
             placeholderHeight = placeholderHeight,
             supportingHeight = supportingHeight,
-            animationProgress = animationProgress,
-            constraints = ZeroConstraints,
-            density = density,
-            paddingValues = paddingValues
+            constraints = Constraints(),
         )
     }
-}
 
-private fun Int.substractConstraintSafely(from: Int): Int {
-    if (this == Constraints.Infinity) {
-        return this
+    /**
+     * Calculate the width of the [OutlinedTextField] given all elements that should be placed
+     * inside.
+     */
+    private fun Density.calculateWidth(
+        leadingPlaceableWidth: Int,
+        trailingPlaceableWidth: Int,
+        prefixPlaceableWidth: Int,
+        suffixPlaceableWidth: Int,
+        textFieldPlaceableWidth: Int,
+        labelPlaceableWidth: Int,
+        placeholderPlaceableWidth: Int,
+        constraints: Constraints,
+    ): Int {
+        val affixTotalWidth = prefixPlaceableWidth + suffixPlaceableWidth
+        val middleSection =
+            maxOf(
+                textFieldPlaceableWidth + affixTotalWidth,
+                placeholderPlaceableWidth + affixTotalWidth,
+                // Prefix/suffix does not get applied to label
+                lerp(labelPlaceableWidth, 0, labelProgress),
+            )
+        val wrappedWidth = leadingPlaceableWidth + middleSection + trailingPlaceableWidth
+
+        // Actual LayoutDirection doesn't matter; we only need the sum
+        val labelHorizontalPadding =
+            (paddingValues.calculateLeftPadding(LayoutDirection.Ltr) +
+                    paddingValues.calculateRightPadding(LayoutDirection.Ltr))
+                .toPx()
+        val focusedLabelWidth =
+            ((labelPlaceableWidth + labelHorizontalPadding) * labelProgress).roundToInt()
+        return maxOf(wrappedWidth, focusedLabelWidth, constraints.minWidth)
     }
-    return this - from
-}
 
-/**
- * Calculate the width of the [OutlinedTextField] given all elements that should be placed inside.
- */
-private fun calculateWidth(
-    leadingPlaceableWidth: Int,
-    trailingPlaceableWidth: Int,
-    prefixPlaceableWidth: Int,
-    suffixPlaceableWidth: Int,
-    textFieldPlaceableWidth: Int,
-    labelPlaceableWidth: Int,
-    placeholderPlaceableWidth: Int,
-    animationProgress: Float,
-    constraints: Constraints,
-    density: Float,
-    paddingValues: PaddingValues,
-): Int {
-    val affixTotalWidth = prefixPlaceableWidth + suffixPlaceableWidth
-    val middleSection =
-        maxOf(
-            textFieldPlaceableWidth + affixTotalWidth,
-            placeholderPlaceableWidth + affixTotalWidth,
-            // Prefix/suffix does not get applied to label
-            lerp(labelPlaceableWidth, 0, animationProgress),
+    /**
+     * Calculate the height of the [OutlinedTextField] given all elements that should be placed
+     * inside. This includes the supporting text, if it exists, even though this element is not
+     * "visually" inside the text field.
+     */
+    private fun Density.calculateHeight(
+        leadingHeight: Int,
+        trailingHeight: Int,
+        prefixHeight: Int,
+        suffixHeight: Int,
+        textFieldHeight: Int,
+        labelHeight: Int,
+        placeholderHeight: Int,
+        supportingHeight: Int,
+        constraints: Constraints,
+    ): Int {
+        val inputFieldHeight =
+            maxOf(
+                textFieldHeight,
+                placeholderHeight,
+                prefixHeight,
+                suffixHeight,
+                lerp(labelHeight, 0, labelProgress)
+            )
+        val topPadding = paddingValues.calculateTopPadding().toPx()
+        val actualTopPadding = lerp(topPadding, max(topPadding, labelHeight / 2f), labelProgress)
+        val bottomPadding = paddingValues.calculateBottomPadding().toPx()
+        val middleSectionHeight = actualTopPadding + inputFieldHeight + bottomPadding
+
+        return max(
+            constraints.minHeight,
+            maxOf(leadingHeight, trailingHeight, middleSectionHeight.roundToInt()) +
+                supportingHeight
         )
-    val wrappedWidth = leadingPlaceableWidth + middleSection + trailingPlaceableWidth
+    }
 
-    // Actual LayoutDirection doesn't matter; we only need the sum
-    val labelHorizontalPadding =
-        (paddingValues.calculateLeftPadding(LayoutDirection.Ltr) +
-                paddingValues.calculateRightPadding(LayoutDirection.Ltr))
-            .value * density
-    val focusedLabelWidth =
-        ((labelPlaceableWidth + labelHorizontalPadding) * animationProgress).roundToInt()
-    return maxOf(wrappedWidth, focusedLabelWidth, constraints.minWidth)
-}
+    /**
+     * Places the provided text field, placeholder, label, optional leading and trailing icons
+     * inside the [OutlinedTextField]
+     */
+    private fun Placeable.PlacementScope.place(
+        totalHeight: Int,
+        width: Int,
+        leadingPlaceable: Placeable?,
+        trailingPlaceable: Placeable?,
+        prefixPlaceable: Placeable?,
+        suffixPlaceable: Placeable?,
+        textFieldPlaceable: Placeable,
+        labelPlaceable: Placeable?,
+        placeholderPlaceable: Placeable?,
+        containerPlaceable: Placeable,
+        supportingPlaceable: Placeable?,
+        density: Float,
+        layoutDirection: LayoutDirection,
+    ) {
+        // place container
+        containerPlaceable.place(IntOffset.Zero)
 
-/**
- * Calculate the height of the [OutlinedTextField] given all elements that should be placed inside.
- * This includes the supporting text, if it exists, even though this element is not "visually"
- * inside the text field.
- */
-private fun calculateHeight(
-    leadingHeight: Int,
-    trailingHeight: Int,
-    prefixHeight: Int,
-    suffixHeight: Int,
-    textFieldHeight: Int,
-    labelHeight: Int,
-    placeholderHeight: Int,
-    supportingHeight: Int,
-    animationProgress: Float,
-    constraints: Constraints,
-    density: Float,
-    paddingValues: PaddingValues
-): Int {
-    val inputFieldHeight =
-        maxOf(
-            textFieldHeight,
-            placeholderHeight,
-            prefixHeight,
-            suffixHeight,
-            lerp(labelHeight, 0, animationProgress)
+        // Most elements should be positioned w.r.t the text field's "visual" height, i.e.,
+        // excluding
+        // the supporting text on bottom
+        val height = totalHeight - supportingPlaceable.heightOrZero
+        val topPadding = (paddingValues.calculateTopPadding().value * density).roundToInt()
+        val startPadding =
+            (paddingValues.calculateStartPadding(layoutDirection).value * density).roundToInt()
+
+        val iconPadding = HorizontalIconPadding.value * density
+
+        // placed center vertically and to the start edge horizontally
+        leadingPlaceable?.placeRelative(
+            0,
+            Alignment.CenterVertically.align(leadingPlaceable.height, height)
         )
-    val topPadding = paddingValues.calculateTopPadding().value * density
-    val actualTopPadding = lerp(topPadding, max(topPadding, labelHeight / 2f), animationProgress)
-    val bottomPadding = paddingValues.calculateBottomPadding().value * density
-    val middleSectionHeight = actualTopPadding + inputFieldHeight + bottomPadding
 
-    return max(
-        constraints.minHeight,
-        maxOf(leadingHeight, trailingHeight, middleSectionHeight.roundToInt()) + supportingHeight
-    )
-}
-
-/**
- * Places the provided text field, placeholder, label, optional leading and trailing icons inside
- * the [OutlinedTextField]
- */
-private fun Placeable.PlacementScope.place(
-    totalHeight: Int,
-    width: Int,
-    leadingPlaceable: Placeable?,
-    trailingPlaceable: Placeable?,
-    prefixPlaceable: Placeable?,
-    suffixPlaceable: Placeable?,
-    textFieldPlaceable: Placeable,
-    labelPlaceable: Placeable?,
-    placeholderPlaceable: Placeable?,
-    containerPlaceable: Placeable,
-    supportingPlaceable: Placeable?,
-    animationProgress: Float,
-    singleLine: Boolean,
-    density: Float,
-    layoutDirection: LayoutDirection,
-    paddingValues: PaddingValues
-) {
-    // place container
-    containerPlaceable.place(IntOffset.Zero)
-
-    // Most elements should be positioned w.r.t the text field's "visual" height, i.e., excluding
-    // the supporting text on bottom
-    val height = totalHeight - heightOrZero(supportingPlaceable)
-    val topPadding = (paddingValues.calculateTopPadding().value * density).roundToInt()
-    val startPadding =
-        (paddingValues.calculateStartPadding(layoutDirection).value * density).roundToInt()
-
-    val iconPadding = HorizontalIconPadding.value * density
-
-    // placed center vertically and to the start edge horizontally
-    leadingPlaceable?.placeRelative(
-        0,
-        Alignment.CenterVertically.align(leadingPlaceable.height, height)
-    )
-
-    // label position is animated
-    // in single line text field, label is centered vertically before animation starts
-    labelPlaceable?.let {
-        val startPositionY =
-            if (singleLine) {
-                Alignment.CenterVertically.align(it.height, height)
-            } else {
-                topPadding
-            }
-        val positionY = lerp(startPositionY, -(it.height / 2), animationProgress)
-        val positionX =
-            (if (leadingPlaceable == null) {
-                    0f
+        // label position is animated
+        // in single line text field, label is centered vertically before animation starts
+        labelPlaceable?.let {
+            val startPositionY =
+                if (singleLine) {
+                    Alignment.CenterVertically.align(it.height, height)
                 } else {
-                    (widthOrZero(leadingPlaceable) - iconPadding) * (1 - animationProgress)
-                })
-                .roundToInt() + startPadding
-        it.placeRelative(positionX, positionY)
-    }
+                    topPadding
+                }
+            val positionY = lerp(startPositionY, -(it.height / 2), labelProgress)
+            val positionX =
+                (if (leadingPlaceable == null) {
+                        0f
+                    } else {
+                        (leadingPlaceable.widthOrZero - iconPadding) * (1 - labelProgress)
+                    })
+                    .roundToInt() + startPadding
+            it.placeRelative(positionX, positionY)
+        }
 
-    // Single line text fields have text components centered vertically.
-    // Multiline text fields have text components aligned to top with padding.
-    fun calculateVerticalPosition(placeable: Placeable): Int =
-        max(
-            if (singleLine) {
-                Alignment.CenterVertically.align(placeable.height, height)
-            } else {
-                topPadding
-            },
-            heightOrZero(labelPlaceable) / 2
+        // Single line text fields have text components centered vertically.
+        // Multiline text fields have text components aligned to top with padding.
+        fun calculateVerticalPosition(placeable: Placeable): Int =
+            max(
+                if (singleLine) {
+                    Alignment.CenterVertically.align(placeable.height, height)
+                } else {
+                    topPadding
+                },
+                labelPlaceable.heightOrZero / 2
+            )
+
+        prefixPlaceable?.placeRelative(
+            leadingPlaceable.widthOrZero,
+            calculateVerticalPosition(prefixPlaceable)
         )
 
-    prefixPlaceable?.placeRelative(
-        widthOrZero(leadingPlaceable),
-        calculateVerticalPosition(prefixPlaceable)
-    )
+        val textHorizontalPosition = leadingPlaceable.widthOrZero + prefixPlaceable.widthOrZero
 
-    val textHorizontalPosition = widthOrZero(leadingPlaceable) + widthOrZero(prefixPlaceable)
+        textFieldPlaceable.placeRelative(
+            textHorizontalPosition,
+            calculateVerticalPosition(textFieldPlaceable)
+        )
 
-    textFieldPlaceable.placeRelative(
-        textHorizontalPosition,
-        calculateVerticalPosition(textFieldPlaceable)
-    )
+        // placed similar to the input text above
+        placeholderPlaceable?.placeRelative(
+            textHorizontalPosition,
+            calculateVerticalPosition(placeholderPlaceable)
+        )
 
-    // placed similar to the input text above
-    placeholderPlaceable?.placeRelative(
-        textHorizontalPosition,
-        calculateVerticalPosition(placeholderPlaceable)
-    )
+        suffixPlaceable?.placeRelative(
+            width - trailingPlaceable.widthOrZero - suffixPlaceable.width,
+            calculateVerticalPosition(suffixPlaceable)
+        )
 
-    suffixPlaceable?.placeRelative(
-        width - widthOrZero(trailingPlaceable) - suffixPlaceable.width,
-        calculateVerticalPosition(suffixPlaceable)
-    )
+        // placed center vertically and to the end edge horizontally
+        trailingPlaceable?.placeRelative(
+            width - trailingPlaceable.width,
+            Alignment.CenterVertically.align(trailingPlaceable.height, height)
+        )
 
-    // placed center vertically and to the end edge horizontally
-    trailingPlaceable?.placeRelative(
-        width - trailingPlaceable.width,
-        Alignment.CenterVertically.align(trailingPlaceable.height, height)
-    )
-
-    // place supporting text
-    supportingPlaceable?.placeRelative(0, height)
+        // place supporting text
+        supportingPlaceable?.placeRelative(0, height)
+    }
 }
 
 internal fun Modifier.outlineCutout(labelSize: () -> Size, paddingValues: PaddingValues) =
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt
index b3e6fed..5a0242c 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextField.kt
@@ -58,11 +58,11 @@
 import androidx.compose.material3.internal.TextFieldId
 import androidx.compose.material3.internal.TextFieldLabelExtraPadding
 import androidx.compose.material3.internal.TrailingId
-import androidx.compose.material3.internal.ZeroConstraints
 import androidx.compose.material3.internal.defaultErrorSemantics
 import androidx.compose.material3.internal.getString
 import androidx.compose.material3.internal.heightOrZero
 import androidx.compose.material3.internal.layoutId
+import androidx.compose.material3.internal.subtractConstraintSafely
 import androidx.compose.material3.internal.widthOrZero
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
@@ -168,9 +168,12 @@
  *   be modified. However, a user can focus it and copy text from it. Read-only text fields are
  *   usually used to display pre-filled forms that a user cannot edit.
  * @param textStyle the style to be applied to the input text. Defaults to [LocalTextStyle].
+ * @param alwaysMinimizeLabel whether to always minimize the label of this text field. Defaults to
+ *   `false`, so the label will expand to occupy the input area when the text field is unfocused and
+ *   empty. When `true`, this allows displaying the [placeholder], [prefix], and [suffix] alongside
+ *   the [label] when the text field is unfocused and empty.
  * @param label the optional label to be displayed with this text field. The default text style uses
- *   [Typography.bodySmall] when the text field is in focus and [Typography.bodyLarge] when the text
- *   field is not in focus.
+ *   [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
  * @param placeholder the optional placeholder to be displayed when the input text is empty. The
  *   default text style uses [Typography.bodyLarge].
  * @param leadingIcon the optional leading icon to be displayed at the beginning of the text field
@@ -231,6 +234,7 @@
     enabled: Boolean = true,
     readOnly: Boolean = false,
     textStyle: TextStyle = LocalTextStyle.current,
+    alwaysMinimizeLabel: Boolean = false,
     label: @Composable (() -> Unit)? = null,
     placeholder: @Composable (() -> Unit)? = null,
     leadingIcon: @Composable (() -> Unit)? = null,
@@ -295,6 +299,7 @@
                     lineLimits = lineLimits,
                     outputTransformation = outputTransformation,
                     interactionSource = interactionSource,
+                    alwaysMinimizeLabel = alwaysMinimizeLabel,
                     label = label,
                     placeholder = placeholder,
                     leadingIcon = leadingIcon,
@@ -346,9 +351,8 @@
  *   be modified. However, a user can focus it and copy text from it. Read-only text fields are
  *   usually used to display pre-filled forms that a user cannot edit.
  * @param textStyle the style to be applied to the input text. Defaults to [LocalTextStyle].
- * @param label the optional label to be displayed inside the text field container. The default text
- *   style for internal [Text] is [Typography.bodySmall] when the text field is in focus and
- *   [Typography.bodyLarge] when the text field is not in focus
+ * @param label the optional label to be displayed with this text field. The default text style uses
+ *   [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
  * @param placeholder the optional placeholder to be displayed when the text field is in focus and
  *   the input text is empty. The default text style for internal [Text] is [Typography.bodyLarge]
  * @param leadingIcon the optional leading icon to be displayed at the beginning of the text field
@@ -498,9 +502,8 @@
  *   be modified. However, a user can focus it and copy text from it. Read-only text fields are
  *   usually used to display pre-filled forms that a user cannot edit.
  * @param textStyle the style to be applied to the input text. Defaults to [LocalTextStyle].
- * @param label the optional label to be displayed inside the text field container. The default text
- *   style for internal [Text] is [Typography.bodySmall] when the text field is in focus and
- *   [Typography.bodyLarge] when the text field is not in focus
+ * @param label the optional label to be displayed with this text field. The default text style uses
+ *   [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
  * @param placeholder the optional placeholder to be displayed when the text field is in focus and
  *   the input text is empty. The default text style for internal [Text] is [Typography.bodyLarge]
  * @param leadingIcon the optional leading icon to be displayed at the beginning of the text field
@@ -637,14 +640,14 @@
     prefix: @Composable (() -> Unit)?,
     suffix: @Composable (() -> Unit)?,
     singleLine: Boolean,
-    animationProgress: Float,
+    labelProgress: Float,
     container: @Composable () -> Unit,
     supporting: @Composable (() -> Unit)?,
     paddingValues: PaddingValues
 ) {
     val measurePolicy =
-        remember(singleLine, animationProgress, paddingValues) {
-            TextFieldMeasurePolicy(singleLine, animationProgress, paddingValues)
+        remember(singleLine, labelProgress, paddingValues) {
+            TextFieldMeasurePolicy(singleLine, labelProgress, paddingValues)
         }
     val layoutDirection = LocalLayoutDirection.current
     Layout(
@@ -713,12 +716,7 @@
                 Box(
                     Modifier.layoutId(LabelId)
                         .heightIn(
-                            min =
-                                lerp(
-                                    MinTextLineHeight,
-                                    MinFocusedLabelLineHeight,
-                                    animationProgress
-                                )
+                            min = lerp(MinTextLineHeight, MinFocusedLabelLineHeight, labelProgress)
                         )
                         .wrapContentHeight()
                         .padding(start = startPadding, end = endPadding)
@@ -763,7 +761,7 @@
 
 private class TextFieldMeasurePolicy(
     private val singleLine: Boolean,
-    private val animationProgress: Float,
+    private val labelProgress: Float,
     private val paddingValues: PaddingValues
 ) : MeasurePolicy {
     override fun MeasureScope.measure(
@@ -781,32 +779,32 @@
         // measure leading icon
         val leadingPlaceable =
             measurables.fastFirstOrNull { it.layoutId == LeadingId }?.measure(looseConstraints)
-        occupiedSpaceHorizontally += widthOrZero(leadingPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(leadingPlaceable))
+        occupiedSpaceHorizontally += leadingPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, leadingPlaceable.heightOrZero)
 
         // measure trailing icon
         val trailingPlaceable =
             measurables
                 .fastFirstOrNull { it.layoutId == TrailingId }
                 ?.measure(looseConstraints.offset(horizontal = -occupiedSpaceHorizontally))
-        occupiedSpaceHorizontally += widthOrZero(trailingPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(trailingPlaceable))
+        occupiedSpaceHorizontally += trailingPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, trailingPlaceable.heightOrZero)
 
         // measure prefix
         val prefixPlaceable =
             measurables
                 .fastFirstOrNull { it.layoutId == PrefixId }
                 ?.measure(looseConstraints.offset(horizontal = -occupiedSpaceHorizontally))
-        occupiedSpaceHorizontally += widthOrZero(prefixPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(prefixPlaceable))
+        occupiedSpaceHorizontally += prefixPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, prefixPlaceable.heightOrZero)
 
         // measure suffix
         val suffixPlaceable =
             measurables
                 .fastFirstOrNull { it.layoutId == SuffixId }
                 ?.measure(looseConstraints.offset(horizontal = -occupiedSpaceHorizontally))
-        occupiedSpaceHorizontally += widthOrZero(suffixPlaceable)
-        occupiedSpaceVertically = max(occupiedSpaceVertically, heightOrZero(suffixPlaceable))
+        occupiedSpaceHorizontally += suffixPlaceable.widthOrZero
+        occupiedSpaceVertically = max(occupiedSpaceVertically, suffixPlaceable.heightOrZero)
 
         // measure label
         val labelConstraints =
@@ -824,7 +822,7 @@
             supportingMeasurable?.minIntrinsicHeight(constraints.minWidth) ?: 0
 
         // measure input field
-        val effectiveTopOffset = topPaddingValue + heightOrZero(labelPlaceable)
+        val effectiveTopOffset = topPaddingValue + labelPlaceable.heightOrZero
         val textFieldConstraints =
             constraints
                 .copy(minHeight = 0)
@@ -845,19 +843,19 @@
         occupiedSpaceVertically =
             max(
                 occupiedSpaceVertically,
-                max(heightOrZero(textFieldPlaceable), heightOrZero(placeholderPlaceable)) +
+                max(textFieldPlaceable.heightOrZero, placeholderPlaceable.heightOrZero) +
                     effectiveTopOffset +
                     bottomPaddingValue
             )
         val width =
             calculateWidth(
-                leadingWidth = widthOrZero(leadingPlaceable),
-                trailingWidth = widthOrZero(trailingPlaceable),
-                prefixWidth = widthOrZero(prefixPlaceable),
-                suffixWidth = widthOrZero(suffixPlaceable),
+                leadingWidth = leadingPlaceable.widthOrZero,
+                trailingWidth = trailingPlaceable.widthOrZero,
+                prefixWidth = prefixPlaceable.widthOrZero,
+                suffixWidth = suffixPlaceable.widthOrZero,
                 textFieldWidth = textFieldPlaceable.width,
-                labelWidth = widthOrZero(labelPlaceable),
-                placeholderWidth = widthOrZero(placeholderPlaceable),
+                labelWidth = labelPlaceable.widthOrZero,
+                placeholderWidth = placeholderPlaceable.widthOrZero,
                 constraints = constraints,
             )
 
@@ -867,21 +865,19 @@
                 .offset(vertical = -occupiedSpaceVertically)
                 .copy(minHeight = 0, maxWidth = width)
         val supportingPlaceable = supportingMeasurable?.measure(supportingConstraints)
-        val supportingHeight = heightOrZero(supportingPlaceable)
+        val supportingHeight = supportingPlaceable.heightOrZero
 
         val totalHeight =
             calculateHeight(
                 textFieldHeight = textFieldPlaceable.height,
-                labelHeight = heightOrZero(labelPlaceable),
-                leadingHeight = heightOrZero(leadingPlaceable),
-                trailingHeight = heightOrZero(trailingPlaceable),
-                prefixHeight = heightOrZero(prefixPlaceable),
-                suffixHeight = heightOrZero(suffixPlaceable),
-                placeholderHeight = heightOrZero(placeholderPlaceable),
-                supportingHeight = heightOrZero(supportingPlaceable),
-                animationProgress = animationProgress,
+                labelHeight = labelPlaceable.heightOrZero,
+                leadingHeight = leadingPlaceable.heightOrZero,
+                trailingHeight = trailingPlaceable.heightOrZero,
+                prefixHeight = prefixPlaceable.heightOrZero,
+                suffixHeight = suffixPlaceable.heightOrZero,
+                placeholderHeight = placeholderPlaceable.heightOrZero,
+                supportingHeight = supportingPlaceable.heightOrZero,
                 constraints = constraints,
-                paddingValues = paddingValues,
             )
         val height = totalHeight - supportingHeight
 
@@ -914,11 +910,9 @@
                     suffixPlaceable = suffixPlaceable,
                     containerPlaceable = containerPlaceable,
                     supportingPlaceable = supportingPlaceable,
-                    singleLine = singleLine,
                     labelStartPosition = labelStartPosition,
                     labelEndPosition = topPaddingValue,
                     textPosition = topPaddingValue + labelPlaceable.height,
-                    animationProgress = animationProgress,
                 )
             } else {
                 placeWithoutLabel(
@@ -932,9 +926,7 @@
                     suffixPlaceable = suffixPlaceable,
                     containerPlaceable = containerPlaceable,
                     supportingPlaceable = supportingPlaceable,
-                    singleLine = singleLine,
                     density = density,
-                    paddingValues = paddingValues
                 )
             }
         }
@@ -1015,7 +1007,7 @@
             textFieldWidth = textFieldWidth,
             labelWidth = labelWidth,
             placeholderWidth = placeholderWidth,
-            constraints = ZeroConstraints
+            constraints = Constraints(),
         )
     }
 
@@ -1030,7 +1022,7 @@
                 .fastFirstOrNull { it.layoutId == LeadingId }
                 ?.let {
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     intrinsicMeasurer(it, width)
@@ -1040,7 +1032,7 @@
                 .fastFirstOrNull { it.layoutId == TrailingId }
                 ?.let {
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     intrinsicMeasurer(it, width)
@@ -1056,7 +1048,7 @@
                 ?.let {
                     val height = intrinsicMeasurer(it, remainingWidth)
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     height
@@ -1067,7 +1059,7 @@
                 ?.let {
                     val height = intrinsicMeasurer(it, remainingWidth)
                     remainingWidth =
-                        remainingWidth.substractConstraintSafely(
+                        remainingWidth.subtractConstraintSafely(
                             it.maxIntrinsicWidth(Constraints.Infinity)
                         )
                     height
@@ -1094,221 +1086,213 @@
             suffixHeight = suffixHeight,
             placeholderHeight = placeholderHeight,
             supportingHeight = supportingHeight,
-            animationProgress = animationProgress,
-            constraints = ZeroConstraints,
-            paddingValues = paddingValues
+            constraints = Constraints(),
         )
     }
-}
 
-private fun Int.substractConstraintSafely(from: Int): Int {
-    if (this == Constraints.Infinity) {
-        return this
-    }
-    return this - from
-}
-
-private fun calculateWidth(
-    leadingWidth: Int,
-    trailingWidth: Int,
-    prefixWidth: Int,
-    suffixWidth: Int,
-    textFieldWidth: Int,
-    labelWidth: Int,
-    placeholderWidth: Int,
-    constraints: Constraints
-): Int {
-    val affixTotalWidth = prefixWidth + suffixWidth
-    val middleSection =
-        maxOf(
-            textFieldWidth + affixTotalWidth,
-            placeholderWidth + affixTotalWidth,
-            // Prefix/suffix does not get applied to label
-            labelWidth,
-        )
-    val wrappedWidth = leadingWidth + middleSection + trailingWidth
-    return max(wrappedWidth, constraints.minWidth)
-}
-
-private fun Density.calculateHeight(
-    textFieldHeight: Int,
-    labelHeight: Int,
-    leadingHeight: Int,
-    trailingHeight: Int,
-    prefixHeight: Int,
-    suffixHeight: Int,
-    placeholderHeight: Int,
-    supportingHeight: Int,
-    animationProgress: Float,
-    constraints: Constraints,
-    paddingValues: PaddingValues
-): Int {
-    val verticalPadding =
-        (paddingValues.calculateTopPadding() + paddingValues.calculateBottomPadding()).roundToPx()
-
-    val inputFieldHeight =
-        maxOf(
-            textFieldHeight,
-            placeholderHeight,
-            prefixHeight,
-            suffixHeight,
-            lerp(labelHeight, 0, animationProgress)
-        )
-
-    val hasLabel = labelHeight > 0
-    val nonOverlappedLabelHeight =
-        if (hasLabel) {
-            // The label animates from overlapping the input field to floating above it,
-            // so its contribution to the height calculation changes over time. Extra padding
-            // is added in the unfocused state to keep the height consistent.
-            max(
-                (TextFieldLabelExtraPadding * 2).roundToPx(),
-                lerp(0, labelHeight, animationProgress)
+    private fun calculateWidth(
+        leadingWidth: Int,
+        trailingWidth: Int,
+        prefixWidth: Int,
+        suffixWidth: Int,
+        textFieldWidth: Int,
+        labelWidth: Int,
+        placeholderWidth: Int,
+        constraints: Constraints
+    ): Int {
+        val affixTotalWidth = prefixWidth + suffixWidth
+        val middleSection =
+            maxOf(
+                textFieldWidth + affixTotalWidth,
+                placeholderWidth + affixTotalWidth,
+                // Prefix/suffix does not get applied to label
+                labelWidth,
             )
-        } else {
-            0
-        }
-
-    val middleSectionHeight = verticalPadding + nonOverlappedLabelHeight + inputFieldHeight
-
-    return max(
-        constraints.minHeight,
-        maxOf(leadingHeight, trailingHeight, middleSectionHeight) + supportingHeight
-    )
-}
-
-/**
- * Places the provided text field, placeholder, and label in the TextField given the PaddingValues
- * when there is a label. When there is no label, [placeWithoutLabel] is used instead.
- */
-private fun Placeable.PlacementScope.placeWithLabel(
-    width: Int,
-    totalHeight: Int,
-    textfieldPlaceable: Placeable,
-    labelPlaceable: Placeable,
-    placeholderPlaceable: Placeable?,
-    leadingPlaceable: Placeable?,
-    trailingPlaceable: Placeable?,
-    prefixPlaceable: Placeable?,
-    suffixPlaceable: Placeable?,
-    containerPlaceable: Placeable,
-    supportingPlaceable: Placeable?,
-    singleLine: Boolean,
-    labelStartPosition: Int,
-    labelEndPosition: Int,
-    textPosition: Int,
-    animationProgress: Float,
-) {
-    // place container
-    containerPlaceable.place(IntOffset.Zero)
-
-    // Most elements should be positioned w.r.t the text field's "visual" height, i.e., excluding
-    // the supporting text on bottom
-    val height = totalHeight - heightOrZero(supportingPlaceable)
-
-    leadingPlaceable?.placeRelative(
-        0,
-        Alignment.CenterVertically.align(leadingPlaceable.height, height)
-    )
-
-    val labelY =
-        labelPlaceable.let {
-            val startPosition =
-                if (singleLine) {
-                    Alignment.CenterVertically.align(it.height, height)
-                } else {
-                    labelStartPosition
-                }
-            lerp(startPosition, labelEndPosition, animationProgress)
-        }
-    labelPlaceable.placeRelative(widthOrZero(leadingPlaceable), labelY)
-
-    prefixPlaceable?.placeRelative(widthOrZero(leadingPlaceable), textPosition)
-
-    val textHorizontalPosition = widthOrZero(leadingPlaceable) + widthOrZero(prefixPlaceable)
-    textfieldPlaceable.placeRelative(textHorizontalPosition, textPosition)
-    placeholderPlaceable?.placeRelative(textHorizontalPosition, textPosition)
-
-    suffixPlaceable?.placeRelative(
-        width - widthOrZero(trailingPlaceable) - suffixPlaceable.width,
-        textPosition,
-    )
-
-    trailingPlaceable?.placeRelative(
-        width - trailingPlaceable.width,
-        Alignment.CenterVertically.align(trailingPlaceable.height, height)
-    )
-
-    supportingPlaceable?.placeRelative(0, height)
-}
-
-/**
- * Places the provided text field and placeholder in [TextField] when there is no label. When there
- * is a label, [placeWithLabel] is used
- */
-private fun Placeable.PlacementScope.placeWithoutLabel(
-    width: Int,
-    totalHeight: Int,
-    textPlaceable: Placeable,
-    placeholderPlaceable: Placeable?,
-    leadingPlaceable: Placeable?,
-    trailingPlaceable: Placeable?,
-    prefixPlaceable: Placeable?,
-    suffixPlaceable: Placeable?,
-    containerPlaceable: Placeable,
-    supportingPlaceable: Placeable?,
-    singleLine: Boolean,
-    density: Float,
-    paddingValues: PaddingValues
-) {
-    // place container
-    containerPlaceable.place(IntOffset.Zero)
-
-    // Most elements should be positioned w.r.t the text field's "visual" height, i.e., excluding
-    // the supporting text on bottom
-    val height = totalHeight - heightOrZero(supportingPlaceable)
-    val topPadding = (paddingValues.calculateTopPadding().value * density).roundToInt()
-
-    leadingPlaceable?.placeRelative(
-        0,
-        Alignment.CenterVertically.align(leadingPlaceable.height, height)
-    )
-
-    // Single line text field without label places its text components centered vertically.
-    // Multiline text field without label places its text components at the top with padding.
-    fun calculateVerticalPosition(placeable: Placeable): Int {
-        return if (singleLine) {
-            Alignment.CenterVertically.align(placeable.height, height)
-        } else {
-            topPadding
-        }
+        val wrappedWidth = leadingWidth + middleSection + trailingWidth
+        return max(wrappedWidth, constraints.minWidth)
     }
 
-    prefixPlaceable?.placeRelative(
-        widthOrZero(leadingPlaceable),
-        calculateVerticalPosition(prefixPlaceable)
-    )
+    private fun Density.calculateHeight(
+        textFieldHeight: Int,
+        labelHeight: Int,
+        leadingHeight: Int,
+        trailingHeight: Int,
+        prefixHeight: Int,
+        suffixHeight: Int,
+        placeholderHeight: Int,
+        supportingHeight: Int,
+        constraints: Constraints,
+    ): Int {
+        val verticalPadding =
+            (paddingValues.calculateTopPadding() + paddingValues.calculateBottomPadding())
+                .roundToPx()
 
-    val textHorizontalPosition = widthOrZero(leadingPlaceable) + widthOrZero(prefixPlaceable)
+        val inputFieldHeight =
+            maxOf(
+                textFieldHeight,
+                placeholderHeight,
+                prefixHeight,
+                suffixHeight,
+                lerp(labelHeight, 0, labelProgress)
+            )
 
-    textPlaceable.placeRelative(textHorizontalPosition, calculateVerticalPosition(textPlaceable))
+        val hasLabel = labelHeight > 0
+        val nonOverlappedLabelHeight =
+            if (hasLabel) {
+                // The label animates from overlapping the input field to floating above it,
+                // so its contribution to the height calculation changes over time. Extra padding
+                // is added in the unfocused state to keep the height consistent.
+                max(
+                    (TextFieldLabelExtraPadding * 2).roundToPx(),
+                    lerp(0, labelHeight, labelProgress)
+                )
+            } else {
+                0
+            }
 
-    placeholderPlaceable?.placeRelative(
-        textHorizontalPosition,
-        calculateVerticalPosition(placeholderPlaceable)
-    )
+        val middleSectionHeight = verticalPadding + nonOverlappedLabelHeight + inputFieldHeight
 
-    suffixPlaceable?.placeRelative(
-        width - widthOrZero(trailingPlaceable) - suffixPlaceable.width,
-        calculateVerticalPosition(suffixPlaceable),
-    )
+        return max(
+            constraints.minHeight,
+            maxOf(leadingHeight, trailingHeight, middleSectionHeight) + supportingHeight
+        )
+    }
 
-    trailingPlaceable?.placeRelative(
-        width - trailingPlaceable.width,
-        Alignment.CenterVertically.align(trailingPlaceable.height, height)
-    )
+    /**
+     * Places the provided text field, placeholder, and label in the TextField given the
+     * PaddingValues when there is a label. When there is no label, [placeWithoutLabel] is used
+     * instead.
+     */
+    private fun Placeable.PlacementScope.placeWithLabel(
+        width: Int,
+        totalHeight: Int,
+        textfieldPlaceable: Placeable,
+        labelPlaceable: Placeable,
+        placeholderPlaceable: Placeable?,
+        leadingPlaceable: Placeable?,
+        trailingPlaceable: Placeable?,
+        prefixPlaceable: Placeable?,
+        suffixPlaceable: Placeable?,
+        containerPlaceable: Placeable,
+        supportingPlaceable: Placeable?,
+        labelStartPosition: Int,
+        labelEndPosition: Int,
+        textPosition: Int,
+    ) {
+        // place container
+        containerPlaceable.place(IntOffset.Zero)
 
-    supportingPlaceable?.placeRelative(0, height)
+        // Most elements should be positioned w.r.t the text field's "visual" height, i.e.,
+        // excluding
+        // the supporting text on bottom
+        val height = totalHeight - supportingPlaceable.heightOrZero
+
+        leadingPlaceable?.placeRelative(
+            0,
+            Alignment.CenterVertically.align(leadingPlaceable.height, height)
+        )
+
+        val labelY =
+            labelPlaceable.let {
+                val startPosition =
+                    if (singleLine) {
+                        Alignment.CenterVertically.align(it.height, height)
+                    } else {
+                        labelStartPosition
+                    }
+                lerp(startPosition, labelEndPosition, labelProgress)
+            }
+        labelPlaceable.placeRelative(leadingPlaceable.widthOrZero, labelY)
+
+        prefixPlaceable?.placeRelative(leadingPlaceable.widthOrZero, textPosition)
+
+        val textHorizontalPosition = leadingPlaceable.widthOrZero + prefixPlaceable.widthOrZero
+        textfieldPlaceable.placeRelative(textHorizontalPosition, textPosition)
+        placeholderPlaceable?.placeRelative(textHorizontalPosition, textPosition)
+
+        suffixPlaceable?.placeRelative(
+            width - trailingPlaceable.widthOrZero - suffixPlaceable.width,
+            textPosition,
+        )
+
+        trailingPlaceable?.placeRelative(
+            width - trailingPlaceable.width,
+            Alignment.CenterVertically.align(trailingPlaceable.height, height)
+        )
+
+        supportingPlaceable?.placeRelative(0, height)
+    }
+
+    /**
+     * Places the provided text field and placeholder in [TextField] when there is no label. When
+     * there is a label, [placeWithLabel] is used
+     */
+    private fun Placeable.PlacementScope.placeWithoutLabel(
+        width: Int,
+        totalHeight: Int,
+        textPlaceable: Placeable,
+        placeholderPlaceable: Placeable?,
+        leadingPlaceable: Placeable?,
+        trailingPlaceable: Placeable?,
+        prefixPlaceable: Placeable?,
+        suffixPlaceable: Placeable?,
+        containerPlaceable: Placeable,
+        supportingPlaceable: Placeable?,
+        density: Float,
+    ) {
+        // place container
+        containerPlaceable.place(IntOffset.Zero)
+
+        // Most elements should be positioned w.r.t the text field's "visual" height, i.e.,
+        // excluding
+        // the supporting text on bottom
+        val height = totalHeight - supportingPlaceable.heightOrZero
+        val topPadding = (paddingValues.calculateTopPadding().value * density).roundToInt()
+
+        leadingPlaceable?.placeRelative(
+            0,
+            Alignment.CenterVertically.align(leadingPlaceable.height, height)
+        )
+
+        // Single line text field without label places its text components centered vertically.
+        // Multiline text field without label places its text components at the top with padding.
+        fun calculateVerticalPosition(placeable: Placeable): Int {
+            return if (singleLine) {
+                Alignment.CenterVertically.align(placeable.height, height)
+            } else {
+                topPadding
+            }
+        }
+
+        prefixPlaceable?.placeRelative(
+            leadingPlaceable.widthOrZero,
+            calculateVerticalPosition(prefixPlaceable)
+        )
+
+        val textHorizontalPosition = leadingPlaceable.widthOrZero + prefixPlaceable.widthOrZero
+
+        textPlaceable.placeRelative(
+            textHorizontalPosition,
+            calculateVerticalPosition(textPlaceable)
+        )
+
+        placeholderPlaceable?.placeRelative(
+            textHorizontalPosition,
+            calculateVerticalPosition(placeholderPlaceable)
+        )
+
+        suffixPlaceable?.placeRelative(
+            width - trailingPlaceable.widthOrZero - suffixPlaceable.width,
+            calculateVerticalPosition(suffixPlaceable),
+        )
+
+        trailingPlaceable?.placeRelative(
+            width - trailingPlaceable.width,
+            Alignment.CenterVertically.align(trailingPlaceable.height, height)
+        )
+
+        supportingPlaceable?.placeRelative(0, height)
+    }
 }
 
 /** A draw modifier that draws a bottom indicator line in [TextField] */
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextFieldDefaults.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextFieldDefaults.kt
index d1c94dd..9a4352c 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextFieldDefaults.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/TextFieldDefaults.kt
@@ -117,9 +117,12 @@
      *   [MutableInteractionSource] instance to the [BasicTextField] for it to dispatch events. And
      *   then pass the same instance to this decorator to observe [Interaction]s and customize the
      *   appearance/behavior of the text field in different states.
+     * @param alwaysMinimizeLabel whether to always minimize the label of this text field. Defaults
+     *   to `false`, so the label will expand to occupy the input area when the text field is
+     *   unfocused and empty. When `true`, this allows displaying the [placeholder], [prefix], and
+     *   [suffix] alongside the [label] when the text field is unfocused and empty.
      * @param label the optional label to be displayed with this text field. The default text style
-     *   uses [Typography.bodySmall] when the text field is in focus and [Typography.bodyLarge] when
-     *   the text field is not in focus.
+     *   uses [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
      * @param placeholder the optional placeholder to be displayed when the input text is empty. The
      *   default text style uses [Typography.bodyLarge].
      * @param leadingIcon the optional leading icon to be displayed at the beginning of the text
@@ -149,6 +152,7 @@
         lineLimits: TextFieldLineLimits,
         outputTransformation: OutputTransformation?,
         interactionSource: InteractionSource,
+        alwaysMinimizeLabel: Boolean = false,
         label: @Composable (() -> Unit)? = null,
         placeholder: @Composable (() -> Unit)? = null,
         leadingIcon: @Composable (() -> Unit)? = null,
@@ -193,6 +197,7 @@
             visualText = visualText,
             innerTextField = innerTextField,
             placeholder = placeholder,
+            alwaysMinimizeLabel = alwaysMinimizeLabel,
             label = label,
             leadingIcon = leadingIcon,
             trailingIcon = trailingIcon,
@@ -346,9 +351,8 @@
      *   the appearance / behavior of this text field in different states.
      * @param isError indicates if the text field's current value is in an error state. When `true`,
      *   this decoration box will display its contents in an error color.
-     * @param label the optional label to be displayed inside the text field container. The default
-     *   text style for internal [Text] is [Typography.bodySmall] when the text field is in focus
-     *   and [Typography.bodyLarge] when the text field is not in focus.
+     * @param label the optional label to be displayed with this text field. The default text style
+     *   uses [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
      * @param placeholder the optional placeholder to be displayed when the text field is in focus
      *   and the input text is empty. The default text style for internal [Text] is
      *   [Typography.bodyLarge].
@@ -420,6 +424,7 @@
             visualText = visualText,
             innerTextField = innerTextField,
             placeholder = placeholder,
+            alwaysMinimizeLabel = false,
             label = label,
             leadingIcon = leadingIcon,
             trailingIcon = trailingIcon,
@@ -923,9 +928,12 @@
      *   [MutableInteractionSource] instance to the [BasicTextField] for it to dispatch events. And
      *   then pass the same instance to this decorator to observe [Interaction]s and customize the
      *   appearance/behavior of the text field in different states.
+     * @param alwaysMinimizeLabel whether to always minimize the label of this text field. Defaults
+     *   to `false`, so the label will expand to occupy the input area when the text field is
+     *   unfocused and empty. When `true`, this allows displaying the [placeholder], [prefix], and
+     *   [suffix] alongside the [label] when the text field is unfocused and empty.
      * @param label the optional label to be displayed with this text field. The default text style
-     *   uses [Typography.bodySmall] when the text field is in focus and [Typography.bodyLarge] when
-     *   the text field is not in focus.
+     *   uses [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
      * @param placeholder the optional placeholder to be displayed when the input text is empty. The
      *   default text style uses [Typography.bodyLarge].
      * @param leadingIcon the optional leading icon to be displayed at the beginning of the text
@@ -956,6 +964,7 @@
         lineLimits: TextFieldLineLimits,
         outputTransformation: OutputTransformation?,
         interactionSource: InteractionSource,
+        alwaysMinimizeLabel: Boolean = false,
         label: @Composable (() -> Unit)? = null,
         placeholder: @Composable (() -> Unit)? = null,
         leadingIcon: @Composable (() -> Unit)? = null,
@@ -995,6 +1004,7 @@
             visualText = visualText,
             innerTextField = innerTextField,
             placeholder = placeholder,
+            alwaysMinimizeLabel = alwaysMinimizeLabel,
             label = label,
             leadingIcon = leadingIcon,
             trailingIcon = trailingIcon,
@@ -1096,9 +1106,8 @@
      *   the appearance / behavior of this text field in different states.
      * @param isError indicates if the text field's current value is in an error state. When `true`,
      *   this decoration box will display its contents in an error color.
-     * @param label the optional label to be displayed inside the text field container. The default
-     *   text style for internal [Text] is [Typography.bodySmall] when the text field is in focus
-     *   and [Typography.bodyLarge] when the text field is not in focus.
+     * @param label the optional label to be displayed with this text field. The default text style
+     *   uses [Typography.bodySmall] when minimized and [Typography.bodyLarge] when expanded.
      * @param placeholder the optional placeholder to be displayed when the text field is in focus
      *   and the input text is empty. The default text style for internal [Text] is
      *   [Typography.bodyLarge].
@@ -1164,6 +1173,7 @@
             visualText = visualText,
             innerTextField = innerTextField,
             placeholder = placeholder,
+            alwaysMinimizeLabel = false,
             label = label,
             leadingIcon = leadingIcon,
             trailingIcon = trailingIcon,
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/LayoutUtil.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/LayoutUtil.kt
index f76cfae2..96f0b5d 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/LayoutUtil.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/LayoutUtil.kt
@@ -19,16 +19,20 @@
 import androidx.compose.ui.layout.IntrinsicMeasurable
 import androidx.compose.ui.layout.LayoutIdParentData
 import androidx.compose.ui.layout.Placeable
+import androidx.compose.ui.unit.Constraints
 
 internal val IntrinsicMeasurable.layoutId: Any?
     get() = (parentData as? LayoutIdParentData)?.layoutId
 
-internal fun widthOrZero(placeable: Placeable?) = placeable?.width ?: 0
-
-internal fun heightOrZero(placeable: Placeable?) = placeable?.height ?: 0
-
 internal val Placeable?.widthOrZero: Int
     get() = this?.width ?: 0
 
 internal val Placeable?.heightOrZero: Int
     get() = this?.height ?: 0
+
+internal fun Int.subtractConstraintSafely(other: Int): Int {
+    if (this == Constraints.Infinity) {
+        return this
+    }
+    return this - other
+}
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/TextFieldImpl.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/TextFieldImpl.kt
index d4bb175..a12fc29 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/TextFieldImpl.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/internal/TextFieldImpl.kt
@@ -59,7 +59,6 @@
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.text.TextStyle
 import androidx.compose.ui.text.lerp
-import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
@@ -74,6 +73,7 @@
     type: TextFieldType,
     visualText: CharSequence,
     innerTextField: @Composable () -> Unit,
+    alwaysMinimizeLabel: Boolean,
     label: @Composable (() -> Unit)?,
     placeholder: @Composable (() -> Unit)?,
     leadingIcon: @Composable (() -> Unit)?,
@@ -117,7 +117,7 @@
                 if (overrideLabelTextStyleColor) this.takeOrElse { labelColor } else this
             },
         labelColor = labelColor,
-        showLabel = label != null,
+        showExpandedLabel = label != null && !alwaysMinimizeLabel,
     ) { labelProgress, labelTextStyleColor, labelContentColor, placeholderAlpha, prefixSuffixAlpha
         ->
         val labelProgressValue = labelProgress.value
@@ -232,17 +232,17 @@
                     supporting = decoratedSupporting,
                     singleLine = singleLine,
                     // TODO(b/271000818): progress state read should be deferred to layout phase
-                    animationProgress = labelProgressValue,
+                    labelProgress = labelProgressValue,
                     paddingValues = contentPadding
                 )
             }
             TextFieldType.Outlined -> {
                 // Outlined cutout
-                val labelSize = remember { mutableStateOf(Size.Zero) }
+                val cutoutSize = remember { mutableStateOf(Size.Zero) }
                 val borderContainerWithId: @Composable () -> Unit = {
                     Box(
                         Modifier.layoutId(ContainerId)
-                            .outlineCutout(labelSize::value, contentPadding),
+                            .outlineCutout(cutoutSize::value, contentPadding),
                         propagateMinConstraints = true
                     ) {
                         container()
@@ -264,14 +264,14 @@
                         val labelWidth = it.width * labelProgressValue
                         val labelHeight = it.height * labelProgressValue
                         if (
-                            labelSize.value.width != labelWidth ||
-                                labelSize.value.height != labelHeight
+                            cutoutSize.value.width != labelWidth ||
+                                cutoutSize.value.height != labelHeight
                         ) {
-                            labelSize.value = Size(labelWidth, labelHeight)
+                            cutoutSize.value = Size(labelWidth, labelHeight)
                         }
                     },
                     // TODO(b/271000818): progress state read should be deferred to layout phase
-                    animationProgress = labelProgressValue,
+                    labelProgress = labelProgressValue,
                     container = borderContainerWithId,
                     paddingValues = contentPadding
                 )
@@ -316,7 +316,7 @@
     focusedLabelTextStyleColor: Color,
     unfocusedLabelTextStyleColor: Color,
     labelColor: Color,
-    showLabel: Boolean,
+    showExpandedLabel: Boolean,
     content:
         @Composable
         (
@@ -339,7 +339,7 @@
         ) {
             when (it) {
                 InputPhase.Focused -> 1f
-                InputPhase.UnfocusedEmpty -> 0f
+                InputPhase.UnfocusedEmpty -> if (showExpandedLabel) 0f else 1f
                 InputPhase.UnfocusedNotEmpty -> 1f
             }
         }
@@ -369,7 +369,7 @@
         ) {
             when (it) {
                 InputPhase.Focused -> 1f
-                InputPhase.UnfocusedEmpty -> if (showLabel) 0f else 1f
+                InputPhase.UnfocusedEmpty -> if (showExpandedLabel) 0f else 1f
                 InputPhase.UnfocusedNotEmpty -> 0f
             }
         }
@@ -381,7 +381,7 @@
         ) {
             when (it) {
                 InputPhase.Focused -> 1f
-                InputPhase.UnfocusedEmpty -> if (showLabel) 0f else 1f
+                InputPhase.UnfocusedEmpty -> if (showExpandedLabel) 0f else 1f
                 InputPhase.UnfocusedNotEmpty -> 1f
             }
         }
@@ -463,7 +463,6 @@
 internal const val SuffixId = "Suffix"
 internal const val SupportingId = "Supporting"
 internal const val ContainerId = "Container"
-internal val ZeroConstraints = Constraints(0, 0, 0, 0)
 
 internal const val TextFieldAnimationDuration = 150
 private const val PlaceholderAnimationDuration = 83
diff --git a/compose/test-utils/src/androidInstrumentedTest/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunnerTest.kt b/compose/test-utils/src/androidInstrumentedTest/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunnerTest.kt
index d23b45c..3793dc6 100644
--- a/compose/test-utils/src/androidInstrumentedTest/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunnerTest.kt
+++ b/compose/test-utils/src/androidInstrumentedTest/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunnerTest.kt
@@ -19,6 +19,7 @@
 import androidx.activity.ComponentActivity
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
@@ -27,12 +28,18 @@
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.FocusState
+import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.focus.focusTarget
+import androidx.compose.ui.focus.onFocusChanged
 import androidx.compose.ui.node.ModifierNodeElement
 import androidx.compose.ui.test.junit4.AndroidComposeTestRule
 import androidx.compose.ui.test.junit4.createAndroidComposeRule
 import androidx.test.ext.junit.rules.ActivityScenarioRule
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import com.google.common.truth.Truth.assertThat
 import kotlin.coroutines.suspendCoroutine
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
@@ -198,6 +205,26 @@
     }
 
     @Test
+    fun layout_preservesActiveFocus() {
+        lateinit var focusState: FocusState
+        composeTestRule
+            .forGivenContent {
+                val focusRequester = FocusRequester()
+                Box(
+                    Modifier.fillMaxSize()
+                        .onFocusChanged { focusState = it }
+                        .focusRequester(focusRequester)
+                        .focusTarget()
+                )
+                LaunchedEffect(Unit) { focusRequester.requestFocus() }
+            }
+            .performTestWithEventsControl {
+                doFrame()
+                assertThat(focusState.isFocused).isTrue()
+            }
+    }
+
+    @Test
     fun countLaunchedCoroutines_noContentLaunches() {
         composeTestRule
             .forGivenContent { Box { Text("Hello") } }
diff --git a/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.android.kt b/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.android.kt
index 89fd282..b7fa4ac 100644
--- a/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.android.kt
+++ b/compose/test-utils/src/androidMain/kotlin/androidx/compose/testutils/AndroidComposeTestCaseRunner.android.kt
@@ -226,7 +226,12 @@
             "Layout can be only executed after measure, current state is '$simulationState'"
         }
         val view = getView()
-        view.layout(view.left, view.top, view.right, view.bottom)
+        view.layout(
+            /* l= */ 0,
+            /* t= */ 0,
+            /* r= */ view.measuredWidth,
+            /* b= */ view.measuredHeight
+        )
         simulationState = SimulationState.LayoutDone
     }
 
diff --git a/compose/ui/ui-text/build.gradle b/compose/ui/ui-text/build.gradle
index b2842bb..e242cff 100644
--- a/compose/ui/ui-text/build.gradle
+++ b/compose/ui/ui-text/build.gradle
@@ -59,8 +59,6 @@
 
         commonTest {
             dependencies {
-                implementation(libs.junit)
-                implementation(libs.truth)
             }
         }
 
diff --git a/compose/ui/ui-text/src/androidUnitTest/kotlin/androidx/compose/ui/text/AndroidSaversTest.kt b/compose/ui/ui-text/src/androidUnitTest/kotlin/androidx/compose/ui/text/AndroidSaversTest.kt
deleted file mode 100644
index b05d927..0000000
--- a/compose/ui/ui-text/src/androidUnitTest/kotlin/androidx/compose/ui/text/AndroidSaversTest.kt
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.compose.ui.text
-
-import androidx.compose.runtime.saveable.SaverScope
-import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.Shadow
-import androidx.compose.ui.text.font.FontStyle
-import androidx.compose.ui.text.font.FontSynthesis
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.intl.Locale
-import androidx.compose.ui.text.intl.LocaleList
-import androidx.compose.ui.text.style.BaselineShift
-import androidx.compose.ui.text.style.LineHeightStyle
-import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextDecoration
-import androidx.compose.ui.text.style.TextDirection
-import androidx.compose.ui.text.style.TextGeometricTransform
-import androidx.compose.ui.text.style.TextIndent
-import androidx.compose.ui.unit.TextUnit
-import androidx.compose.ui.unit.em
-import androidx.compose.ui.unit.sp
-import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.junit.runners.JUnit4
-
-@RunWith(JUnit4::class)
-@Suppress("Deprecation")
-class AndroidSaversTest {
-    private val defaultSaverScope = SaverScope { true }
-
-    @Test
-    fun test_TextUnit() {
-        val original = 2.sp
-        val saved = save(original, TextUnit.Saver, defaultSaverScope)
-        val restored: TextUnit? = restore(saved, TextUnit.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextUnit_unspecified() {
-        val original = TextUnit.Unspecified
-        val saved = save(original, TextUnit.Saver, defaultSaverScope)
-        val restored: TextUnit? = restore(saved, TextUnit.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Offset() {
-        val original = Offset(10f, 10f)
-        val saved = save(original, Offset.Saver, defaultSaverScope)
-        val restored: Offset? = restore(saved, Offset.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Offset_Unspecified() {
-        val original = Offset.Unspecified
-        val saved = save(original, Offset.Saver, defaultSaverScope)
-        val restored: Offset? = restore(saved, Offset.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Offset_Infinite() {
-        val original = Offset.Infinite
-        val saved = save(original, Offset.Saver, defaultSaverScope)
-        val restored: Offset? = restore(saved, Offset.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Color() {
-        val original = Color.Yellow
-        val saved = save(original, Color.Saver, defaultSaverScope)
-        val restored: Color? = restore(saved, Color.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Color_Unspecified() {
-        val original = Color.Unspecified
-        val saved = save(original, Color.Saver, defaultSaverScope)
-        val restored: Color? = restore(saved, Color.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Shadow() {
-        val original = Shadow(color = Color.Blue, offset = Offset(5f, 5f), blurRadius = 2f)
-        val saved = save(original, Shadow.Saver, defaultSaverScope)
-        val restored: Shadow? = restore(saved, Shadow.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Shadow_None() {
-        val original = Shadow.None
-        val saved = save(original, Shadow.Saver, defaultSaverScope)
-        val restored: Shadow? = restore(saved, Shadow.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_ParagraphStyle() {
-        val original = ParagraphStyle()
-        val saved = save(original, ParagraphStyleSaver, defaultSaverScope)
-        val restored: ParagraphStyle? = restore(saved, ParagraphStyleSaver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_ParagraphStyle_with_a_nonnull_value() {
-        val original = ParagraphStyle(textDirection = TextDirection.Rtl)
-        val saved = save(original, ParagraphStyleSaver, defaultSaverScope)
-        val restored: ParagraphStyle? = restore(saved, ParagraphStyleSaver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_SpanStyle() {
-        val original = SpanStyle()
-        val saved = save(original, SpanStyleSaver, defaultSaverScope)
-        val restored: SpanStyle? = restore(saved, SpanStyleSaver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_SpanStyle_with_a_nonnull_value() {
-        val original = SpanStyle(baselineShift = BaselineShift.Subscript)
-        val saved = save(original, SpanStyleSaver, defaultSaverScope)
-        val restored: SpanStyle? = restore(saved, SpanStyleSaver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_SpanStyle_with_no_null_value() {
-        val original =
-            SpanStyle(
-                color = Color.Red,
-                fontSize = 10.sp,
-                fontWeight = FontWeight.Bold,
-                fontStyle = FontStyle.Italic,
-                fontSynthesis = FontSynthesis.All,
-                // fontFamily =
-                fontFeatureSettings = "feature settings",
-                letterSpacing = 2.em,
-                baselineShift = BaselineShift.Superscript,
-                textGeometricTransform = TextGeometricTransform(2f, 3f),
-                localeList = LocaleList(Locale("sr-Latn-SR"), Locale("sr-Cyrl-SR"), Locale.current),
-                background = Color.Blue,
-                textDecoration = TextDecoration.LineThrough,
-                shadow = Shadow(color = Color.Red, offset = Offset(2f, 2f), blurRadius = 4f)
-            )
-        val saved = save(original, SpanStyleSaver, defaultSaverScope)
-        val restored: SpanStyle? = restore(saved, SpanStyleSaver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextLinkStyles() {
-        val original = TextLinkStyles(null)
-        val saved = save(original, TextLinkStylesSaver, defaultSaverScope)
-        val restored: TextLinkStyles? = restore(saved, TextLinkStylesSaver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextLinkStyles_withNonNullValues() {
-        val original =
-            TextLinkStyles(
-                SpanStyle(color = Color.Red),
-                SpanStyle(color = Color.Green),
-                SpanStyle(color = Color.Blue),
-                SpanStyle(color = Color.Gray)
-            )
-        val saved = save(original, TextLinkStylesSaver, defaultSaverScope)
-        val restored: TextLinkStyles? = restore(saved, TextLinkStylesSaver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_FontWeight() {
-        val original = FontWeight(123)
-        val saved = save(original, FontWeight.Saver, defaultSaverScope)
-        val restored: FontWeight? = restore(saved, FontWeight.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_FontWeight_w100() {
-        val original = FontWeight.W100
-        val saved = save(original, FontWeight.Saver, defaultSaverScope)
-        val restored: FontWeight? = restore(saved, FontWeight.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_BaselineShift() {
-        val original = BaselineShift(2f)
-        val saved = save(original, BaselineShift.Saver, defaultSaverScope)
-        val restored: BaselineShift? = restore(saved, BaselineShift.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_BaselineShift_None() {
-        val original = BaselineShift.None
-        val saved = save(original, BaselineShift.Saver, defaultSaverScope)
-        val restored: BaselineShift? = restore(saved, BaselineShift.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextDecoration() {
-        val original =
-            TextDecoration.combine(listOf(TextDecoration.LineThrough, TextDecoration.Underline))
-        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
-        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextDecoration_None() {
-        val original = TextDecoration.None
-        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
-        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun testSaveRestore_lineThrough() {
-        val original = TextDecoration.LineThrough
-        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
-        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun testSaveRestore_underline() {
-        val original = TextDecoration.Underline
-        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
-        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextGeometricTransform() {
-        val original = TextGeometricTransform(1f, 2f)
-        val saved = save(original, TextGeometricTransform.Saver, defaultSaverScope)
-        val restored: TextGeometricTransform? = restore(saved, TextGeometricTransform.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextGeometricTransform_None() {
-        val original = TextGeometricTransform.None
-        val saved = save(original, TextGeometricTransform.Saver, defaultSaverScope)
-        val restored: TextGeometricTransform? = restore(saved, TextGeometricTransform.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextIndent() {
-        val original = TextIndent(1.sp, 2.sp)
-        val saved = save(original, TextIndent.Saver, defaultSaverScope)
-        val restored: TextIndent? = restore(saved, TextIndent.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_TextIndent_None() {
-        val original = TextIndent.None
-        val saved = save(original, TextIndent.Saver, defaultSaverScope)
-        val restored: TextIndent? = restore(saved, TextIndent.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_AnnotatedString() {
-        val original = AnnotatedString("abc")
-        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
-
-        assertThat(AnnotatedStringSaver.restore(saved!!)).isEqualTo(original)
-    }
-
-    @Test
-    fun test_AnnotatedString_withSpanStyles() {
-        val original = buildAnnotatedString {
-            withStyle(SpanStyle(color = Color.Red)) { append("1") }
-            withStyle(SpanStyle(fontStyle = FontStyle.Italic)) { append("2") }
-        }
-
-        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
-
-        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_AnnotatedString_withParagraphStyles() {
-        val original = buildAnnotatedString {
-            withStyle(ParagraphStyle(textAlign = TextAlign.Justify)) { append("1") }
-            withStyle(ParagraphStyle(textDirection = TextDirection.Rtl)) { append("2") }
-        }
-
-        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
-
-        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @OptIn(ExperimentalTextApi::class)
-    @Test
-    fun test_AnnotatedString_withAnnotations() {
-        val original = buildAnnotatedString {
-            withAnnotation(tag = "Tag1", annotation = "Annotation1") { append("1") }
-            withAnnotation(VerbatimTtsAnnotation("verbatim1")) { append("2") }
-            withAnnotation(tag = "Tag2", annotation = "Annotation2") { append("3") }
-            withAnnotation(VerbatimTtsAnnotation("verbatim2")) { append("4") }
-            withAnnotation(UrlAnnotation("url1")) { append("5") }
-            withAnnotation(UrlAnnotation("url2")) { append("6") }
-            withLink(
-                LinkAnnotation.Url(
-                    "url3",
-                    TextLinkStyles(
-                        SpanStyle(color = Color.Red),
-                        SpanStyle(color = Color.Green),
-                        SpanStyle(color = Color.Blue),
-                        SpanStyle(color = Color.White)
-                    )
-                )
-            ) {
-                append("7")
-            }
-            withLink(
-                LinkAnnotation.Clickable(
-                    "tag3",
-                    TextLinkStyles(
-                        SpanStyle(color = Color.Red),
-                        SpanStyle(color = Color.Green),
-                        SpanStyle(color = Color.Blue),
-                        SpanStyle(background = Color.Gray)
-                    ),
-                    null
-                )
-            ) {
-                append("8")
-            }
-        }
-
-        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
-
-        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @OptIn(ExperimentalTextApi::class)
-    @Test
-    fun test_AnnotatedString_withSpanAndParagraphStylesAndAnnotations() {
-        val original = buildAnnotatedString {
-            withStyle(ParagraphStyle(textAlign = TextAlign.Justify)) { append("1") }
-            withStyle(ParagraphStyle(textDirection = TextDirection.Rtl)) { append("2") }
-            withStyle(SpanStyle(color = Color.Red)) { append("3") }
-            withStyle(SpanStyle(fontStyle = FontStyle.Italic)) { append("4") }
-            withAnnotation(tag = "Tag1", annotation = "Annotation1") { append("5") }
-            withAnnotation(VerbatimTtsAnnotation("verbatim1")) { append("6") }
-            withAnnotation(tag = "Tag2", annotation = "Annotation2") { append("7") }
-            withAnnotation(VerbatimTtsAnnotation("verbatim2")) { append("8") }
-            withAnnotation(UrlAnnotation("url1")) { append("9") }
-            withAnnotation(UrlAnnotation("url2")) { append("10") }
-            withLink(
-                LinkAnnotation.Url(
-                    "url3",
-                    TextLinkStyles(
-                        SpanStyle(color = Color.Red),
-                        SpanStyle(color = Color.Green),
-                        SpanStyle(color = Color.Blue),
-                        SpanStyle(color = Color.Yellow)
-                    )
-                )
-            ) {
-                append("11")
-            }
-            withLink(
-                LinkAnnotation.Clickable(
-                    "tag3",
-                    TextLinkStyles(
-                        SpanStyle(color = Color.Red),
-                        SpanStyle(color = Color.Green),
-                        SpanStyle(color = Color.Blue),
-                        SpanStyle(color = Color.Gray)
-                    ),
-                    null
-                )
-            ) {
-                append("12")
-            }
-        }
-
-        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
-
-        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_Locale() {
-        val original = Locale("sr-Latn-SR")
-        val saved = with(Locale.Saver) { defaultSaverScope.save(original) }
-
-        assertThat(Locale.Saver.restore(saved!!)).isEqualTo(original)
-    }
-
-    @Test
-    fun test_LocaleList() {
-        val original = LocaleList(Locale("sr-Latn-SR"), Locale("sr-Cyrl-SR"), Locale.current)
-        val saved = with(LocaleList.Saver) { defaultSaverScope.save(original) }
-
-        assertThat(LocaleList.Saver.restore(saved!!)).isEqualTo(original)
-    }
-
-    @Test
-    fun test_LineHeightStyle() {
-        val original =
-            LineHeightStyle(
-                LineHeightStyle.Alignment.Proportional,
-                LineHeightStyle.Trim.Both,
-                LineHeightStyle.Mode.Minimum
-            )
-        val saved = save(original, LineHeightStyle.Saver, defaultSaverScope)
-        val restored: LineHeightStyle? = restore(saved, LineHeightStyle.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-
-    @Test
-    fun test_PlatformParagraphStyle_with_no_null_args() {
-        val original = PlatformParagraphStyle(EmojiSupportMatch.All, true)
-        val saved = save(original, PlatformParagraphStyle.Saver, defaultSaverScope)
-        val restored: PlatformParagraphStyle? = restore(saved, PlatformParagraphStyle.Saver)
-
-        assertThat(restored).isEqualTo(original)
-    }
-}
diff --git a/compose/ui/ui-text/src/androidUnitTest/kotlin/androidx/compose/ui/text/SaversTest.kt b/compose/ui/ui-text/src/androidUnitTest/kotlin/androidx/compose/ui/text/SaversTest.kt
index c6db31c..3465275 100644
--- a/compose/ui/ui-text/src/androidUnitTest/kotlin/androidx/compose/ui/text/SaversTest.kt
+++ b/compose/ui/ui-text/src/androidUnitTest/kotlin/androidx/compose/ui/text/SaversTest.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2024 The Android Open Source Project
+ * Copyright 2021 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,13 +17,26 @@
 package androidx.compose.ui.text
 
 import androidx.compose.runtime.saveable.SaverScope
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.Shadow
+import androidx.compose.ui.text.font.FontStyle
+import androidx.compose.ui.text.font.FontSynthesis
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.intl.Locale
+import androidx.compose.ui.text.intl.LocaleList
+import androidx.compose.ui.text.style.BaselineShift
 import androidx.compose.ui.text.style.Hyphens
 import androidx.compose.ui.text.style.LineBreak
 import androidx.compose.ui.text.style.LineHeightStyle
 import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.text.style.TextDecoration
 import androidx.compose.ui.text.style.TextDirection
+import androidx.compose.ui.text.style.TextGeometricTransform
 import androidx.compose.ui.text.style.TextIndent
 import androidx.compose.ui.text.style.TextMotion
+import androidx.compose.ui.unit.TextUnit
+import androidx.compose.ui.unit.em
 import androidx.compose.ui.unit.sp
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
@@ -31,10 +44,110 @@
 import org.junit.runners.JUnit4
 
 @RunWith(JUnit4::class)
+@Suppress("Deprecation")
 class SaversTest {
     private val defaultSaverScope = SaverScope { true }
 
     @Test
+    fun test_TextUnit() {
+        val original = 2.sp
+        val saved = save(original, TextUnit.Saver, defaultSaverScope)
+        val restored: TextUnit? = restore(saved, TextUnit.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextUnit_unspecified() {
+        val original = TextUnit.Unspecified
+        val saved = save(original, TextUnit.Saver, defaultSaverScope)
+        val restored: TextUnit? = restore(saved, TextUnit.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Offset() {
+        val original = Offset(10f, 10f)
+        val saved = save(original, Offset.Saver, defaultSaverScope)
+        val restored: Offset? = restore(saved, Offset.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Offset_Unspecified() {
+        val original = Offset.Unspecified
+        val saved = save(original, Offset.Saver, defaultSaverScope)
+        val restored: Offset? = restore(saved, Offset.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Offset_Infinite() {
+        val original = Offset.Infinite
+        val saved = save(original, Offset.Saver, defaultSaverScope)
+        val restored: Offset? = restore(saved, Offset.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Color() {
+        val original = Color.Yellow
+        val saved = save(original, Color.Saver, defaultSaverScope)
+        val restored: Color? = restore(saved, Color.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Color_Unspecified() {
+        val original = Color.Unspecified
+        val saved = save(original, Color.Saver, defaultSaverScope)
+        val restored: Color? = restore(saved, Color.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Shadow() {
+        val original = Shadow(color = Color.Blue, offset = Offset(5f, 5f), blurRadius = 2f)
+        val saved = save(original, Shadow.Saver, defaultSaverScope)
+        val restored: Shadow? = restore(saved, Shadow.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Shadow_None() {
+        val original = Shadow.None
+        val saved = save(original, Shadow.Saver, defaultSaverScope)
+        val restored: Shadow? = restore(saved, Shadow.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_ParagraphStyle() {
+        val original = ParagraphStyle()
+        val saved = save(original, ParagraphStyleSaver, defaultSaverScope)
+        val restored: ParagraphStyle? = restore(saved, ParagraphStyleSaver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_ParagraphStyle_with_a_nonnull_value() {
+        val original = ParagraphStyle(textDirection = TextDirection.Rtl)
+        val saved = save(original, ParagraphStyleSaver, defaultSaverScope)
+        val restored: ParagraphStyle? = restore(saved, ParagraphStyleSaver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
     fun test_ParagraphStyle_with_no_null_value() {
         val original =
             ParagraphStyle(
@@ -55,6 +168,327 @@
     }
 
     @Test
+    fun test_SpanStyle() {
+        val original = SpanStyle()
+        val saved = save(original, SpanStyleSaver, defaultSaverScope)
+        val restored: SpanStyle? = restore(saved, SpanStyleSaver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_SpanStyle_with_a_nonnull_value() {
+        val original = SpanStyle(baselineShift = BaselineShift.Subscript)
+        val saved = save(original, SpanStyleSaver, defaultSaverScope)
+        val restored: SpanStyle? = restore(saved, SpanStyleSaver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_SpanStyle_with_no_null_value() {
+        val original =
+            SpanStyle(
+                color = Color.Red,
+                fontSize = 10.sp,
+                fontWeight = FontWeight.Bold,
+                fontStyle = FontStyle.Italic,
+                fontSynthesis = FontSynthesis.All,
+                // fontFamily =
+                fontFeatureSettings = "feature settings",
+                letterSpacing = 2.em,
+                baselineShift = BaselineShift.Superscript,
+                textGeometricTransform = TextGeometricTransform(2f, 3f),
+                localeList = LocaleList(Locale("sr-Latn-SR"), Locale("sr-Cyrl-SR"), Locale.current),
+                background = Color.Blue,
+                textDecoration = TextDecoration.LineThrough,
+                shadow = Shadow(color = Color.Red, offset = Offset(2f, 2f), blurRadius = 4f)
+            )
+        val saved = save(original, SpanStyleSaver, defaultSaverScope)
+        val restored: SpanStyle? = restore(saved, SpanStyleSaver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextLinkStyles() {
+        val original = TextLinkStyles(null)
+        val saved = save(original, TextLinkStylesSaver, defaultSaverScope)
+        val restored: TextLinkStyles? = restore(saved, TextLinkStylesSaver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextLinkStyles_withNonNullValues() {
+        val original =
+            TextLinkStyles(
+                SpanStyle(color = Color.Red),
+                SpanStyle(color = Color.Green),
+                SpanStyle(color = Color.Blue),
+                SpanStyle(color = Color.Gray)
+            )
+        val saved = save(original, TextLinkStylesSaver, defaultSaverScope)
+        val restored: TextLinkStyles? = restore(saved, TextLinkStylesSaver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_FontWeight() {
+        val original = FontWeight(123)
+        val saved = save(original, FontWeight.Saver, defaultSaverScope)
+        val restored: FontWeight? = restore(saved, FontWeight.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_FontWeight_w100() {
+        val original = FontWeight.W100
+        val saved = save(original, FontWeight.Saver, defaultSaverScope)
+        val restored: FontWeight? = restore(saved, FontWeight.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_BaselineShift() {
+        val original = BaselineShift(2f)
+        val saved = save(original, BaselineShift.Saver, defaultSaverScope)
+        val restored: BaselineShift? = restore(saved, BaselineShift.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_BaselineShift_None() {
+        val original = BaselineShift.None
+        val saved = save(original, BaselineShift.Saver, defaultSaverScope)
+        val restored: BaselineShift? = restore(saved, BaselineShift.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextDecoration() {
+        val original =
+            TextDecoration.combine(listOf(TextDecoration.LineThrough, TextDecoration.Underline))
+        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
+        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextDecoration_None() {
+        val original = TextDecoration.None
+        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
+        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun testSaveRestore_lineThrough() {
+        val original = TextDecoration.LineThrough
+        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
+        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun testSaveRestore_underline() {
+        val original = TextDecoration.Underline
+        val saved = save(original, TextDecoration.Saver, defaultSaverScope)
+        val restored: TextDecoration? = restore(saved, TextDecoration.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextGeometricTransform() {
+        val original = TextGeometricTransform(1f, 2f)
+        val saved = save(original, TextGeometricTransform.Saver, defaultSaverScope)
+        val restored: TextGeometricTransform? = restore(saved, TextGeometricTransform.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextGeometricTransform_None() {
+        val original = TextGeometricTransform.None
+        val saved = save(original, TextGeometricTransform.Saver, defaultSaverScope)
+        val restored: TextGeometricTransform? = restore(saved, TextGeometricTransform.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextIndent() {
+        val original = TextIndent(1.sp, 2.sp)
+        val saved = save(original, TextIndent.Saver, defaultSaverScope)
+        val restored: TextIndent? = restore(saved, TextIndent.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_TextIndent_None() {
+        val original = TextIndent.None
+        val saved = save(original, TextIndent.Saver, defaultSaverScope)
+        val restored: TextIndent? = restore(saved, TextIndent.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_AnnotatedString() {
+        val original = AnnotatedString("abc")
+        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
+
+        assertThat(AnnotatedStringSaver.restore(saved!!)).isEqualTo(original)
+    }
+
+    @Test
+    fun test_AnnotatedString_withSpanStyles() {
+        val original = buildAnnotatedString {
+            withStyle(SpanStyle(color = Color.Red)) { append("1") }
+            withStyle(SpanStyle(fontStyle = FontStyle.Italic)) { append("2") }
+        }
+
+        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
+
+        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_AnnotatedString_withParagraphStyles() {
+        val original = buildAnnotatedString {
+            withStyle(ParagraphStyle(textAlign = TextAlign.Justify)) { append("1") }
+            withStyle(ParagraphStyle(textDirection = TextDirection.Rtl)) { append("2") }
+        }
+
+        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
+
+        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @OptIn(ExperimentalTextApi::class)
+    @Test
+    fun test_AnnotatedString_withAnnotations() {
+        val original = buildAnnotatedString {
+            withAnnotation(tag = "Tag1", annotation = "Annotation1") { append("1") }
+            withAnnotation(VerbatimTtsAnnotation("verbatim1")) { append("2") }
+            withAnnotation(tag = "Tag2", annotation = "Annotation2") { append("3") }
+            withAnnotation(VerbatimTtsAnnotation("verbatim2")) { append("4") }
+            withAnnotation(UrlAnnotation("url1")) { append("5") }
+            withAnnotation(UrlAnnotation("url2")) { append("6") }
+            withLink(
+                LinkAnnotation.Url(
+                    "url3",
+                    TextLinkStyles(
+                        SpanStyle(color = Color.Red),
+                        SpanStyle(color = Color.Green),
+                        SpanStyle(color = Color.Blue),
+                        SpanStyle(color = Color.White)
+                    )
+                )
+            ) {
+                append("7")
+            }
+            withLink(
+                LinkAnnotation.Clickable(
+                    "tag3",
+                    TextLinkStyles(
+                        SpanStyle(color = Color.Red),
+                        SpanStyle(color = Color.Green),
+                        SpanStyle(color = Color.Blue),
+                        SpanStyle(background = Color.Gray)
+                    ),
+                    null
+                )
+            ) {
+                append("8")
+            }
+        }
+
+        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
+
+        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @OptIn(ExperimentalTextApi::class)
+    @Test
+    fun test_AnnotatedString_withSpanAndParagraphStylesAndAnnotations() {
+        val original = buildAnnotatedString {
+            withStyle(ParagraphStyle(textAlign = TextAlign.Justify)) { append("1") }
+            withStyle(ParagraphStyle(textDirection = TextDirection.Rtl)) { append("2") }
+            withStyle(SpanStyle(color = Color.Red)) { append("3") }
+            withStyle(SpanStyle(fontStyle = FontStyle.Italic)) { append("4") }
+            withAnnotation(tag = "Tag1", annotation = "Annotation1") { append("5") }
+            withAnnotation(VerbatimTtsAnnotation("verbatim1")) { append("6") }
+            withAnnotation(tag = "Tag2", annotation = "Annotation2") { append("7") }
+            withAnnotation(VerbatimTtsAnnotation("verbatim2")) { append("8") }
+            withAnnotation(UrlAnnotation("url1")) { append("9") }
+            withAnnotation(UrlAnnotation("url2")) { append("10") }
+            withLink(
+                LinkAnnotation.Url(
+                    "url3",
+                    TextLinkStyles(
+                        SpanStyle(color = Color.Red),
+                        SpanStyle(color = Color.Green),
+                        SpanStyle(color = Color.Blue),
+                        SpanStyle(color = Color.Yellow)
+                    )
+                )
+            ) {
+                append("11")
+            }
+            withLink(
+                LinkAnnotation.Clickable(
+                    "tag3",
+                    TextLinkStyles(
+                        SpanStyle(color = Color.Red),
+                        SpanStyle(color = Color.Green),
+                        SpanStyle(color = Color.Blue),
+                        SpanStyle(color = Color.Gray)
+                    ),
+                    null
+                )
+            ) {
+                append("12")
+            }
+        }
+
+        val saved = with(AnnotatedStringSaver) { defaultSaverScope.save(original) }
+
+        val restored: AnnotatedString = AnnotatedStringSaver.restore(saved!!)!!
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_Locale() {
+        val original = Locale("sr-Latn-SR")
+        val saved = with(Locale.Saver) { defaultSaverScope.save(original) }
+
+        assertThat(Locale.Saver.restore(saved!!)).isEqualTo(original)
+    }
+
+    @Test
+    fun test_LocaleList() {
+        val original = LocaleList(Locale("sr-Latn-SR"), Locale("sr-Cyrl-SR"), Locale.current)
+        val saved = with(LocaleList.Saver) { defaultSaverScope.save(original) }
+
+        assertThat(LocaleList.Saver.restore(saved!!)).isEqualTo(original)
+    }
+
+    @Test
     fun test_PlatformParagraphStyle() {
         val original = PlatformParagraphStyle.Default
         val saved = save(original, PlatformParagraphStyle.Saver, defaultSaverScope)
@@ -64,6 +498,29 @@
     }
 
     @Test
+    fun test_PlatformParagraphStyle_with_no_null_args() {
+        val original = PlatformParagraphStyle(EmojiSupportMatch.All, true)
+        val saved = save(original, PlatformParagraphStyle.Saver, defaultSaverScope)
+        val restored: PlatformParagraphStyle? = restore(saved, PlatformParagraphStyle.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
+    fun test_LineHeightStyle() {
+        val original =
+            LineHeightStyle(
+                LineHeightStyle.Alignment.Proportional,
+                LineHeightStyle.Trim.Both,
+                LineHeightStyle.Mode.Minimum
+            )
+        val saved = save(original, LineHeightStyle.Saver, defaultSaverScope)
+        val restored: LineHeightStyle? = restore(saved, LineHeightStyle.Saver)
+
+        assertThat(restored).isEqualTo(original)
+    }
+
+    @Test
     fun test_LineBreak() {
         val original = LineBreak.Paragraph
         val saved = save(original, LineBreak.Saver, defaultSaverScope)
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
index bc2bca0..496c90e 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat.android.kt
@@ -208,7 +208,7 @@
     // flaky, so we use this callback to test accessibility events.
     @VisibleForTesting
     internal var onSendAccessibilityEvent: (AccessibilityEvent) -> Boolean = {
-        view.parent.requestSendAccessibilityEvent(view, it)
+        trace("sendAccessibilityEvent") { view.parent.requestSendAccessibilityEvent(view, it) }
     }
 
     private val accessibilityManager: AccessibilityManager =
@@ -1519,7 +1519,7 @@
             event.contentDescription = contentDescription.fastJoinToString(",")
         }
 
-        return trace("sendEvent") { sendEvent(event) }
+        return sendEvent(event)
     }
 
     /**
@@ -2239,47 +2239,45 @@
         try {
             val subtreeChangedSemanticsNodesIds = MutableIntSet()
             for (notification in boundsUpdateChannel) {
-                trace("AccessibilityLoopIteration") {
-                    if (isEnabled) {
-                        for (i in subtreeChangedLayoutNodes.indices) {
-                            val layoutNode = subtreeChangedLayoutNodes.valueAt(i)
-                            trace("sendSubtreeChangeAccessibilityEvents") {
-                                sendSubtreeChangeAccessibilityEvents(
-                                    layoutNode,
-                                    subtreeChangedSemanticsNodesIds
-                                )
-                            }
-                            trace("sendTypeViewScrolledAccessibilityEvent") {
-                                sendTypeViewScrolledAccessibilityEvent(layoutNode)
-                            }
+                if (isEnabled) {
+                    for (i in subtreeChangedLayoutNodes.indices) {
+                        val layoutNode = subtreeChangedLayoutNodes.valueAt(i)
+                        trace("sendSubtreeChangeAccessibilityEvents") {
+                            sendSubtreeChangeAccessibilityEvents(
+                                layoutNode,
+                                subtreeChangedSemanticsNodesIds
+                            )
                         }
-                        subtreeChangedSemanticsNodesIds.clear()
-                        // When the bounds of layout nodes change, we will not always get semantics
-                        // change notifications because bounds is not part of semantics. And bounds
-                        // change from a layout node without semantics will affect the global bounds
-                        // of it children which has semantics. Bounds change will affect which nodes
-                        // are covered and which nodes are not, so the currentSemanticsNodes is not
-                        // up to date anymore.
-                        // After the subtree events are sent, accessibility services will get the
-                        // current visible/invisible state. We also try to do semantics tree diffing
-                        // to send out the proper accessibility events and update our copy here so
-                        // that
-                        // our incremental changes (represented by accessibility events) are
-                        // consistent
-                        // with accessibility services. That is: change - notify - new change -
-                        // notify, if we don't do the tree diffing and update our copy here, we will
-                        // combine old change and new change, which is missing finer-grained
-                        // notification.
-                        if (!checkingForSemanticsChanges) {
-                            checkingForSemanticsChanges = true
-                            handler.post(semanticsChangeChecker)
+                        trace("sendTypeViewScrolledAccessibilityEvent") {
+                            sendTypeViewScrolledAccessibilityEvent(layoutNode)
                         }
                     }
-                    subtreeChangedLayoutNodes.clear()
-                    pendingHorizontalScrollEvents.clear()
-                    pendingVerticalScrollEvents.clear()
-                    delay(SendRecurringAccessibilityEventsIntervalMillis)
+                    subtreeChangedSemanticsNodesIds.clear()
+                    // When the bounds of layout nodes change, we will not always get semantics
+                    // change notifications because bounds is not part of semantics. And bounds
+                    // change from a layout node without semantics will affect the global bounds
+                    // of it children which has semantics. Bounds change will affect which nodes
+                    // are covered and which nodes are not, so the currentSemanticsNodes is not
+                    // up to date anymore.
+                    // After the subtree events are sent, accessibility services will get the
+                    // current visible/invisible state. We also try to do semantics tree diffing
+                    // to send out the proper accessibility events and update our copy here so
+                    // that
+                    // our incremental changes (represented by accessibility events) are
+                    // consistent
+                    // with accessibility services. That is: change - notify - new change -
+                    // notify, if we don't do the tree diffing and update our copy here, we will
+                    // combine old change and new change, which is missing finer-grained
+                    // notification.
+                    if (!checkingForSemanticsChanges) {
+                        checkingForSemanticsChanges = true
+                        handler.post(semanticsChangeChecker)
+                    }
                 }
+                subtreeChangedLayoutNodes.clear()
+                pendingHorizontalScrollEvents.clear()
+                pendingVerticalScrollEvents.clear()
+                delay(SendRecurringAccessibilityEventsIntervalMillis)
             }
         } finally {
             subtreeChangedLayoutNodes.clear()
diff --git a/constraintlayout/constraintlayout-compose/api/1.1.0-beta01.txt b/constraintlayout/constraintlayout-compose/api/1.1.0-beta01.txt
deleted file mode 100644
index 0375873..0000000
--- a/constraintlayout/constraintlayout-compose/api/1.1.0-beta01.txt
+++ /dev/null
@@ -1,1013 +0,0 @@
-// Signature format: 4.0
-package androidx.constraintlayout.compose {
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class Arc {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.Arc.Companion Companion;
-  }
-
-  public static final class Arc.Companion {
-    method public androidx.constraintlayout.compose.Arc getAbove();
-    method public androidx.constraintlayout.compose.Arc getBelow();
-    method public androidx.constraintlayout.compose.Arc getFlip();
-    method public androidx.constraintlayout.compose.Arc getNone();
-    method public androidx.constraintlayout.compose.Arc getStartHorizontal();
-    method public androidx.constraintlayout.compose.Arc getStartVertical();
-    property public final androidx.constraintlayout.compose.Arc Above;
-    property public final androidx.constraintlayout.compose.Arc Below;
-    property public final androidx.constraintlayout.compose.Arc Flip;
-    property public final androidx.constraintlayout.compose.Arc None;
-    property public final androidx.constraintlayout.compose.Arc StartHorizontal;
-    property public final androidx.constraintlayout.compose.Arc StartVertical;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public abstract sealed class BaseKeyFrameScope {
-    method protected final <E extends androidx.constraintlayout.compose.NamedPropertyOrValue> kotlin.properties.ObservableProperty<E> addNameOnPropertyChange(E initialValue, optional String? nameOverride);
-    method protected final <T> kotlin.properties.ObservableProperty<T> addOnPropertyChange(T initialValue, optional String? nameOverride);
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public abstract sealed class BaseKeyFramesScope {
-    method public final androidx.constraintlayout.compose.Easing getEasing();
-    method public final void setEasing(androidx.constraintlayout.compose.Easing);
-    property public final androidx.constraintlayout.compose.Easing easing;
-  }
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface BaselineAnchorable {
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor anchor, optional float margin, optional float goneMargin);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor anchor, optional float margin, optional float goneMargin);
-  }
-
-  @androidx.compose.runtime.Immutable public final class ChainStyle {
-    field public static final androidx.constraintlayout.compose.ChainStyle.Companion Companion;
-  }
-
-  public static final class ChainStyle.Companion {
-    method @androidx.compose.runtime.Stable public androidx.constraintlayout.compose.ChainStyle Packed(float bias);
-    method public androidx.constraintlayout.compose.ChainStyle getPacked();
-    method public androidx.constraintlayout.compose.ChainStyle getSpread();
-    method public androidx.constraintlayout.compose.ChainStyle getSpreadInside();
-    property public final androidx.constraintlayout.compose.ChainStyle Packed;
-    property public final androidx.constraintlayout.compose.ChainStyle Spread;
-    property public final androidx.constraintlayout.compose.ChainStyle SpreadInside;
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Stable public final class ConstrainScope {
-    method public androidx.constraintlayout.compose.Dimension asDimension(float);
-    method public void centerAround(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerAround(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.constraintlayout.compose.ConstrainedLayoutReference other, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void centerTo(androidx.constraintlayout.compose.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.constraintlayout.compose.ConstrainedLayoutReference other, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void circular(androidx.constraintlayout.compose.ConstrainedLayoutReference other, float angle, float distance);
-    method public void clearConstraints();
-    method public void clearHorizontal();
-    method public void clearVertical();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteRight();
-    method public float getAlpha();
-    method public androidx.constraintlayout.compose.BaselineAnchorable getBaseline();
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getBottom();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getEnd();
-    method public androidx.constraintlayout.compose.Dimension getHeight();
-    method public float getHorizontalBias();
-    method public float getHorizontalChainWeight();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getParent();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getStart();
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getTop();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public float getVerticalBias();
-    method public float getVerticalChainWeight();
-    method public androidx.constraintlayout.compose.Visibility getVisibility();
-    method public androidx.constraintlayout.compose.Dimension getWidth();
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom, optional float topMargin, optional float bottomMargin, optional float topGoneMargin, optional float bottomGoneMargin, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom, optional float startMargin, optional float topMargin, optional float endMargin, optional float bottomMargin, optional float startGoneMargin, optional float topGoneMargin, optional float endGoneMargin, optional float bottomGoneMargin, optional @FloatRange(from=0.0, to=1.0) float horizontalBias, optional @FloatRange(from=0.0, to=1.0) float verticalBias);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end, optional float startMargin, optional float endMargin, optional float startGoneMargin, optional float endGoneMargin, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void resetDimensions();
-    method public void resetTransforms();
-    method public void setAlpha(float);
-    method public void setHeight(androidx.constraintlayout.compose.Dimension);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalChainWeight(float);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public void setVerticalBias(float);
-    method public void setVerticalChainWeight(float);
-    method public void setVisibility(androidx.constraintlayout.compose.Visibility);
-    method public void setWidth(androidx.constraintlayout.compose.Dimension);
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteLeft;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteRight;
-    property public final float alpha;
-    property public final androidx.constraintlayout.compose.BaselineAnchorable baseline;
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable bottom;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable end;
-    property public final androidx.constraintlayout.compose.Dimension height;
-    property public final float horizontalBias;
-    property public final float horizontalChainWeight;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference parent;
-    property public final float pivotX;
-    property public final float pivotY;
-    property public final float rotationX;
-    property public final float rotationY;
-    property public final float rotationZ;
-    property public final float scaleX;
-    property public final float scaleY;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable start;
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable top;
-    property public final float translationX;
-    property public final float translationY;
-    property public final float translationZ;
-    property public final float verticalBias;
-    property public final float verticalChainWeight;
-    property public final androidx.constraintlayout.compose.Visibility visibility;
-    property public final androidx.constraintlayout.compose.Dimension width;
-  }
-
-  @androidx.compose.runtime.Stable public final class ConstrainedLayoutReference extends androidx.constraintlayout.compose.LayoutReference {
-    ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
-    method public Object getId();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public Object id;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top;
-  }
-
-  public abstract class ConstraintLayoutBaseScope {
-    ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.constraintlayout.compose.State state);
-    method public final androidx.constraintlayout.compose.ConstrainScope constrain(androidx.constraintlayout.compose.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public final void constrain(androidx.constraintlayout.compose.ConstrainedLayoutReference[] refs, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public final androidx.constraintlayout.compose.HorizontalChainScope constrain(androidx.constraintlayout.compose.HorizontalChainReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.HorizontalChainScope,kotlin.Unit> constrainBlock);
-    method public final androidx.constraintlayout.compose.VerticalChainScope constrain(androidx.constraintlayout.compose.VerticalChainReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.VerticalChainScope,kotlin.Unit> constrainBlock);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference[] elements, optional float spacing, optional float[] weights);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference?[] elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float padding, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference?[] elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float paddingHorizontal, optional float paddingVertical, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference?[] elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float paddingLeft, optional float paddingTop, optional float paddingRight, optional float paddingBottom, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createGrid(androidx.constraintlayout.compose.LayoutReference[] elements, @IntRange(from=1L) int rows, @IntRange(from=1L) int columns, optional boolean isHorizontalArrangement, optional float verticalSpacing, optional float horizontalSpacing, optional float[] rowWeights, optional float[] columnWeights, optional androidx.constraintlayout.compose.Skip[] skips, optional androidx.constraintlayout.compose.Span[] spans, optional int flags);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.constraintlayout.compose.HorizontalChainReference createHorizontalChain(androidx.constraintlayout.compose.LayoutReference[] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference[] elements, optional float spacing, optional float[] weights);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.VerticalChainReference createVerticalChain(androidx.constraintlayout.compose.LayoutReference[] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
-    method @Deprecated protected final java.util.List<kotlin.jvm.functions.Function1<androidx.constraintlayout.compose.State,kotlin.Unit>> getTasks();
-    method public void reset();
-    method public final androidx.constraintlayout.compose.LayoutReference withChainParams(androidx.constraintlayout.compose.LayoutReference, optional float startMargin, optional float topMargin, optional float endMargin, optional float bottomMargin, optional float startGoneMargin, optional float topGoneMargin, optional float endGoneMargin, optional float bottomGoneMargin, optional float weight);
-    method public final androidx.constraintlayout.compose.LayoutReference withHorizontalChainParams(androidx.constraintlayout.compose.LayoutReference, optional float startMargin, optional float endMargin, optional float startGoneMargin, optional float endGoneMargin, optional float weight);
-    method public final androidx.constraintlayout.compose.LayoutReference withVerticalChainParams(androidx.constraintlayout.compose.LayoutReference, optional float topMargin, optional float bottomMargin, optional float topGoneMargin, optional float bottomGoneMargin, optional float weight);
-    property @Deprecated protected final java.util.List<kotlin.jvm.functions.Function1<androidx.constraintlayout.compose.State,kotlin.Unit>> tasks;
-  }
-
-  @androidx.compose.runtime.Stable public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.constraintlayout.compose.LayoutReference component2();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id, androidx.constraintlayout.compose.LayoutReference reference);
-    method public androidx.constraintlayout.compose.LayoutReference getReference();
-    property public final androidx.constraintlayout.compose.LayoutReference reference;
-  }
-
-  @androidx.compose.runtime.Stable public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.constraintlayout.compose.LayoutReference component3();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index, androidx.constraintlayout.compose.LayoutReference reference);
-    method public androidx.constraintlayout.compose.LayoutReference getReference();
-    property public final androidx.constraintlayout.compose.LayoutReference reference;
-  }
-
-  @androidx.compose.runtime.Stable public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.constraintlayout.compose.LayoutReference component3();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index, androidx.constraintlayout.compose.LayoutReference reference);
-    method public androidx.constraintlayout.compose.LayoutReference getReference();
-    property public final androidx.constraintlayout.compose.LayoutReference reference;
-  }
-
-  public final class ConstraintLayoutKt {
-    method @androidx.compose.runtime.Composable public static inline void ConstraintLayout(optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float>? animateChangesSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintLayoutScope,kotlin.Unit> content);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline void ConstraintLayout(optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional boolean animateChanges, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintLayoutScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static inline void ConstraintLayout(androidx.constraintlayout.compose.ConstraintSet constraintSet, optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float>? animateChangesSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline void ConstraintLayout(androidx.constraintlayout.compose.ConstraintSet constraintSet, optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional boolean animateChanges, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(androidx.constraintlayout.compose.ConstraintSet extendConstraintSet, @org.intellij.lang.annotations.Language("json5") String jsonContent);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(androidx.constraintlayout.compose.ConstraintSet extendConstraintSet, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(@org.intellij.lang.annotations.Language("json5") String jsonContent);
-    method @androidx.compose.runtime.Composable public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(@org.intellij.lang.annotations.Language("json5") String content, optional @org.intellij.lang.annotations.Language("json5") String? overrideVariables);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.constraintlayout.compose.Dimension.MaxCoercible atLeast(androidx.constraintlayout.compose.Dimension.Coercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension atLeast(androidx.constraintlayout.compose.Dimension.MinCoercible, float dp);
-    method @Deprecated public static androidx.constraintlayout.compose.Dimension atLeastWrapContent(androidx.constraintlayout.compose.Dimension.MinCoercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension.MinCoercible atMost(androidx.constraintlayout.compose.Dimension.Coercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension atMost(androidx.constraintlayout.compose.Dimension.MaxCoercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension.MaxCoercible getAtLeastWrapContent(androidx.constraintlayout.compose.Dimension.Coercible);
-    method public static androidx.constraintlayout.compose.Dimension getAtLeastWrapContent(androidx.constraintlayout.compose.Dimension.MinCoercible);
-    method public static androidx.constraintlayout.compose.Dimension.MinCoercible getAtMostWrapContent(androidx.constraintlayout.compose.Dimension.Coercible);
-    method public static androidx.constraintlayout.compose.Dimension getAtMostWrapContent(androidx.constraintlayout.compose.Dimension.MaxCoercible);
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.constraintlayout.compose.ConstraintLayoutBaseScope {
-    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier constrainAs(androidx.compose.ui.Modifier, androidx.constraintlayout.compose.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRef();
-    method @androidx.compose.runtime.Stable public androidx.constraintlayout.compose.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
-  }
-
-  public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component1();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component10();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component11();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component12();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component13();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component14();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component15();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component16();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component2();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component3();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component4();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component5();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component6();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component7();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component8();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component9();
-  }
-
-  public final class ConstraintLayoutTagKt {
-    method public static Object? getConstraintLayoutId(androidx.compose.ui.layout.Measurable);
-    method public static Object? getConstraintLayoutTag(androidx.compose.ui.layout.Measurable);
-    method public static androidx.compose.ui.Modifier layoutId(androidx.compose.ui.Modifier, String layoutId, optional String? tag);
-  }
-
-  public interface ConstraintLayoutTagParentData {
-    method public String getConstraintLayoutId();
-    method public String getConstraintLayoutTag();
-    property public abstract String constraintLayoutId;
-    property public abstract String constraintLayoutTag;
-  }
-
-  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmDefaultWithCompatibility public interface ConstraintSet {
-    method public void applyTo(androidx.constraintlayout.compose.State state, java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables);
-    method public default void applyTo(androidx.constraintlayout.core.state.Transition transition, int type);
-    method public default boolean isDirty(java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables);
-    method public default androidx.constraintlayout.compose.ConstraintSet override(String name, float value);
-  }
-
-  public final class ConstraintSetRef {
-    method public androidx.constraintlayout.compose.ConstraintSetRef copy(String name);
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.constraintlayout.compose.ConstraintLayoutBaseScope {
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRefFor(Object id);
-    method public androidx.constraintlayout.compose.ConstraintSetScope.ConstrainedLayoutReferences createRefsFor(java.lang.Object... ids);
-  }
-
-  public final class ConstraintSetScope.ConstrainedLayoutReferences {
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component1();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component10();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component11();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component12();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component13();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component14();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component15();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component16();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component2();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component3();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component4();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component5();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component6();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component7();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component8();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component9();
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class CurveFit {
-    method public String getName();
-    property public String name;
-    field public static final androidx.constraintlayout.compose.CurveFit.Companion Companion;
-  }
-
-  public static final class CurveFit.Companion {
-    method public androidx.constraintlayout.compose.CurveFit getLinear();
-    method public androidx.constraintlayout.compose.CurveFit getSpline();
-    property public final androidx.constraintlayout.compose.CurveFit Linear;
-    property public final androidx.constraintlayout.compose.CurveFit Spline;
-  }
-
-  @kotlin.jvm.JvmInline public final value class DebugFlags {
-    ctor public DebugFlags(optional boolean showBounds, optional boolean showPaths, optional boolean showKeyPositions);
-    method public boolean getShowBounds();
-    method public boolean getShowKeyPositions();
-    method public boolean getShowPaths();
-    property public final boolean showBounds;
-    property public final boolean showKeyPositions;
-    property public final boolean showPaths;
-    field public static final androidx.constraintlayout.compose.DebugFlags.Companion Companion;
-  }
-
-  public static final class DebugFlags.Companion {
-    method public int getAll();
-    method public int getNone();
-    property public final int All;
-    property public final int None;
-  }
-
-  public final class DesignElements {
-    method public void define(String name, kotlin.jvm.functions.Function2<? super java.lang.String,? super java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit> function);
-    method public java.util.HashMap<java.lang.String,kotlin.jvm.functions.Function2<java.lang.String,java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit>> getMap();
-    method public void setMap(java.util.HashMap<java.lang.String,kotlin.jvm.functions.Function2<java.lang.String,java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit>>);
-    property public final java.util.HashMap<java.lang.String,kotlin.jvm.functions.Function2<java.lang.String,java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit>> map;
-    field public static final androidx.constraintlayout.compose.DesignElements INSTANCE;
-  }
-
-  public interface DesignInfoProvider {
-    method public String getDesignInfo(int startX, int startY, String args);
-  }
-
-  public interface Dimension {
-    field public static final androidx.constraintlayout.compose.Dimension.Companion Companion;
-  }
-
-  public static interface Dimension.Coercible extends androidx.constraintlayout.compose.Dimension {
-  }
-
-  public static final class Dimension.Companion {
-    method public androidx.constraintlayout.compose.Dimension.Coercible getFillToConstraints();
-    method public androidx.constraintlayout.compose.Dimension getMatchParent();
-    method public androidx.constraintlayout.compose.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.constraintlayout.compose.Dimension getWrapContent();
-    method public androidx.constraintlayout.compose.Dimension percent(float percent);
-    method public androidx.constraintlayout.compose.Dimension.MinCoercible preferredValue(float dp);
-    method public androidx.constraintlayout.compose.Dimension ratio(String ratio);
-    method public androidx.constraintlayout.compose.Dimension value(float dp);
-    property public final androidx.constraintlayout.compose.Dimension.Coercible fillToConstraints;
-    property public final androidx.constraintlayout.compose.Dimension matchParent;
-    property public final androidx.constraintlayout.compose.Dimension.Coercible preferredWrapContent;
-    property public final androidx.constraintlayout.compose.Dimension wrapContent;
-  }
-
-  public static interface Dimension.MaxCoercible extends androidx.constraintlayout.compose.Dimension {
-  }
-
-  public static interface Dimension.MinCoercible extends androidx.constraintlayout.compose.Dimension {
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class Easing {
-    method public String getName();
-    property public String name;
-    field public static final androidx.constraintlayout.compose.Easing.Companion Companion;
-  }
-
-  public static final class Easing.Companion {
-    method public androidx.constraintlayout.compose.Easing cubic(float x1, float y1, float x2, float y2);
-    method public androidx.constraintlayout.compose.Easing getAccelerate();
-    method public androidx.constraintlayout.compose.Easing getAnticipate();
-    method public androidx.constraintlayout.compose.Easing getDecelerate();
-    method public androidx.constraintlayout.compose.Easing getLinear();
-    method public androidx.constraintlayout.compose.Easing getOvershoot();
-    method public androidx.constraintlayout.compose.Easing getStandard();
-    property public final androidx.constraintlayout.compose.Easing Accelerate;
-    property public final androidx.constraintlayout.compose.Easing Anticipate;
-    property public final androidx.constraintlayout.compose.Easing Decelerate;
-    property public final androidx.constraintlayout.compose.Easing Linear;
-    property public final androidx.constraintlayout.compose.Easing Overshoot;
-    property public final androidx.constraintlayout.compose.Easing Standard;
-  }
-
-  @SuppressCompatibility @kotlin.RequiresOptIn(message="MotionLayout API is experimental and it is likely to change.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalMotionApi {
-  }
-
-  @androidx.compose.runtime.Immutable public final class FlowStyle {
-    field public static final androidx.constraintlayout.compose.FlowStyle.Companion Companion;
-  }
-
-  public static final class FlowStyle.Companion {
-    method public androidx.constraintlayout.compose.FlowStyle getPacked();
-    method public androidx.constraintlayout.compose.FlowStyle getSpread();
-    method public androidx.constraintlayout.compose.FlowStyle getSpreadInside();
-    property public final androidx.constraintlayout.compose.FlowStyle Packed;
-    property public final androidx.constraintlayout.compose.FlowStyle Spread;
-    property public final androidx.constraintlayout.compose.FlowStyle SpreadInside;
-  }
-
-  @kotlin.jvm.JvmInline public final value class GridFlags {
-    ctor public GridFlags(optional boolean isPlaceLayoutsOnSpansFirst);
-    method public boolean isPlaceLayoutsOnSpansFirst();
-    property public final boolean isPlaceLayoutsOnSpansFirst;
-    field public static final androidx.constraintlayout.compose.GridFlags.Companion Companion;
-  }
-
-  public static final class GridFlags.Companion {
-    method public int getNone();
-    method public int getPlaceLayoutsOnSpansFirst();
-    property public final int None;
-    property public final int PlaceLayoutsOnSpansFirst;
-  }
-
-  @androidx.compose.runtime.Immutable public final class HorizontalAlign {
-    field public static final androidx.constraintlayout.compose.HorizontalAlign.Companion Companion;
-  }
-
-  public static final class HorizontalAlign.Companion {
-    method public androidx.constraintlayout.compose.HorizontalAlign getCenter();
-    method public androidx.constraintlayout.compose.HorizontalAlign getEnd();
-    method public androidx.constraintlayout.compose.HorizontalAlign getStart();
-    property public final androidx.constraintlayout.compose.HorizontalAlign Center;
-    property public final androidx.constraintlayout.compose.HorizontalAlign End;
-    property public final androidx.constraintlayout.compose.HorizontalAlign Start;
-  }
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface HorizontalAnchorable {
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor anchor, optional float margin, optional float goneMargin);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor anchor, optional float margin, optional float goneMargin);
-  }
-
-  @androidx.compose.runtime.Stable public final class HorizontalChainReference extends androidx.constraintlayout.compose.LayoutReference {
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start;
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Stable public final class HorizontalChainScope {
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteRight();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getEnd();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getParent();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getStart();
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteLeft;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteRight;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable end;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference parent;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable start;
-  }
-
-  public final class InvalidationStrategy {
-    ctor public InvalidationStrategy(optional kotlin.jvm.functions.Function3<? super androidx.constraintlayout.compose.InvalidationStrategySpecification,? super androidx.compose.ui.unit.Constraints,? super androidx.compose.ui.unit.Constraints,java.lang.Boolean>? onIncomingConstraints, kotlin.jvm.functions.Function0<kotlin.Unit>? onObservedStateChange);
-    method public kotlin.jvm.functions.Function3<androidx.constraintlayout.compose.InvalidationStrategySpecification,androidx.compose.ui.unit.Constraints,androidx.compose.ui.unit.Constraints,java.lang.Boolean>? getOnIncomingConstraints();
-    method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnObservedStateChange();
-    property public final kotlin.jvm.functions.Function3<androidx.constraintlayout.compose.InvalidationStrategySpecification,androidx.compose.ui.unit.Constraints,androidx.compose.ui.unit.Constraints,java.lang.Boolean>? onIncomingConstraints;
-    property public final kotlin.jvm.functions.Function0<kotlin.Unit>? onObservedStateChange;
-    field public static final androidx.constraintlayout.compose.InvalidationStrategy.Companion Companion;
-  }
-
-  public static final class InvalidationStrategy.Companion {
-    method public androidx.constraintlayout.compose.InvalidationStrategy getDefaultInvalidationStrategy();
-    property public final androidx.constraintlayout.compose.InvalidationStrategy DefaultInvalidationStrategy;
-  }
-
-  public final class InvalidationStrategySpecification {
-    method public boolean shouldInvalidateOnFixedHeight(long oldConstraints, long newConstraints, int skipCount, int threshold);
-    method public boolean shouldInvalidateOnFixedWidth(long oldConstraints, long newConstraints, int skipCount, int threshold);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyAttributeScope extends androidx.constraintlayout.compose.BaseKeyFrameScope {
-    method public float getAlpha();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public void setAlpha(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    property public final float alpha;
-    property public final float rotationX;
-    property public final float rotationY;
-    property public final float rotationZ;
-    property public final float scaleX;
-    property public final float scaleY;
-    property public final float translationX;
-    property public final float translationY;
-    property public final float translationZ;
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyAttributesScope extends androidx.constraintlayout.compose.BaseKeyFramesScope {
-    method public void frame(@IntRange(from=0L, to=100L) int frame, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyAttributeScope,kotlin.Unit> keyFrameContent);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyCycleScope extends androidx.constraintlayout.compose.BaseKeyFrameScope {
-    method public float getAlpha();
-    method public float getOffset();
-    method public float getPeriod();
-    method public float getPhase();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public void setAlpha(float);
-    method public void setOffset(float);
-    method public void setPeriod(float);
-    method public void setPhase(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    property public final float alpha;
-    property public final float offset;
-    property public final float period;
-    property public final float phase;
-    property public final float rotationX;
-    property public final float rotationY;
-    property public final float rotationZ;
-    property public final float scaleX;
-    property public final float scaleY;
-    property public final float translationX;
-    property public final float translationY;
-    property public final float translationZ;
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyCyclesScope extends androidx.constraintlayout.compose.BaseKeyFramesScope {
-    method public void frame(@IntRange(from=0L, to=100L) int frame, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyCycleScope,kotlin.Unit> keyFrameContent);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyPositionScope extends androidx.constraintlayout.compose.BaseKeyFrameScope {
-    method public androidx.constraintlayout.compose.CurveFit? getCurveFit();
-    method public float getPercentHeight();
-    method public float getPercentWidth();
-    method public float getPercentX();
-    method public float getPercentY();
-    method public void setCurveFit(androidx.constraintlayout.compose.CurveFit?);
-    method public void setPercentHeight(float);
-    method public void setPercentWidth(float);
-    method public void setPercentX(float);
-    method public void setPercentY(float);
-    property public final androidx.constraintlayout.compose.CurveFit? curveFit;
-    property public final float percentHeight;
-    property public final float percentWidth;
-    property public final float percentX;
-    property public final float percentY;
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyPositionsScope extends androidx.constraintlayout.compose.BaseKeyFramesScope {
-    method public void frame(@IntRange(from=0L, to=100L) int frame, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyPositionScope,kotlin.Unit> keyFrameContent);
-    method public androidx.constraintlayout.compose.RelativePosition getType();
-    method public void setType(androidx.constraintlayout.compose.RelativePosition);
-    property public final androidx.constraintlayout.compose.RelativePosition type;
-  }
-
-  public enum LayoutInfoFlags {
-    enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags BOUNDS;
-    enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags NONE;
-  }
-
-  public interface LayoutInformationReceiver {
-    method public androidx.constraintlayout.compose.MotionLayoutDebugFlags getForcedDrawDebug();
-    method public int getForcedHeight();
-    method public float getForcedProgress();
-    method public int getForcedWidth();
-    method public androidx.constraintlayout.compose.LayoutInfoFlags getLayoutInformationMode();
-    method public void onNewProgress(float progress);
-    method public void resetForcedProgress();
-    method public void setLayoutInformation(String information);
-    method public void setUpdateFlag(androidx.compose.runtime.MutableState<java.lang.Long> needsUpdate);
-  }
-
-  @androidx.compose.runtime.Stable public abstract class LayoutReference {
-  }
-
-  public final class MotionCarouselKt {
-    method @androidx.compose.runtime.Composable public static void ItemHolder(int i, String slotPrefix, boolean showSlot, kotlin.jvm.functions.Function0<kotlin.Unit> function);
-    method @androidx.compose.runtime.Composable public static void MotionCarousel(androidx.constraintlayout.compose.MotionScene motionScene, int initialSlotIndex, int numSlots, optional String backwardTransition, optional String forwardTransition, optional String slotPrefix, optional boolean showSlots, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionCarouselScope,kotlin.Unit> content);
-    method public static inline <T> void items(androidx.constraintlayout.compose.MotionCarouselScope, java.util.List<? extends T> items, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method public static inline <T> void itemsWithProperties(androidx.constraintlayout.compose.MotionCarouselScope, java.util.List<? extends T> items, kotlin.jvm.functions.Function2<? super T,? super androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties>,kotlin.Unit> itemContent);
-  }
-
-  public interface MotionCarouselScope {
-    method public void items(int count, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> itemContent);
-    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 interface MotionItemsProvider {
-    method public int count();
-    method public kotlin.jvm.functions.Function0<kotlin.Unit> getContent(int index);
-    method public kotlin.jvm.functions.Function0<kotlin.Unit> getContent(int index, androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties> properties);
-    method public boolean hasItemsWithProperties();
-  }
-
-  public enum MotionLayoutDebugFlags {
-    enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags NONE;
-    enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags SHOW_ALL;
-    enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags UNKNOWN;
-  }
-
-  @Deprecated public enum MotionLayoutFlag {
-    enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag Default;
-    enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag FullMeasure;
-  }
-
-  public final class MotionLayoutKt {
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static inline void MotionLayout(androidx.constraintlayout.compose.ConstraintSet start, androidx.constraintlayout.compose.ConstraintSet end, float progress, optional androidx.compose.ui.Modifier modifier, optional androidx.constraintlayout.compose.Transition? transition, optional int debugFlags, optional int optimizationLevel, optional androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static inline void MotionLayout(androidx.constraintlayout.compose.MotionScene motionScene, float progress, optional androidx.compose.ui.Modifier modifier, optional String transitionName, optional int debugFlags, optional int optimizationLevel, optional androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static inline void MotionLayout(androidx.constraintlayout.compose.MotionScene motionScene, String? constraintSetName, androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, optional int debugFlags, optional int optimizationLevel, optional androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class MotionLayoutScope {
-    method public long customColor(String id, String name);
-    method public float customDistance(String id, String name);
-    method public float customFloat(String id, String name);
-    method public long customFontSize(String id, String name);
-    method public int customInt(String id, String name);
-    method public androidx.constraintlayout.compose.MotionLayoutScope.CustomProperties customProperties(String id);
-    method @Deprecated public long motionColor(String id, String name);
-    method @Deprecated public float motionDistance(String id, String name);
-    method @Deprecated public float motionFloat(String id, String name);
-    method @Deprecated public long motionFontSize(String id, String name);
-    method @Deprecated public int motionInt(String id, String name);
-    method @Deprecated @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties> motionProperties(String id);
-    method @Deprecated public androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties motionProperties(String id, String tag);
-    method public androidx.compose.ui.Modifier onStartEndBoundsChanged(androidx.compose.ui.Modifier, Object layoutId, kotlin.jvm.functions.Function2<? super androidx.compose.ui.geometry.Rect,? super androidx.compose.ui.geometry.Rect,kotlin.Unit> onBoundsChanged);
-  }
-
-  public final class MotionLayoutScope.CustomProperties {
-    method public long color(String name);
-    method public float distance(String name);
-    method public float float(String name);
-    method public long fontSize(String name);
-    method public int int(String name);
-  }
-
-  public final class MotionLayoutScope.MotionProperties {
-    method public long color(String name);
-    method public float distance(String name);
-    method public float float(String name);
-    method public long fontSize(String name);
-    method public String id();
-    method public int int(String name);
-    method public String? tag();
-  }
-
-  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.constraintlayout.compose.ExperimentalMotionApi public interface MotionScene extends androidx.constraintlayout.core.state.CoreMotionScene {
-    method public androidx.constraintlayout.compose.ConstraintSet? getConstraintSetInstance(String name);
-    method public androidx.constraintlayout.compose.Transition? getTransitionInstance(String name);
-  }
-
-  public final class MotionSceneKt {
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.MotionScene MotionScene(@org.intellij.lang.annotations.Language("json5") String content);
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class MotionSceneScope {
-    method public androidx.constraintlayout.compose.ConstraintSetRef addConstraintSet(androidx.constraintlayout.compose.ConstraintSet constraintSet, optional String? name);
-    method public void addTransition(androidx.constraintlayout.compose.Transition transition, optional String? name);
-    method public androidx.constraintlayout.compose.ConstraintSetRef constraintSet(optional String? name, optional androidx.constraintlayout.compose.ConstraintSetRef? extendConstraintSet, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintSetScope,kotlin.Unit> constraintSetContent);
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRefFor(Object id);
-    method public androidx.constraintlayout.compose.MotionSceneScope.ConstrainedLayoutReferences createRefsFor(java.lang.Object... ids);
-    method public void customColor(androidx.constraintlayout.compose.ConstrainScope, String name, long value);
-    method public void customColor(androidx.constraintlayout.compose.KeyAttributeScope, String name, long value);
-    method public void customDistance(androidx.constraintlayout.compose.ConstrainScope, String name, float value);
-    method public void customDistance(androidx.constraintlayout.compose.KeyAttributeScope, String name, float value);
-    method public void customFloat(androidx.constraintlayout.compose.ConstrainScope, String name, float value);
-    method public void customFloat(androidx.constraintlayout.compose.KeyAttributeScope, String name, float value);
-    method public void customFontSize(androidx.constraintlayout.compose.ConstrainScope, String name, long value);
-    method public void customFontSize(androidx.constraintlayout.compose.KeyAttributeScope, String name, long value);
-    method public void customInt(androidx.constraintlayout.compose.ConstrainScope, String name, int value);
-    method public void customInt(androidx.constraintlayout.compose.KeyAttributeScope, String name, int value);
-    method public void defaultTransition(androidx.constraintlayout.compose.ConstraintSetRef from, androidx.constraintlayout.compose.ConstraintSetRef to, optional kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.TransitionScope,kotlin.Unit> transitionContent);
-    method public float getStaggeredWeight(androidx.constraintlayout.compose.ConstrainScope);
-    method public void setStaggeredWeight(androidx.constraintlayout.compose.ConstrainScope, float);
-    method public void transition(androidx.constraintlayout.compose.ConstraintSetRef from, androidx.constraintlayout.compose.ConstraintSetRef to, optional String? name, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.TransitionScope,kotlin.Unit> transitionContent);
-  }
-
-  public final class MotionSceneScope.ConstrainedLayoutReferences {
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component1();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component10();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component11();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component12();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component13();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component14();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component15();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component16();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component2();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component3();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component4();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component5();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component6();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component7();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component8();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component9();
-  }
-
-  public final class MotionSceneScopeKt {
-    method @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.MotionScene MotionScene(kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionSceneScope,kotlin.Unit> motionSceneContent);
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class OnSwipe {
-    ctor public OnSwipe(androidx.constraintlayout.compose.ConstrainedLayoutReference anchor, androidx.constraintlayout.compose.SwipeSide side, androidx.constraintlayout.compose.SwipeDirection direction, optional float dragScale, optional float dragThreshold, optional androidx.constraintlayout.compose.ConstrainedLayoutReference? dragAround, optional androidx.constraintlayout.compose.ConstrainedLayoutReference? limitBoundsTo, optional androidx.constraintlayout.compose.SwipeTouchUp onTouchUp, optional androidx.constraintlayout.compose.SwipeMode mode);
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getAnchor();
-    method public androidx.constraintlayout.compose.SwipeDirection getDirection();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference? getDragAround();
-    method public float getDragScale();
-    method public float getDragThreshold();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference? getLimitBoundsTo();
-    method public androidx.constraintlayout.compose.SwipeMode getMode();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getOnTouchUp();
-    method public androidx.constraintlayout.compose.SwipeSide getSide();
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference anchor;
-    property public final androidx.constraintlayout.compose.SwipeDirection direction;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference? dragAround;
-    property public final float dragScale;
-    property public final float dragThreshold;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference? limitBoundsTo;
-    property public final androidx.constraintlayout.compose.SwipeMode mode;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp onTouchUp;
-    property public final androidx.constraintlayout.compose.SwipeSide side;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class RelativePosition {
-    method public String getName();
-    property public String name;
-    field public static final androidx.constraintlayout.compose.RelativePosition.Companion Companion;
-  }
-
-  public static final class RelativePosition.Companion {
-    method public androidx.constraintlayout.compose.RelativePosition getDelta();
-    method public androidx.constraintlayout.compose.RelativePosition getParent();
-    method public androidx.constraintlayout.compose.RelativePosition getPath();
-    property public final androidx.constraintlayout.compose.RelativePosition Delta;
-    property public final androidx.constraintlayout.compose.RelativePosition Parent;
-    property public final androidx.constraintlayout.compose.RelativePosition Path;
-  }
-
-  @kotlin.jvm.JvmInline public final value class Skip {
-    ctor public Skip(@IntRange(from=0L) int position, @IntRange(from=1L) int size);
-    ctor public Skip(@IntRange(from=0L) int position, @IntRange(from=1L) int rows, @IntRange(from=1L) int columns);
-    method public String getDescription();
-    property public final String description;
-  }
-
-  @kotlin.jvm.JvmInline public final value class Span {
-    ctor public Span(@IntRange(from=0L) int position, @IntRange(from=1L) int size);
-    ctor public Span(@IntRange(from=0L) int position, @IntRange(from=1L) int rows, @IntRange(from=1L) int columns);
-    ctor public Span(String description);
-    method public String getDescription();
-    property public final String description;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SpringBoundary {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SpringBoundary.Companion Companion;
-  }
-
-  public static final class SpringBoundary.Companion {
-    method public androidx.constraintlayout.compose.SpringBoundary getBounceBoth();
-    method public androidx.constraintlayout.compose.SpringBoundary getBounceEnd();
-    method public androidx.constraintlayout.compose.SpringBoundary getBounceStart();
-    method public androidx.constraintlayout.compose.SpringBoundary getOvershoot();
-    property public final androidx.constraintlayout.compose.SpringBoundary BounceBoth;
-    property public final androidx.constraintlayout.compose.SpringBoundary BounceEnd;
-    property public final androidx.constraintlayout.compose.SpringBoundary BounceStart;
-    property public final androidx.constraintlayout.compose.SpringBoundary Overshoot;
-  }
-
-  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();
-    method @Deprecated public androidx.compose.ui.unit.LayoutDirection getLayoutDirection();
-    method public long getRootIncomingConstraints();
-    method @Deprecated public void setLayoutDirection(androidx.compose.ui.unit.LayoutDirection);
-    method public void setRootIncomingConstraints(long);
-    property public final androidx.compose.ui.unit.Density density;
-    property @Deprecated public final androidx.compose.ui.unit.LayoutDirection layoutDirection;
-    property public final long rootIncomingConstraints;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeDirection {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeDirection.Companion Companion;
-  }
-
-  public static final class SwipeDirection.Companion {
-    method public androidx.constraintlayout.compose.SwipeDirection getClockwise();
-    method public androidx.constraintlayout.compose.SwipeDirection getCounterclockwise();
-    method public androidx.constraintlayout.compose.SwipeDirection getDown();
-    method public androidx.constraintlayout.compose.SwipeDirection getEnd();
-    method public androidx.constraintlayout.compose.SwipeDirection getLeft();
-    method public androidx.constraintlayout.compose.SwipeDirection getRight();
-    method public androidx.constraintlayout.compose.SwipeDirection getStart();
-    method public androidx.constraintlayout.compose.SwipeDirection getUp();
-    property public final androidx.constraintlayout.compose.SwipeDirection Clockwise;
-    property public final androidx.constraintlayout.compose.SwipeDirection Counterclockwise;
-    property public final androidx.constraintlayout.compose.SwipeDirection Down;
-    property public final androidx.constraintlayout.compose.SwipeDirection End;
-    property public final androidx.constraintlayout.compose.SwipeDirection Left;
-    property public final androidx.constraintlayout.compose.SwipeDirection Right;
-    property public final androidx.constraintlayout.compose.SwipeDirection Start;
-    property public final androidx.constraintlayout.compose.SwipeDirection Up;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeMode {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeMode.Companion Companion;
-  }
-
-  public static final class SwipeMode.Companion {
-    method public androidx.constraintlayout.compose.SwipeMode getSpring();
-    method public androidx.constraintlayout.compose.SwipeMode getVelocity();
-    method public androidx.constraintlayout.compose.SwipeMode spring(optional float mass, optional float stiffness, optional float damping, optional float threshold, optional androidx.constraintlayout.compose.SpringBoundary boundary);
-    method public androidx.constraintlayout.compose.SwipeMode velocity(optional float maxVelocity, optional float maxAcceleration);
-    property public final androidx.constraintlayout.compose.SwipeMode Spring;
-    property public final androidx.constraintlayout.compose.SwipeMode Velocity;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeSide {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeSide.Companion Companion;
-  }
-
-  public static final class SwipeSide.Companion {
-    method public androidx.constraintlayout.compose.SwipeSide getBottom();
-    method public androidx.constraintlayout.compose.SwipeSide getEnd();
-    method public androidx.constraintlayout.compose.SwipeSide getLeft();
-    method public androidx.constraintlayout.compose.SwipeSide getMiddle();
-    method public androidx.constraintlayout.compose.SwipeSide getRight();
-    method public androidx.constraintlayout.compose.SwipeSide getStart();
-    method public androidx.constraintlayout.compose.SwipeSide getTop();
-    property public final androidx.constraintlayout.compose.SwipeSide Bottom;
-    property public final androidx.constraintlayout.compose.SwipeSide End;
-    property public final androidx.constraintlayout.compose.SwipeSide Left;
-    property public final androidx.constraintlayout.compose.SwipeSide Middle;
-    property public final androidx.constraintlayout.compose.SwipeSide Right;
-    property public final androidx.constraintlayout.compose.SwipeSide Start;
-    property public final androidx.constraintlayout.compose.SwipeSide Top;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeTouchUp {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeTouchUp.Companion Companion;
-  }
-
-  public static final class SwipeTouchUp.Companion {
-    method public androidx.constraintlayout.compose.SwipeTouchUp getAutoComplete();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getDecelerate();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getNeverCompleteEnd();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getNeverCompleteStart();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getStop();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getToEnd();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getToStart();
-    property public final androidx.constraintlayout.compose.SwipeTouchUp AutoComplete;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp Decelerate;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp NeverCompleteEnd;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp NeverCompleteStart;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp Stop;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp ToEnd;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp ToStart;
-  }
-
-  public final class ToolingUtilsKt {
-    method public static androidx.compose.ui.semantics.SemanticsPropertyKey<androidx.constraintlayout.compose.DesignInfoProvider> getDesignInfoDataKey();
-    property public static final androidx.compose.ui.semantics.SemanticsPropertyKey<androidx.constraintlayout.compose.DesignInfoProvider> DesignInfoDataKey;
-  }
-
-  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.constraintlayout.compose.ExperimentalMotionApi public interface Transition {
-    method public String getEndConstraintSetId();
-    method public String getStartConstraintSetId();
-  }
-
-  public final class TransitionKt {
-    method @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.Transition Transition(@org.intellij.lang.annotations.Language("json5") String content);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class TransitionScope {
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRefFor(Object id);
-    method public float getMaxStaggerDelay();
-    method public androidx.constraintlayout.compose.Arc getMotionArc();
-    method public androidx.constraintlayout.compose.OnSwipe? getOnSwipe();
-    method public void keyAttributes(androidx.constraintlayout.compose.ConstrainedLayoutReference[] targets, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyAttributesScope,kotlin.Unit> keyAttributesContent);
-    method public void keyCycles(androidx.constraintlayout.compose.ConstrainedLayoutReference[] targets, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyCyclesScope,kotlin.Unit> keyCyclesContent);
-    method public void keyPositions(androidx.constraintlayout.compose.ConstrainedLayoutReference[] targets, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyPositionsScope,kotlin.Unit> keyPositionsContent);
-    method public void setMaxStaggerDelay(float);
-    method public void setMotionArc(androidx.constraintlayout.compose.Arc);
-    method public void setOnSwipe(androidx.constraintlayout.compose.OnSwipe?);
-    property public final float maxStaggerDelay;
-    property public final androidx.constraintlayout.compose.Arc motionArc;
-    property public final androidx.constraintlayout.compose.OnSwipe? onSwipe;
-  }
-
-  public final class TransitionScopeKt {
-    method @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.Transition Transition(optional String from, optional String to, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.TransitionScope,kotlin.Unit> content);
-  }
-
-  @androidx.compose.runtime.Immutable public final class VerticalAlign {
-    field public static final androidx.constraintlayout.compose.VerticalAlign.Companion Companion;
-  }
-
-  public static final class VerticalAlign.Companion {
-    method public androidx.constraintlayout.compose.VerticalAlign getBaseline();
-    method public androidx.constraintlayout.compose.VerticalAlign getBottom();
-    method public androidx.constraintlayout.compose.VerticalAlign getCenter();
-    method public androidx.constraintlayout.compose.VerticalAlign getTop();
-    property public final androidx.constraintlayout.compose.VerticalAlign Baseline;
-    property public final androidx.constraintlayout.compose.VerticalAlign Bottom;
-    property public final androidx.constraintlayout.compose.VerticalAlign Center;
-    property public final androidx.constraintlayout.compose.VerticalAlign Top;
-  }
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface VerticalAnchorable {
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor anchor, optional float margin, optional float goneMargin);
-  }
-
-  @androidx.compose.runtime.Stable public final class VerticalChainReference extends androidx.constraintlayout.compose.LayoutReference {
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top;
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Stable public final class VerticalChainScope {
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getBottom();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getParent();
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getTop();
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable bottom;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference parent;
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable top;
-  }
-
-  @androidx.compose.runtime.Immutable public final class Visibility {
-    field public static final androidx.constraintlayout.compose.Visibility.Companion Companion;
-  }
-
-  public static final class Visibility.Companion {
-    method public androidx.constraintlayout.compose.Visibility getGone();
-    method public androidx.constraintlayout.compose.Visibility getInvisible();
-    method public androidx.constraintlayout.compose.Visibility getVisible();
-    property public final androidx.constraintlayout.compose.Visibility Gone;
-    property public final androidx.constraintlayout.compose.Visibility Invisible;
-    property public final androidx.constraintlayout.compose.Visibility Visible;
-  }
-
-  @androidx.compose.runtime.Immutable public final class Wrap {
-    field public static final androidx.constraintlayout.compose.Wrap.Companion Companion;
-  }
-
-  public static final class Wrap.Companion {
-    method public androidx.constraintlayout.compose.Wrap getAligned();
-    method public androidx.constraintlayout.compose.Wrap getChain();
-    method public androidx.constraintlayout.compose.Wrap getNone();
-    property public final androidx.constraintlayout.compose.Wrap Aligned;
-    property public final androidx.constraintlayout.compose.Wrap Chain;
-    property public final androidx.constraintlayout.compose.Wrap None;
-  }
-
-}
-
diff --git a/constraintlayout/constraintlayout-compose/api/restricted_1.1.0-beta01.txt b/constraintlayout/constraintlayout-compose/api/restricted_1.1.0-beta01.txt
deleted file mode 100644
index 60bc75d..0000000
--- a/constraintlayout/constraintlayout-compose/api/restricted_1.1.0-beta01.txt
+++ /dev/null
@@ -1,1103 +0,0 @@
-// Signature format: 4.0
-package androidx.constraintlayout.compose {
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class Arc {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.Arc.Companion Companion;
-  }
-
-  public static final class Arc.Companion {
-    method public androidx.constraintlayout.compose.Arc getAbove();
-    method public androidx.constraintlayout.compose.Arc getBelow();
-    method public androidx.constraintlayout.compose.Arc getFlip();
-    method public androidx.constraintlayout.compose.Arc getNone();
-    method public androidx.constraintlayout.compose.Arc getStartHorizontal();
-    method public androidx.constraintlayout.compose.Arc getStartVertical();
-    property public final androidx.constraintlayout.compose.Arc Above;
-    property public final androidx.constraintlayout.compose.Arc Below;
-    property public final androidx.constraintlayout.compose.Arc Flip;
-    property public final androidx.constraintlayout.compose.Arc None;
-    property public final androidx.constraintlayout.compose.Arc StartHorizontal;
-    property public final androidx.constraintlayout.compose.Arc StartVertical;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public abstract sealed class BaseKeyFrameScope {
-    method protected final <E extends androidx.constraintlayout.compose.NamedPropertyOrValue> kotlin.properties.ObservableProperty<E> addNameOnPropertyChange(E initialValue, optional String? nameOverride);
-    method protected final <T> kotlin.properties.ObservableProperty<T> addOnPropertyChange(T initialValue, optional String? nameOverride);
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public abstract sealed class BaseKeyFramesScope {
-    method public final androidx.constraintlayout.compose.Easing getEasing();
-    method public final void setEasing(androidx.constraintlayout.compose.Easing);
-    property public final androidx.constraintlayout.compose.Easing easing;
-  }
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface BaselineAnchorable {
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor anchor, optional float margin, optional float goneMargin);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor anchor, optional float margin, optional float goneMargin);
-  }
-
-  @androidx.compose.runtime.Immutable public final class ChainStyle {
-    field public static final androidx.constraintlayout.compose.ChainStyle.Companion Companion;
-  }
-
-  public static final class ChainStyle.Companion {
-    method @androidx.compose.runtime.Stable public androidx.constraintlayout.compose.ChainStyle Packed(float bias);
-    method public androidx.constraintlayout.compose.ChainStyle getPacked();
-    method public androidx.constraintlayout.compose.ChainStyle getSpread();
-    method public androidx.constraintlayout.compose.ChainStyle getSpreadInside();
-    property public final androidx.constraintlayout.compose.ChainStyle Packed;
-    property public final androidx.constraintlayout.compose.ChainStyle Spread;
-    property public final androidx.constraintlayout.compose.ChainStyle SpreadInside;
-  }
-
-  @kotlin.PublishedApi internal enum CompositionSource {
-    enum_constant public static final androidx.constraintlayout.compose.CompositionSource Content;
-    enum_constant public static final androidx.constraintlayout.compose.CompositionSource Unknown;
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Stable public final class ConstrainScope {
-    method public androidx.constraintlayout.compose.Dimension asDimension(float);
-    method public void centerAround(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerAround(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.constraintlayout.compose.ConstrainedLayoutReference other, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void centerTo(androidx.constraintlayout.compose.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.constraintlayout.compose.ConstrainedLayoutReference other, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void circular(androidx.constraintlayout.compose.ConstrainedLayoutReference other, float angle, float distance);
-    method public void clearConstraints();
-    method public void clearHorizontal();
-    method public void clearVertical();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteRight();
-    method public float getAlpha();
-    method public androidx.constraintlayout.compose.BaselineAnchorable getBaseline();
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getBottom();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getEnd();
-    method public androidx.constraintlayout.compose.Dimension getHeight();
-    method public float getHorizontalBias();
-    method public float getHorizontalChainWeight();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getParent();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getStart();
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getTop();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public float getVerticalBias();
-    method public float getVerticalChainWeight();
-    method public androidx.constraintlayout.compose.Visibility getVisibility();
-    method public androidx.constraintlayout.compose.Dimension getWidth();
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom, optional float topMargin, optional float bottomMargin, optional float topGoneMargin, optional float bottomGoneMargin, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom, optional float startMargin, optional float topMargin, optional float endMargin, optional float bottomMargin, optional float startGoneMargin, optional float topGoneMargin, optional float endGoneMargin, optional float bottomGoneMargin, optional @FloatRange(from=0.0, to=1.0) float horizontalBias, optional @FloatRange(from=0.0, to=1.0) float verticalBias);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end, optional float startMargin, optional float endMargin, optional float startGoneMargin, optional float endGoneMargin, optional @FloatRange(from=0.0, to=1.0) float bias);
-    method public void resetDimensions();
-    method public void resetTransforms();
-    method public void setAlpha(float);
-    method public void setHeight(androidx.constraintlayout.compose.Dimension);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalChainWeight(float);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public void setVerticalBias(float);
-    method public void setVerticalChainWeight(float);
-    method public void setVisibility(androidx.constraintlayout.compose.Visibility);
-    method public void setWidth(androidx.constraintlayout.compose.Dimension);
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteLeft;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteRight;
-    property public final float alpha;
-    property public final androidx.constraintlayout.compose.BaselineAnchorable baseline;
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable bottom;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable end;
-    property public final androidx.constraintlayout.compose.Dimension height;
-    property public final float horizontalBias;
-    property public final float horizontalChainWeight;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference parent;
-    property public final float pivotX;
-    property public final float pivotY;
-    property public final float rotationX;
-    property public final float rotationY;
-    property public final float rotationZ;
-    property public final float scaleX;
-    property public final float scaleY;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable start;
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable top;
-    property public final float translationX;
-    property public final float translationY;
-    property public final float translationZ;
-    property public final float verticalBias;
-    property public final float verticalChainWeight;
-    property public final androidx.constraintlayout.compose.Visibility visibility;
-    property public final androidx.constraintlayout.compose.Dimension width;
-  }
-
-  @androidx.compose.runtime.Stable public final class ConstrainedLayoutReference extends androidx.constraintlayout.compose.LayoutReference {
-    ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
-    method public Object getId();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public Object id;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top;
-  }
-
-  public abstract class ConstraintLayoutBaseScope {
-    ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.constraintlayout.compose.State state);
-    method public final androidx.constraintlayout.compose.ConstrainScope constrain(androidx.constraintlayout.compose.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public final void constrain(androidx.constraintlayout.compose.ConstrainedLayoutReference[] refs, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public final androidx.constraintlayout.compose.HorizontalChainScope constrain(androidx.constraintlayout.compose.HorizontalChainReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.HorizontalChainScope,kotlin.Unit> constrainBlock);
-    method public final androidx.constraintlayout.compose.VerticalChainScope constrain(androidx.constraintlayout.compose.VerticalChainReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.VerticalChainScope,kotlin.Unit> constrainBlock);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createColumn(androidx.constraintlayout.compose.LayoutReference[] elements, optional float spacing, optional float[] weights);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference?[] elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float padding, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference?[] elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float paddingHorizontal, optional float paddingVertical, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createFlow(androidx.constraintlayout.compose.LayoutReference?[] elements, optional boolean flowVertically, optional float verticalGap, optional float horizontalGap, optional int maxElement, optional float paddingLeft, optional float paddingTop, optional float paddingRight, optional float paddingBottom, optional androidx.constraintlayout.compose.Wrap wrapMode, optional androidx.constraintlayout.compose.VerticalAlign verticalAlign, optional androidx.constraintlayout.compose.HorizontalAlign horizontalAlign, optional float horizontalFlowBias, optional float verticalFlowBias, optional androidx.constraintlayout.compose.FlowStyle verticalStyle, optional androidx.constraintlayout.compose.FlowStyle horizontalStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createGrid(androidx.constraintlayout.compose.LayoutReference[] elements, @IntRange(from=1L) int rows, @IntRange(from=1L) int columns, optional boolean isHorizontalArrangement, optional float verticalSpacing, optional float horizontalSpacing, optional float[] rowWeights, optional float[] columnWeights, optional androidx.constraintlayout.compose.Skip[] skips, optional androidx.constraintlayout.compose.Span[] spans, optional int flags);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float offset);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.constraintlayout.compose.HorizontalChainReference createHorizontalChain(androidx.constraintlayout.compose.LayoutReference[] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
-    method public final androidx.constraintlayout.compose.ConstrainedLayoutReference createRow(androidx.constraintlayout.compose.LayoutReference[] elements, optional float spacing, optional float[] weights);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier(androidx.constraintlayout.compose.LayoutReference[] elements, optional float margin);
-    method public final androidx.constraintlayout.compose.VerticalChainReference createVerticalChain(androidx.constraintlayout.compose.LayoutReference[] elements, optional androidx.constraintlayout.compose.ChainStyle chainStyle);
-    method @Deprecated protected final java.util.List<kotlin.jvm.functions.Function1<androidx.constraintlayout.compose.State,kotlin.Unit>> getTasks();
-    method public void reset();
-    method public final androidx.constraintlayout.compose.LayoutReference withChainParams(androidx.constraintlayout.compose.LayoutReference, optional float startMargin, optional float topMargin, optional float endMargin, optional float bottomMargin, optional float startGoneMargin, optional float topGoneMargin, optional float endGoneMargin, optional float bottomGoneMargin, optional float weight);
-    method public final androidx.constraintlayout.compose.LayoutReference withHorizontalChainParams(androidx.constraintlayout.compose.LayoutReference, optional float startMargin, optional float endMargin, optional float startGoneMargin, optional float endGoneMargin, optional float weight);
-    method public final androidx.constraintlayout.compose.LayoutReference withVerticalChainParams(androidx.constraintlayout.compose.LayoutReference, optional float topMargin, optional float bottomMargin, optional float topGoneMargin, optional float bottomGoneMargin, optional float weight);
-    property @Deprecated protected final java.util.List<kotlin.jvm.functions.Function1<androidx.constraintlayout.compose.State,kotlin.Unit>> tasks;
-    field @kotlin.PublishedApi internal final androidx.constraintlayout.core.parser.CLObject containerObject;
-    field @kotlin.PublishedApi internal int helpersHashCode;
-  }
-
-  @androidx.compose.runtime.Stable public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.constraintlayout.compose.LayoutReference component2();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id, androidx.constraintlayout.compose.LayoutReference reference);
-    method public androidx.constraintlayout.compose.LayoutReference getReference();
-    property public final androidx.constraintlayout.compose.LayoutReference reference;
-  }
-
-  @androidx.compose.runtime.Stable public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.constraintlayout.compose.LayoutReference component3();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index, androidx.constraintlayout.compose.LayoutReference reference);
-    method public androidx.constraintlayout.compose.LayoutReference getReference();
-    property public final androidx.constraintlayout.compose.LayoutReference reference;
-  }
-
-  @androidx.compose.runtime.Stable public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.constraintlayout.compose.LayoutReference component3();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index, androidx.constraintlayout.compose.LayoutReference reference);
-    method public androidx.constraintlayout.compose.LayoutReference getReference();
-    property public final androidx.constraintlayout.compose.LayoutReference reference;
-  }
-
-  public final class ConstraintLayoutKt {
-    method @androidx.compose.runtime.Composable public static inline void ConstraintLayout(optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float>? animateChangesSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintLayoutScope,kotlin.Unit> content);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline void ConstraintLayout(optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional boolean animateChanges, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintLayoutScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static inline void ConstraintLayout(androidx.constraintlayout.compose.ConstraintSet constraintSet, optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float>? animateChangesSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method @Deprecated @androidx.compose.runtime.Composable public static inline void ConstraintLayout(androidx.constraintlayout.compose.ConstraintSet constraintSet, optional androidx.compose.ui.Modifier modifier, optional int optimizationLevel, optional boolean animateChanges, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(androidx.constraintlayout.compose.ConstraintSet extendConstraintSet, @org.intellij.lang.annotations.Language("json5") String jsonContent);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(androidx.constraintlayout.compose.ConstraintSet extendConstraintSet, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(@org.intellij.lang.annotations.Language("json5") String jsonContent);
-    method @androidx.compose.runtime.Composable public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(@org.intellij.lang.annotations.Language("json5") String content, optional @org.intellij.lang.annotations.Language("json5") String? overrideVariables);
-    method public static androidx.constraintlayout.compose.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.constraintlayout.compose.Dimension.MaxCoercible atLeast(androidx.constraintlayout.compose.Dimension.Coercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension atLeast(androidx.constraintlayout.compose.Dimension.MinCoercible, float dp);
-    method @Deprecated public static androidx.constraintlayout.compose.Dimension atLeastWrapContent(androidx.constraintlayout.compose.Dimension.MinCoercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension.MinCoercible atMost(androidx.constraintlayout.compose.Dimension.Coercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension atMost(androidx.constraintlayout.compose.Dimension.MaxCoercible, float dp);
-    method public static androidx.constraintlayout.compose.Dimension.MaxCoercible getAtLeastWrapContent(androidx.constraintlayout.compose.Dimension.Coercible);
-    method public static androidx.constraintlayout.compose.Dimension getAtLeastWrapContent(androidx.constraintlayout.compose.Dimension.MinCoercible);
-    method public static androidx.constraintlayout.compose.Dimension.MinCoercible getAtMostWrapContent(androidx.constraintlayout.compose.Dimension.Coercible);
-    method public static androidx.constraintlayout.compose.Dimension getAtMostWrapContent(androidx.constraintlayout.compose.Dimension.MaxCoercible);
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.constraintlayout.compose.ConstraintLayoutBaseScope {
-    ctor @kotlin.PublishedApi internal ConstraintLayoutScope();
-    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier constrainAs(androidx.compose.ui.Modifier, androidx.constraintlayout.compose.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRef();
-    method @androidx.compose.runtime.Stable public androidx.constraintlayout.compose.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
-    field @kotlin.PublishedApi internal boolean isAnimateChanges;
-  }
-
-  public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component1();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component10();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component11();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component12();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component13();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component14();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component15();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component16();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component2();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component3();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component4();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component5();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component6();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component7();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component8();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component9();
-  }
-
-  public final class ConstraintLayoutTagKt {
-    method public static Object? getConstraintLayoutId(androidx.compose.ui.layout.Measurable);
-    method public static Object? getConstraintLayoutTag(androidx.compose.ui.layout.Measurable);
-    method public static androidx.compose.ui.Modifier layoutId(androidx.compose.ui.Modifier, String layoutId, optional String? tag);
-  }
-
-  public interface ConstraintLayoutTagParentData {
-    method public String getConstraintLayoutId();
-    method public String getConstraintLayoutTag();
-    property public abstract String constraintLayoutId;
-    property public abstract String constraintLayoutTag;
-  }
-
-  @androidx.compose.runtime.Immutable @kotlin.jvm.JvmDefaultWithCompatibility public interface ConstraintSet {
-    method public void applyTo(androidx.constraintlayout.compose.State state, java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables);
-    method public default void applyTo(androidx.constraintlayout.core.state.Transition transition, int type);
-    method public default boolean isDirty(java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables);
-    method public default androidx.constraintlayout.compose.ConstraintSet override(String name, float value);
-  }
-
-  @kotlin.PublishedApi internal final class ConstraintSetForInlineDsl implements androidx.constraintlayout.compose.ConstraintSet androidx.compose.runtime.RememberObserver {
-    ctor public ConstraintSetForInlineDsl(androidx.constraintlayout.compose.ConstraintLayoutScope scope);
-    method public void applyTo(androidx.constraintlayout.compose.State state, java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables);
-    method public boolean getKnownDirty();
-    method public androidx.constraintlayout.compose.ConstraintLayoutScope getScope();
-    method public void onAbandoned();
-    method public void onForgotten();
-    method public void onRemembered();
-    method public void setKnownDirty(boolean);
-    property public final boolean knownDirty;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutScope scope;
-  }
-
-  public final class ConstraintSetRef {
-    method public androidx.constraintlayout.compose.ConstraintSetRef copy(String name);
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.constraintlayout.compose.ConstraintLayoutBaseScope {
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRefFor(Object id);
-    method public androidx.constraintlayout.compose.ConstraintSetScope.ConstrainedLayoutReferences createRefsFor(java.lang.Object... ids);
-  }
-
-  public final class ConstraintSetScope.ConstrainedLayoutReferences {
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component1();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component10();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component11();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component12();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component13();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component14();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component15();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component16();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component2();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component3();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component4();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component5();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component6();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component7();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component8();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component9();
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class CurveFit {
-    method public String getName();
-    property public String name;
-    field public static final androidx.constraintlayout.compose.CurveFit.Companion Companion;
-  }
-
-  public static final class CurveFit.Companion {
-    method public androidx.constraintlayout.compose.CurveFit getLinear();
-    method public androidx.constraintlayout.compose.CurveFit getSpline();
-    property public final androidx.constraintlayout.compose.CurveFit Linear;
-    property public final androidx.constraintlayout.compose.CurveFit Spline;
-  }
-
-  @kotlin.jvm.JvmInline public final value class DebugFlags {
-    ctor public DebugFlags(optional boolean showBounds, optional boolean showPaths, optional boolean showKeyPositions);
-    method public boolean getShowBounds();
-    method public boolean getShowKeyPositions();
-    method public boolean getShowPaths();
-    property public final boolean showBounds;
-    property public final boolean showKeyPositions;
-    property public final boolean showPaths;
-    field public static final androidx.constraintlayout.compose.DebugFlags.Companion Companion;
-  }
-
-  public static final class DebugFlags.Companion {
-    method public int getAll();
-    method public int getNone();
-    property public final int All;
-    property public final int None;
-  }
-
-  public final class DesignElements {
-    method public void define(String name, kotlin.jvm.functions.Function2<? super java.lang.String,? super java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit> function);
-    method public java.util.HashMap<java.lang.String,kotlin.jvm.functions.Function2<java.lang.String,java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit>> getMap();
-    method public void setMap(java.util.HashMap<java.lang.String,kotlin.jvm.functions.Function2<java.lang.String,java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit>>);
-    property public final java.util.HashMap<java.lang.String,kotlin.jvm.functions.Function2<java.lang.String,java.util.HashMap<java.lang.String,java.lang.String>,kotlin.Unit>> map;
-    field public static final androidx.constraintlayout.compose.DesignElements INSTANCE;
-  }
-
-  public interface DesignInfoProvider {
-    method public String getDesignInfo(int startX, int startY, String args);
-  }
-
-  public interface Dimension {
-    field public static final androidx.constraintlayout.compose.Dimension.Companion Companion;
-  }
-
-  public static interface Dimension.Coercible extends androidx.constraintlayout.compose.Dimension {
-  }
-
-  public static final class Dimension.Companion {
-    method public androidx.constraintlayout.compose.Dimension.Coercible getFillToConstraints();
-    method public androidx.constraintlayout.compose.Dimension getMatchParent();
-    method public androidx.constraintlayout.compose.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.constraintlayout.compose.Dimension getWrapContent();
-    method public androidx.constraintlayout.compose.Dimension percent(float percent);
-    method public androidx.constraintlayout.compose.Dimension.MinCoercible preferredValue(float dp);
-    method public androidx.constraintlayout.compose.Dimension ratio(String ratio);
-    method public androidx.constraintlayout.compose.Dimension value(float dp);
-    property public final androidx.constraintlayout.compose.Dimension.Coercible fillToConstraints;
-    property public final androidx.constraintlayout.compose.Dimension matchParent;
-    property public final androidx.constraintlayout.compose.Dimension.Coercible preferredWrapContent;
-    property public final androidx.constraintlayout.compose.Dimension wrapContent;
-  }
-
-  public static interface Dimension.MaxCoercible extends androidx.constraintlayout.compose.Dimension {
-  }
-
-  public static interface Dimension.MinCoercible extends androidx.constraintlayout.compose.Dimension {
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class Easing {
-    method public String getName();
-    property public String name;
-    field public static final androidx.constraintlayout.compose.Easing.Companion Companion;
-  }
-
-  public static final class Easing.Companion {
-    method public androidx.constraintlayout.compose.Easing cubic(float x1, float y1, float x2, float y2);
-    method public androidx.constraintlayout.compose.Easing getAccelerate();
-    method public androidx.constraintlayout.compose.Easing getAnticipate();
-    method public androidx.constraintlayout.compose.Easing getDecelerate();
-    method public androidx.constraintlayout.compose.Easing getLinear();
-    method public androidx.constraintlayout.compose.Easing getOvershoot();
-    method public androidx.constraintlayout.compose.Easing getStandard();
-    property public final androidx.constraintlayout.compose.Easing Accelerate;
-    property public final androidx.constraintlayout.compose.Easing Anticipate;
-    property public final androidx.constraintlayout.compose.Easing Decelerate;
-    property public final androidx.constraintlayout.compose.Easing Linear;
-    property public final androidx.constraintlayout.compose.Easing Overshoot;
-    property public final androidx.constraintlayout.compose.Easing Standard;
-  }
-
-  @kotlin.PublishedApi internal abstract class EditableJSONLayout implements androidx.constraintlayout.compose.LayoutInformationReceiver {
-    ctor public EditableJSONLayout(@org.intellij.lang.annotations.Language("json5") String content);
-    method public final String getCurrentContent();
-    method public final String? getDebugName();
-    method public androidx.constraintlayout.compose.MotionLayoutDebugFlags getForcedDrawDebug();
-    method public int getForcedHeight();
-    method public int getForcedWidth();
-    method public final String getLayoutInformation();
-    method public androidx.constraintlayout.compose.LayoutInfoFlags getLayoutInformationMode();
-    method protected final void initialization();
-    method protected final void onDrawDebug(int debugMode);
-    method protected final void onLayoutInformation(int mode);
-    method protected void onNewContent(String content);
-    method public final void onNewDimensions(int width, int height);
-    method public final void setCurrentContent(String content);
-    method public final void setDebugName(String? name);
-    method public void setLayoutInformation(String information);
-    method public void setUpdateFlag(androidx.compose.runtime.MutableState<java.lang.Long> needsUpdate);
-    method protected final void signalUpdate();
-  }
-
-  @SuppressCompatibility @kotlin.RequiresOptIn(message="MotionLayout API is experimental and it is likely to change.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalMotionApi {
-  }
-
-  @androidx.compose.runtime.Immutable public final class FlowStyle {
-    field public static final androidx.constraintlayout.compose.FlowStyle.Companion Companion;
-  }
-
-  public static final class FlowStyle.Companion {
-    method public androidx.constraintlayout.compose.FlowStyle getPacked();
-    method public androidx.constraintlayout.compose.FlowStyle getSpread();
-    method public androidx.constraintlayout.compose.FlowStyle getSpreadInside();
-    property public final androidx.constraintlayout.compose.FlowStyle Packed;
-    property public final androidx.constraintlayout.compose.FlowStyle Spread;
-    property public final androidx.constraintlayout.compose.FlowStyle SpreadInside;
-  }
-
-  @kotlin.jvm.JvmInline public final value class GridFlags {
-    ctor public GridFlags(optional boolean isPlaceLayoutsOnSpansFirst);
-    method public boolean isPlaceLayoutsOnSpansFirst();
-    property public final boolean isPlaceLayoutsOnSpansFirst;
-    field public static final androidx.constraintlayout.compose.GridFlags.Companion Companion;
-  }
-
-  public static final class GridFlags.Companion {
-    method public int getNone();
-    method public int getPlaceLayoutsOnSpansFirst();
-    property public final int None;
-    property public final int PlaceLayoutsOnSpansFirst;
-  }
-
-  @androidx.compose.runtime.Immutable public final class HorizontalAlign {
-    field public static final androidx.constraintlayout.compose.HorizontalAlign.Companion Companion;
-  }
-
-  public static final class HorizontalAlign.Companion {
-    method public androidx.constraintlayout.compose.HorizontalAlign getCenter();
-    method public androidx.constraintlayout.compose.HorizontalAlign getEnd();
-    method public androidx.constraintlayout.compose.HorizontalAlign getStart();
-    property public final androidx.constraintlayout.compose.HorizontalAlign Center;
-    property public final androidx.constraintlayout.compose.HorizontalAlign End;
-    property public final androidx.constraintlayout.compose.HorizontalAlign Start;
-  }
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface HorizontalAnchorable {
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.BaselineAnchor anchor, optional float margin, optional float goneMargin);
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor anchor, optional float margin, optional float goneMargin);
-  }
-
-  @androidx.compose.runtime.Stable public final class HorizontalChainReference extends androidx.constraintlayout.compose.LayoutReference {
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor start;
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Stable public final class HorizontalChainScope {
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getAbsoluteRight();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getEnd();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getParent();
-    method public androidx.constraintlayout.compose.VerticalAnchorable getStart();
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteLeft;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable absoluteRight;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable end;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference parent;
-    property public final androidx.constraintlayout.compose.VerticalAnchorable start;
-  }
-
-  public final class InvalidationStrategy {
-    ctor public InvalidationStrategy(optional kotlin.jvm.functions.Function3<? super androidx.constraintlayout.compose.InvalidationStrategySpecification,? super androidx.compose.ui.unit.Constraints,? super androidx.compose.ui.unit.Constraints,java.lang.Boolean>? onIncomingConstraints, kotlin.jvm.functions.Function0<kotlin.Unit>? onObservedStateChange);
-    method public kotlin.jvm.functions.Function3<androidx.constraintlayout.compose.InvalidationStrategySpecification,androidx.compose.ui.unit.Constraints,androidx.compose.ui.unit.Constraints,java.lang.Boolean>? getOnIncomingConstraints();
-    method public kotlin.jvm.functions.Function0<kotlin.Unit>? getOnObservedStateChange();
-    property public final kotlin.jvm.functions.Function3<androidx.constraintlayout.compose.InvalidationStrategySpecification,androidx.compose.ui.unit.Constraints,androidx.compose.ui.unit.Constraints,java.lang.Boolean>? onIncomingConstraints;
-    property public final kotlin.jvm.functions.Function0<kotlin.Unit>? onObservedStateChange;
-    field public static final androidx.constraintlayout.compose.InvalidationStrategy.Companion Companion;
-  }
-
-  public static final class InvalidationStrategy.Companion {
-    method public androidx.constraintlayout.compose.InvalidationStrategy getDefaultInvalidationStrategy();
-    property public final androidx.constraintlayout.compose.InvalidationStrategy DefaultInvalidationStrategy;
-  }
-
-  public final class InvalidationStrategySpecification {
-    method public boolean shouldInvalidateOnFixedHeight(long oldConstraints, long newConstraints, int skipCount, int threshold);
-    method public boolean shouldInvalidateOnFixedWidth(long oldConstraints, long newConstraints, int skipCount, int threshold);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyAttributeScope extends androidx.constraintlayout.compose.BaseKeyFrameScope {
-    method public float getAlpha();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public void setAlpha(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    property public final float alpha;
-    property public final float rotationX;
-    property public final float rotationY;
-    property public final float rotationZ;
-    property public final float scaleX;
-    property public final float scaleY;
-    property public final float translationX;
-    property public final float translationY;
-    property public final float translationZ;
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyAttributesScope extends androidx.constraintlayout.compose.BaseKeyFramesScope {
-    method public void frame(@IntRange(from=0L, to=100L) int frame, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyAttributeScope,kotlin.Unit> keyFrameContent);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyCycleScope extends androidx.constraintlayout.compose.BaseKeyFrameScope {
-    method public float getAlpha();
-    method public float getOffset();
-    method public float getPeriod();
-    method public float getPhase();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public void setAlpha(float);
-    method public void setOffset(float);
-    method public void setPeriod(float);
-    method public void setPhase(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    property public final float alpha;
-    property public final float offset;
-    property public final float period;
-    property public final float phase;
-    property public final float rotationX;
-    property public final float rotationY;
-    property public final float rotationZ;
-    property public final float scaleX;
-    property public final float scaleY;
-    property public final float translationX;
-    property public final float translationY;
-    property public final float translationZ;
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyCyclesScope extends androidx.constraintlayout.compose.BaseKeyFramesScope {
-    method public void frame(@IntRange(from=0L, to=100L) int frame, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyCycleScope,kotlin.Unit> keyFrameContent);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyPositionScope extends androidx.constraintlayout.compose.BaseKeyFrameScope {
-    method public androidx.constraintlayout.compose.CurveFit? getCurveFit();
-    method public float getPercentHeight();
-    method public float getPercentWidth();
-    method public float getPercentX();
-    method public float getPercentY();
-    method public void setCurveFit(androidx.constraintlayout.compose.CurveFit?);
-    method public void setPercentHeight(float);
-    method public void setPercentWidth(float);
-    method public void setPercentX(float);
-    method public void setPercentY(float);
-    property public final androidx.constraintlayout.compose.CurveFit? curveFit;
-    property public final float percentHeight;
-    property public final float percentWidth;
-    property public final float percentX;
-    property public final float percentY;
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class KeyPositionsScope extends androidx.constraintlayout.compose.BaseKeyFramesScope {
-    method public void frame(@IntRange(from=0L, to=100L) int frame, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyPositionScope,kotlin.Unit> keyFrameContent);
-    method public androidx.constraintlayout.compose.RelativePosition getType();
-    method public void setType(androidx.constraintlayout.compose.RelativePosition);
-    property public final androidx.constraintlayout.compose.RelativePosition type;
-  }
-
-  public final class LateMotionLayoutKt {
-    method @androidx.compose.runtime.Composable @kotlin.PublishedApi internal static void LateMotionLayout(androidx.compose.runtime.MutableState<androidx.constraintlayout.compose.ConstraintSet?> start, androidx.compose.runtime.MutableState<androidx.constraintlayout.compose.ConstraintSet?> end, androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, kotlinx.coroutines.channels.Channel<androidx.constraintlayout.compose.ConstraintSet> channel, androidx.compose.runtime.State<kotlin.Unit> contentTracker, androidx.compose.ui.node.Ref<androidx.constraintlayout.compose.CompositionSource> compositionSource, int optimizationLevel, kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function0<kotlin.Unit> content);
-  }
-
-  public enum LayoutInfoFlags {
-    enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags BOUNDS;
-    enum_constant public static final androidx.constraintlayout.compose.LayoutInfoFlags NONE;
-  }
-
-  public interface LayoutInformationReceiver {
-    method public androidx.constraintlayout.compose.MotionLayoutDebugFlags getForcedDrawDebug();
-    method public int getForcedHeight();
-    method public float getForcedProgress();
-    method public int getForcedWidth();
-    method public androidx.constraintlayout.compose.LayoutInfoFlags getLayoutInformationMode();
-    method public void onNewProgress(float progress);
-    method public void resetForcedProgress();
-    method public void setLayoutInformation(String information);
-    method public void setUpdateFlag(androidx.compose.runtime.MutableState<java.lang.Long> needsUpdate);
-  }
-
-  @androidx.compose.runtime.Stable public abstract class LayoutReference {
-  }
-
-  @kotlin.PublishedApi internal class Measurer implements androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer androidx.constraintlayout.compose.DesignInfoProvider {
-    ctor public Measurer(androidx.compose.ui.unit.Density density);
-    method public final void addLayoutInformationReceiver(androidx.constraintlayout.compose.LayoutInformationReceiver? layoutReceiver);
-    method protected final void applyRootSize(long constraints);
-    method public void computeLayoutResult();
-    method @androidx.compose.runtime.Composable public final void createDesignElements();
-    method public void didMeasures();
-    method @androidx.compose.runtime.Composable public final void drawDebugBounds(androidx.compose.foundation.layout.BoxScope, float forcedScaleFactor);
-    method public final void drawDebugBounds(androidx.compose.ui.graphics.drawscope.DrawScope, float forcedScaleFactor);
-    method public String getDesignInfo(int startX, int startY, String args);
-    method public final float getForcedScaleFactor();
-    method protected final java.util.Map<androidx.compose.ui.layout.Measurable,androidx.constraintlayout.core.state.WidgetFrame> getFrameCache();
-    method public final int getLayoutCurrentHeight();
-    method public final int getLayoutCurrentWidth();
-    method protected final androidx.constraintlayout.compose.LayoutInformationReceiver? getLayoutInformationReceiver();
-    method protected final java.util.Map<androidx.compose.ui.layout.Measurable,androidx.compose.ui.layout.Placeable> getPlaceables();
-    method protected final androidx.constraintlayout.core.widgets.ConstraintWidgetContainer getRoot();
-    method protected final androidx.constraintlayout.compose.State getState();
-    method public void measure(androidx.constraintlayout.core.widgets.ConstraintWidget constraintWidget, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure measure);
-    method public final void parseDesignElements(androidx.constraintlayout.compose.ConstraintSet constraintSet);
-    method public final void performLayout(androidx.compose.ui.layout.Placeable.PlacementScope, java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables);
-    method public final long performMeasure(long constraints, androidx.compose.ui.unit.LayoutDirection layoutDirection, androidx.constraintlayout.compose.ConstraintSet constraintSet, java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables, int optimizationLevel);
-    method public final void setForcedScaleFactor(float);
-    method protected final void setLayoutInformationReceiver(androidx.constraintlayout.compose.LayoutInformationReceiver?);
-    property public final float forcedScaleFactor;
-    property protected final java.util.Map<androidx.compose.ui.layout.Measurable,androidx.constraintlayout.core.state.WidgetFrame> frameCache;
-    property public final int layoutCurrentHeight;
-    property public final int layoutCurrentWidth;
-    property protected final androidx.constraintlayout.compose.LayoutInformationReceiver? layoutInformationReceiver;
-    property protected final java.util.Map<androidx.compose.ui.layout.Measurable,androidx.compose.ui.layout.Placeable> placeables;
-    property protected final androidx.constraintlayout.core.widgets.ConstraintWidgetContainer root;
-    property protected final androidx.constraintlayout.compose.State state;
-  }
-
-  public final class MotionCarouselKt {
-    method @androidx.compose.runtime.Composable public static void ItemHolder(int i, String slotPrefix, boolean showSlot, kotlin.jvm.functions.Function0<kotlin.Unit> function);
-    method @androidx.compose.runtime.Composable public static void MotionCarousel(androidx.constraintlayout.compose.MotionScene motionScene, int initialSlotIndex, int numSlots, optional String backwardTransition, optional String forwardTransition, optional String slotPrefix, optional boolean showSlots, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionCarouselScope,kotlin.Unit> content);
-    method public static inline <T> void items(androidx.constraintlayout.compose.MotionCarouselScope, java.util.List<? extends T> items, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method public static inline <T> void itemsWithProperties(androidx.constraintlayout.compose.MotionCarouselScope, java.util.List<? extends T> items, kotlin.jvm.functions.Function2<? super T,? super androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties>,kotlin.Unit> itemContent);
-  }
-
-  public interface MotionCarouselScope {
-    method public void items(int count, kotlin.jvm.functions.Function1<? super java.lang.Integer,kotlin.Unit> itemContent);
-    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 interface MotionItemsProvider {
-    method public int count();
-    method public kotlin.jvm.functions.Function0<kotlin.Unit> getContent(int index);
-    method public kotlin.jvm.functions.Function0<kotlin.Unit> getContent(int index, androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties> properties);
-    method public boolean hasItemsWithProperties();
-  }
-
-  public enum MotionLayoutDebugFlags {
-    enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags NONE;
-    enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags SHOW_ALL;
-    enum_constant public static final androidx.constraintlayout.compose.MotionLayoutDebugFlags UNKNOWN;
-  }
-
-  @Deprecated public enum MotionLayoutFlag {
-    enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag Default;
-    enum_constant @Deprecated public static final androidx.constraintlayout.compose.MotionLayoutFlag FullMeasure;
-  }
-
-  public final class MotionLayoutKt {
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static inline void MotionLayout(androidx.constraintlayout.compose.ConstraintSet start, androidx.constraintlayout.compose.ConstraintSet end, float progress, optional androidx.compose.ui.Modifier modifier, optional androidx.constraintlayout.compose.Transition? transition, optional int debugFlags, optional int optimizationLevel, optional androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static inline void MotionLayout(androidx.constraintlayout.compose.MotionScene motionScene, float progress, optional androidx.compose.ui.Modifier modifier, optional String transitionName, optional int debugFlags, optional int optimizationLevel, optional androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static inline void MotionLayout(androidx.constraintlayout.compose.MotionScene motionScene, String? constraintSetName, androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, optional int debugFlags, optional int optimizationLevel, optional androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi @kotlin.PublishedApi internal static void MotionLayoutCore(androidx.constraintlayout.compose.ConstraintSet start, androidx.constraintlayout.compose.ConstraintSet end, androidx.constraintlayout.compose.Transition? transition, float progress, androidx.constraintlayout.compose.LayoutInformationReceiver? informationReceiver, int optimizationLevel, boolean showBounds, boolean showPaths, boolean showKeyPositions, androidx.compose.ui.Modifier modifier, androidx.compose.runtime.MutableState<kotlin.Unit> contentTracker, androidx.compose.ui.node.Ref<androidx.constraintlayout.compose.CompositionSource> compositionSource, androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi @kotlin.PublishedApi internal static void MotionLayoutCore(androidx.constraintlayout.compose.MotionScene motionScene, float progress, String transitionName, int optimizationLevel, int debugFlags, androidx.compose.ui.Modifier modifier, androidx.compose.runtime.MutableState<kotlin.Unit> contentTracker, androidx.compose.ui.node.Ref<androidx.constraintlayout.compose.CompositionSource> compositionSource, androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi @kotlin.PublishedApi internal static void MotionLayoutCore(androidx.constraintlayout.compose.MotionScene motionScene, String? constraintSetName, androidx.compose.animation.core.AnimationSpec<java.lang.Float> animationSpec, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? finishedAnimationListener, optional int debugFlags, optional int optimizationLevel, androidx.compose.runtime.MutableState<kotlin.Unit> contentTracker, androidx.compose.ui.node.Ref<androidx.constraintlayout.compose.CompositionSource> compositionSource, androidx.constraintlayout.compose.InvalidationStrategy invalidationStrategy, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionLayoutScope,kotlin.Unit> content);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class MotionLayoutScope {
-    method public long customColor(String id, String name);
-    method public float customDistance(String id, String name);
-    method public float customFloat(String id, String name);
-    method public long customFontSize(String id, String name);
-    method public int customInt(String id, String name);
-    method public androidx.constraintlayout.compose.MotionLayoutScope.CustomProperties customProperties(String id);
-    method @Deprecated public long motionColor(String id, String name);
-    method @Deprecated public float motionDistance(String id, String name);
-    method @Deprecated public float motionFloat(String id, String name);
-    method @Deprecated public long motionFontSize(String id, String name);
-    method @Deprecated public int motionInt(String id, String name);
-    method @Deprecated @androidx.compose.runtime.Composable public androidx.compose.runtime.State<androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties> motionProperties(String id);
-    method @Deprecated public androidx.constraintlayout.compose.MotionLayoutScope.MotionProperties motionProperties(String id, String tag);
-    method public androidx.compose.ui.Modifier onStartEndBoundsChanged(androidx.compose.ui.Modifier, Object layoutId, kotlin.jvm.functions.Function2<? super androidx.compose.ui.geometry.Rect,? super androidx.compose.ui.geometry.Rect,kotlin.Unit> onBoundsChanged);
-  }
-
-  public final class MotionLayoutScope.CustomProperties {
-    method public long color(String name);
-    method public float distance(String name);
-    method public float float(String name);
-    method public long fontSize(String name);
-    method public int int(String name);
-  }
-
-  public final class MotionLayoutScope.MotionProperties {
-    method public long color(String name);
-    method public float distance(String name);
-    method public float float(String name);
-    method public long fontSize(String name);
-    method public String id();
-    method public int int(String name);
-    method public String? tag();
-  }
-
-  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.constraintlayout.compose.ExperimentalMotionApi public interface MotionScene extends androidx.constraintlayout.core.state.CoreMotionScene {
-    method public androidx.constraintlayout.compose.ConstraintSet? getConstraintSetInstance(String name);
-    method public androidx.constraintlayout.compose.Transition? getTransitionInstance(String name);
-  }
-
-  public final class MotionSceneKt {
-    method @SuppressCompatibility @androidx.compose.runtime.Composable @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.MotionScene MotionScene(@org.intellij.lang.annotations.Language("json5") String content);
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class MotionSceneScope {
-    method public androidx.constraintlayout.compose.ConstraintSetRef addConstraintSet(androidx.constraintlayout.compose.ConstraintSet constraintSet, optional String? name);
-    method public void addTransition(androidx.constraintlayout.compose.Transition transition, optional String? name);
-    method public androidx.constraintlayout.compose.ConstraintSetRef constraintSet(optional String? name, optional androidx.constraintlayout.compose.ConstraintSetRef? extendConstraintSet, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.ConstraintSetScope,kotlin.Unit> constraintSetContent);
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRefFor(Object id);
-    method public androidx.constraintlayout.compose.MotionSceneScope.ConstrainedLayoutReferences createRefsFor(java.lang.Object... ids);
-    method public void customColor(androidx.constraintlayout.compose.ConstrainScope, String name, long value);
-    method public void customColor(androidx.constraintlayout.compose.KeyAttributeScope, String name, long value);
-    method public void customDistance(androidx.constraintlayout.compose.ConstrainScope, String name, float value);
-    method public void customDistance(androidx.constraintlayout.compose.KeyAttributeScope, String name, float value);
-    method public void customFloat(androidx.constraintlayout.compose.ConstrainScope, String name, float value);
-    method public void customFloat(androidx.constraintlayout.compose.KeyAttributeScope, String name, float value);
-    method public void customFontSize(androidx.constraintlayout.compose.ConstrainScope, String name, long value);
-    method public void customFontSize(androidx.constraintlayout.compose.KeyAttributeScope, String name, long value);
-    method public void customInt(androidx.constraintlayout.compose.ConstrainScope, String name, int value);
-    method public void customInt(androidx.constraintlayout.compose.KeyAttributeScope, String name, int value);
-    method public void defaultTransition(androidx.constraintlayout.compose.ConstraintSetRef from, androidx.constraintlayout.compose.ConstraintSetRef to, optional kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.TransitionScope,kotlin.Unit> transitionContent);
-    method public float getStaggeredWeight(androidx.constraintlayout.compose.ConstrainScope);
-    method public void setStaggeredWeight(androidx.constraintlayout.compose.ConstrainScope, float);
-    method public void transition(androidx.constraintlayout.compose.ConstraintSetRef from, androidx.constraintlayout.compose.ConstraintSetRef to, optional String? name, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.TransitionScope,kotlin.Unit> transitionContent);
-  }
-
-  public final class MotionSceneScope.ConstrainedLayoutReferences {
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component1();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component10();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component11();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component12();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component13();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component14();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component15();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component16();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component2();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component3();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component4();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component5();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component6();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component7();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component8();
-    method public operator androidx.constraintlayout.compose.ConstrainedLayoutReference component9();
-  }
-
-  public final class MotionSceneScopeKt {
-    method @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.MotionScene MotionScene(kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.MotionSceneScope,kotlin.Unit> motionSceneContent);
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class OnSwipe {
-    ctor public OnSwipe(androidx.constraintlayout.compose.ConstrainedLayoutReference anchor, androidx.constraintlayout.compose.SwipeSide side, androidx.constraintlayout.compose.SwipeDirection direction, optional float dragScale, optional float dragThreshold, optional androidx.constraintlayout.compose.ConstrainedLayoutReference? dragAround, optional androidx.constraintlayout.compose.ConstrainedLayoutReference? limitBoundsTo, optional androidx.constraintlayout.compose.SwipeTouchUp onTouchUp, optional androidx.constraintlayout.compose.SwipeMode mode);
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getAnchor();
-    method public androidx.constraintlayout.compose.SwipeDirection getDirection();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference? getDragAround();
-    method public float getDragScale();
-    method public float getDragThreshold();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference? getLimitBoundsTo();
-    method public androidx.constraintlayout.compose.SwipeMode getMode();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getOnTouchUp();
-    method public androidx.constraintlayout.compose.SwipeSide getSide();
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference anchor;
-    property public final androidx.constraintlayout.compose.SwipeDirection direction;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference? dragAround;
-    property public final float dragScale;
-    property public final float dragThreshold;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference? limitBoundsTo;
-    property public final androidx.constraintlayout.compose.SwipeMode mode;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp onTouchUp;
-    property public final androidx.constraintlayout.compose.SwipeSide side;
-  }
-
-  @androidx.compose.runtime.Immutable @kotlin.PublishedApi internal final class RawConstraintSet implements androidx.constraintlayout.compose.ConstraintSet {
-    ctor public RawConstraintSet(androidx.constraintlayout.core.parser.CLObject clObject);
-    method public void applyTo(androidx.constraintlayout.compose.State state, java.util.List<? extends androidx.compose.ui.layout.Measurable> measurables);
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class RelativePosition {
-    method public String getName();
-    property public String name;
-    field public static final androidx.constraintlayout.compose.RelativePosition.Companion Companion;
-  }
-
-  public static final class RelativePosition.Companion {
-    method public androidx.constraintlayout.compose.RelativePosition getDelta();
-    method public androidx.constraintlayout.compose.RelativePosition getParent();
-    method public androidx.constraintlayout.compose.RelativePosition getPath();
-    property public final androidx.constraintlayout.compose.RelativePosition Delta;
-    property public final androidx.constraintlayout.compose.RelativePosition Parent;
-    property public final androidx.constraintlayout.compose.RelativePosition Path;
-  }
-
-  @kotlin.jvm.JvmInline public final value class Skip {
-    ctor public Skip(@IntRange(from=0L) int position, @IntRange(from=1L) int size);
-    ctor public Skip(@IntRange(from=0L) int position, @IntRange(from=1L) int rows, @IntRange(from=1L) int columns);
-    method public String getDescription();
-    property public final String description;
-  }
-
-  @kotlin.jvm.JvmInline public final value class Span {
-    ctor public Span(@IntRange(from=0L) int position, @IntRange(from=1L) int size);
-    ctor public Span(@IntRange(from=0L) int position, @IntRange(from=1L) int rows, @IntRange(from=1L) int columns);
-    ctor public Span(String description);
-    method public String getDescription();
-    property public final String description;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SpringBoundary {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SpringBoundary.Companion Companion;
-  }
-
-  public static final class SpringBoundary.Companion {
-    method public androidx.constraintlayout.compose.SpringBoundary getBounceBoth();
-    method public androidx.constraintlayout.compose.SpringBoundary getBounceEnd();
-    method public androidx.constraintlayout.compose.SpringBoundary getBounceStart();
-    method public androidx.constraintlayout.compose.SpringBoundary getOvershoot();
-    property public final androidx.constraintlayout.compose.SpringBoundary BounceBoth;
-    property public final androidx.constraintlayout.compose.SpringBoundary BounceEnd;
-    property public final androidx.constraintlayout.compose.SpringBoundary BounceStart;
-    property public final androidx.constraintlayout.compose.SpringBoundary Overshoot;
-  }
-
-  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();
-    method @Deprecated public androidx.compose.ui.unit.LayoutDirection getLayoutDirection();
-    method public long getRootIncomingConstraints();
-    method @Deprecated public void setLayoutDirection(androidx.compose.ui.unit.LayoutDirection);
-    method public void setRootIncomingConstraints(long);
-    property public final androidx.compose.ui.unit.Density density;
-    property @Deprecated public final androidx.compose.ui.unit.LayoutDirection layoutDirection;
-    property public final long rootIncomingConstraints;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeDirection {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeDirection.Companion Companion;
-  }
-
-  public static final class SwipeDirection.Companion {
-    method public androidx.constraintlayout.compose.SwipeDirection getClockwise();
-    method public androidx.constraintlayout.compose.SwipeDirection getCounterclockwise();
-    method public androidx.constraintlayout.compose.SwipeDirection getDown();
-    method public androidx.constraintlayout.compose.SwipeDirection getEnd();
-    method public androidx.constraintlayout.compose.SwipeDirection getLeft();
-    method public androidx.constraintlayout.compose.SwipeDirection getRight();
-    method public androidx.constraintlayout.compose.SwipeDirection getStart();
-    method public androidx.constraintlayout.compose.SwipeDirection getUp();
-    property public final androidx.constraintlayout.compose.SwipeDirection Clockwise;
-    property public final androidx.constraintlayout.compose.SwipeDirection Counterclockwise;
-    property public final androidx.constraintlayout.compose.SwipeDirection Down;
-    property public final androidx.constraintlayout.compose.SwipeDirection End;
-    property public final androidx.constraintlayout.compose.SwipeDirection Left;
-    property public final androidx.constraintlayout.compose.SwipeDirection Right;
-    property public final androidx.constraintlayout.compose.SwipeDirection Start;
-    property public final androidx.constraintlayout.compose.SwipeDirection Up;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeMode {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeMode.Companion Companion;
-  }
-
-  public static final class SwipeMode.Companion {
-    method public androidx.constraintlayout.compose.SwipeMode getSpring();
-    method public androidx.constraintlayout.compose.SwipeMode getVelocity();
-    method public androidx.constraintlayout.compose.SwipeMode spring(optional float mass, optional float stiffness, optional float damping, optional float threshold, optional androidx.constraintlayout.compose.SpringBoundary boundary);
-    method public androidx.constraintlayout.compose.SwipeMode velocity(optional float maxVelocity, optional float maxAcceleration);
-    property public final androidx.constraintlayout.compose.SwipeMode Spring;
-    property public final androidx.constraintlayout.compose.SwipeMode Velocity;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeSide {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeSide.Companion Companion;
-  }
-
-  public static final class SwipeSide.Companion {
-    method public androidx.constraintlayout.compose.SwipeSide getBottom();
-    method public androidx.constraintlayout.compose.SwipeSide getEnd();
-    method public androidx.constraintlayout.compose.SwipeSide getLeft();
-    method public androidx.constraintlayout.compose.SwipeSide getMiddle();
-    method public androidx.constraintlayout.compose.SwipeSide getRight();
-    method public androidx.constraintlayout.compose.SwipeSide getStart();
-    method public androidx.constraintlayout.compose.SwipeSide getTop();
-    property public final androidx.constraintlayout.compose.SwipeSide Bottom;
-    property public final androidx.constraintlayout.compose.SwipeSide End;
-    property public final androidx.constraintlayout.compose.SwipeSide Left;
-    property public final androidx.constraintlayout.compose.SwipeSide Middle;
-    property public final androidx.constraintlayout.compose.SwipeSide Right;
-    property public final androidx.constraintlayout.compose.SwipeSide Start;
-    property public final androidx.constraintlayout.compose.SwipeSide Top;
-  }
-
-  @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public final class SwipeTouchUp {
-    method public String getName();
-    property public final String name;
-    field public static final androidx.constraintlayout.compose.SwipeTouchUp.Companion Companion;
-  }
-
-  public static final class SwipeTouchUp.Companion {
-    method public androidx.constraintlayout.compose.SwipeTouchUp getAutoComplete();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getDecelerate();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getNeverCompleteEnd();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getNeverCompleteStart();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getStop();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getToEnd();
-    method public androidx.constraintlayout.compose.SwipeTouchUp getToStart();
-    property public final androidx.constraintlayout.compose.SwipeTouchUp AutoComplete;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp Decelerate;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp NeverCompleteEnd;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp NeverCompleteStart;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp Stop;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp ToEnd;
-    property public final androidx.constraintlayout.compose.SwipeTouchUp ToStart;
-  }
-
-  public final class ToolingUtilsKt {
-    method public static androidx.compose.ui.semantics.SemanticsPropertyKey<androidx.constraintlayout.compose.DesignInfoProvider> getDesignInfoDataKey();
-    property public static final androidx.compose.ui.semantics.SemanticsPropertyKey<androidx.constraintlayout.compose.DesignInfoProvider> DesignInfoDataKey;
-    field @kotlin.PublishedApi internal static final androidx.compose.ui.semantics.SemanticsPropertyKey<androidx.constraintlayout.compose.DesignInfoProvider> designInfoProvider$delegate;
-  }
-
-  @SuppressCompatibility @androidx.compose.runtime.Immutable @androidx.constraintlayout.compose.ExperimentalMotionApi public interface Transition {
-    method public String getEndConstraintSetId();
-    method public String getStartConstraintSetId();
-  }
-
-  public final class TransitionKt {
-    method @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.Transition Transition(@org.intellij.lang.annotations.Language("json5") String content);
-  }
-
-  @SuppressCompatibility @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.constraintlayout.compose.ExperimentalMotionApi public final class TransitionScope {
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference createRefFor(Object id);
-    method public float getMaxStaggerDelay();
-    method public androidx.constraintlayout.compose.Arc getMotionArc();
-    method public androidx.constraintlayout.compose.OnSwipe? getOnSwipe();
-    method public void keyAttributes(androidx.constraintlayout.compose.ConstrainedLayoutReference[] targets, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyAttributesScope,kotlin.Unit> keyAttributesContent);
-    method public void keyCycles(androidx.constraintlayout.compose.ConstrainedLayoutReference[] targets, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyCyclesScope,kotlin.Unit> keyCyclesContent);
-    method public void keyPositions(androidx.constraintlayout.compose.ConstrainedLayoutReference[] targets, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.KeyPositionsScope,kotlin.Unit> keyPositionsContent);
-    method public void setMaxStaggerDelay(float);
-    method public void setMotionArc(androidx.constraintlayout.compose.Arc);
-    method public void setOnSwipe(androidx.constraintlayout.compose.OnSwipe?);
-    property public final float maxStaggerDelay;
-    property public final androidx.constraintlayout.compose.Arc motionArc;
-    property public final androidx.constraintlayout.compose.OnSwipe? onSwipe;
-  }
-
-  public final class TransitionScopeKt {
-    method @SuppressCompatibility @androidx.constraintlayout.compose.ExperimentalMotionApi public static androidx.constraintlayout.compose.Transition Transition(optional String from, optional String to, kotlin.jvm.functions.Function1<? super androidx.constraintlayout.compose.TransitionScope,kotlin.Unit> content);
-  }
-
-  @androidx.compose.runtime.Immutable public final class VerticalAlign {
-    field public static final androidx.constraintlayout.compose.VerticalAlign.Companion Companion;
-  }
-
-  public static final class VerticalAlign.Companion {
-    method public androidx.constraintlayout.compose.VerticalAlign getBaseline();
-    method public androidx.constraintlayout.compose.VerticalAlign getBottom();
-    method public androidx.constraintlayout.compose.VerticalAlign getCenter();
-    method public androidx.constraintlayout.compose.VerticalAlign getTop();
-    property public final androidx.constraintlayout.compose.VerticalAlign Baseline;
-    property public final androidx.constraintlayout.compose.VerticalAlign Bottom;
-    property public final androidx.constraintlayout.compose.VerticalAlign Center;
-    property public final androidx.constraintlayout.compose.VerticalAlign Top;
-  }
-
-  @kotlin.jvm.JvmDefaultWithCompatibility public interface VerticalAnchorable {
-    method public void linkTo(androidx.constraintlayout.compose.ConstraintLayoutBaseScope.VerticalAnchor anchor, optional float margin, optional float goneMargin);
-  }
-
-  @androidx.compose.runtime.Stable public final class VerticalChainReference extends androidx.constraintlayout.compose.LayoutReference {
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.constraintlayout.compose.ConstraintLayoutBaseScope.HorizontalAnchor top;
-  }
-
-  @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Stable public final class VerticalChainScope {
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getBottom();
-    method public androidx.constraintlayout.compose.ConstrainedLayoutReference getParent();
-    method public androidx.constraintlayout.compose.HorizontalAnchorable getTop();
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable bottom;
-    property public final androidx.constraintlayout.compose.ConstrainedLayoutReference parent;
-    property public final androidx.constraintlayout.compose.HorizontalAnchorable top;
-  }
-
-  @androidx.compose.runtime.Immutable public final class Visibility {
-    field public static final androidx.constraintlayout.compose.Visibility.Companion Companion;
-  }
-
-  public static final class Visibility.Companion {
-    method public androidx.constraintlayout.compose.Visibility getGone();
-    method public androidx.constraintlayout.compose.Visibility getInvisible();
-    method public androidx.constraintlayout.compose.Visibility getVisible();
-    property public final androidx.constraintlayout.compose.Visibility Gone;
-    property public final androidx.constraintlayout.compose.Visibility Invisible;
-    property public final androidx.constraintlayout.compose.Visibility Visible;
-  }
-
-  @androidx.compose.runtime.Immutable public final class Wrap {
-    field public static final androidx.constraintlayout.compose.Wrap.Companion Companion;
-  }
-
-  public static final class Wrap.Companion {
-    method public androidx.constraintlayout.compose.Wrap getAligned();
-    method public androidx.constraintlayout.compose.Wrap getChain();
-    method public androidx.constraintlayout.compose.Wrap getNone();
-    property public final androidx.constraintlayout.compose.Wrap Aligned;
-    property public final androidx.constraintlayout.compose.Wrap Chain;
-    property public final androidx.constraintlayout.compose.Wrap None;
-  }
-
-}
-
diff --git a/constraintlayout/constraintlayout-compose/build.gradle b/constraintlayout/constraintlayout-compose/build.gradle
index c301c09..4412f9d 100644
--- a/constraintlayout/constraintlayout-compose/build.gradle
+++ b/constraintlayout/constraintlayout-compose/build.gradle
@@ -35,13 +35,13 @@
     sourceSets {
         commonMain {
             dependencies {
-                implementation("androidx.compose.ui:ui:1.7.0-beta04")
-                implementation("androidx.compose.ui:ui-unit:1.7.0-beta04")
-                implementation("androidx.compose.ui:ui-util:1.7.0-beta04")
-                implementation("androidx.compose.foundation:foundation:1.7.0-beta04")
-                implementation("androidx.compose.foundation:foundation-layout:1.7.0-beta04")
+                implementation(project(":compose:ui:ui"))
+                implementation(project(":compose:ui:ui-unit"))
+                implementation(project(":compose:ui:ui-util"))
+                implementation(project(":compose:foundation:foundation"))
+                implementation(project(":compose:foundation:foundation-layout"))
                 implementation(project(":constraintlayout:constraintlayout-core"))
-                implementation("androidx.collection:collection:1.4.0")
+                implementation(project(":collection:collection"))
             }
         }
 
diff --git a/constraintlayout/constraintlayout-core/api/1.1.0-beta01.txt b/constraintlayout/constraintlayout-core/api/1.1.0-beta01.txt
deleted file mode 100644
index 5be1d12..0000000
--- a/constraintlayout/constraintlayout-core/api/1.1.0-beta01.txt
+++ /dev/null
@@ -1,3393 +0,0 @@
-// Signature format: 4.0
-package androidx.constraintlayout.core {
-
-  public class ArrayLinkedVariables implements androidx.constraintlayout.core.ArrayRow.ArrayRowVariables {
-    method public void add(androidx.constraintlayout.core.SolverVariable!, float, boolean);
-    method public final void clear();
-    method public boolean contains(androidx.constraintlayout.core.SolverVariable!);
-    method public void display();
-    method public void divideByAmount(float);
-    method public final float get(androidx.constraintlayout.core.SolverVariable!);
-    method public int getCurrentSize();
-    method public int getHead();
-    method public final int getId(int);
-    method public final int getNextIndice(int);
-    method public final float getValue(int);
-    method public androidx.constraintlayout.core.SolverVariable! getVariable(int);
-    method public float getVariableValue(int);
-    method public int indexOf(androidx.constraintlayout.core.SolverVariable!);
-    method public void invert();
-    method public final void put(androidx.constraintlayout.core.SolverVariable!, float);
-    method public final float remove(androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public int sizeInBytes();
-    method public float use(androidx.constraintlayout.core.ArrayRow!, boolean);
-    field protected final androidx.constraintlayout.core.Cache! mCache;
-  }
-
-  public class ArrayRow {
-    ctor public ArrayRow();
-    ctor public ArrayRow(androidx.constraintlayout.core.Cache!);
-    method public androidx.constraintlayout.core.ArrayRow! addError(androidx.constraintlayout.core.LinearSystem!, int);
-    method public void addError(androidx.constraintlayout.core.SolverVariable!);
-    method public void clear();
-    method public androidx.constraintlayout.core.ArrayRow! createRowDimensionRatio(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEqualDimension(float, float, float, androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEqualMatchDimensions(float, float, float, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEquals(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEquals(androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowGreaterThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowGreaterThan(androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!);
-    method public androidx.constraintlayout.core.ArrayRow! createRowLowerThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowWithAngle(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public androidx.constraintlayout.core.SolverVariable! getKey();
-    method public androidx.constraintlayout.core.SolverVariable! getPivotCandidate(androidx.constraintlayout.core.LinearSystem!, boolean[]!);
-    method public void initFromRow(androidx.constraintlayout.core.LinearSystem.Row!);
-    method public boolean isEmpty();
-    method public androidx.constraintlayout.core.SolverVariable! pickPivot(androidx.constraintlayout.core.SolverVariable!);
-    method public void reset();
-    method public void updateFromFinalVariable(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public void updateFromRow(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.ArrayRow!, boolean);
-    method public void updateFromSynonymVariable(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public void updateFromSystem(androidx.constraintlayout.core.LinearSystem!);
-    field public androidx.constraintlayout.core.ArrayRow.ArrayRowVariables! variables;
-  }
-
-  public static interface ArrayRow.ArrayRowVariables {
-    method public void add(androidx.constraintlayout.core.SolverVariable!, float, boolean);
-    method public void clear();
-    method public boolean contains(androidx.constraintlayout.core.SolverVariable!);
-    method public void display();
-    method public void divideByAmount(float);
-    method public float get(androidx.constraintlayout.core.SolverVariable!);
-    method public int getCurrentSize();
-    method public androidx.constraintlayout.core.SolverVariable! getVariable(int);
-    method public float getVariableValue(int);
-    method public int indexOf(androidx.constraintlayout.core.SolverVariable!);
-    method public void invert();
-    method public void put(androidx.constraintlayout.core.SolverVariable!, float);
-    method public float remove(androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public int sizeInBytes();
-    method public float use(androidx.constraintlayout.core.ArrayRow!, boolean);
-  }
-
-  public class Cache {
-    ctor public Cache();
-  }
-
-  public class GoalRow extends androidx.constraintlayout.core.ArrayRow {
-    ctor public GoalRow(androidx.constraintlayout.core.Cache!);
-  }
-
-  public class LinearSystem {
-    ctor public LinearSystem();
-    method public void addCenterPoint(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintWidget!, float, int);
-    method public void addCentering(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, float, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addConstraint(androidx.constraintlayout.core.ArrayRow!);
-    method public androidx.constraintlayout.core.ArrayRow! addEquality(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addEquality(androidx.constraintlayout.core.SolverVariable!, int);
-    method public void addGreaterBarrier(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, boolean);
-    method public void addGreaterThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addLowerBarrier(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, boolean);
-    method public void addLowerThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addRatio(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float, int);
-    method public void addSynonym(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.SolverVariable! createErrorVariable(int, String!);
-    method public androidx.constraintlayout.core.SolverVariable! createExtraVariable();
-    method public androidx.constraintlayout.core.SolverVariable! createObjectVariable(Object!);
-    method public androidx.constraintlayout.core.ArrayRow! createRow();
-    method public static androidx.constraintlayout.core.ArrayRow! createRowDimensionPercent(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public androidx.constraintlayout.core.SolverVariable! createSlackVariable();
-    method public void displayReadableRows();
-    method public void displayVariablesReadableRows();
-    method public void fillMetrics(androidx.constraintlayout.core.Metrics!);
-    method public androidx.constraintlayout.core.Cache! getCache();
-    method public int getMemoryUsed();
-    method public static androidx.constraintlayout.core.Metrics! getMetrics();
-    method public int getNumEquations();
-    method public int getNumVariables();
-    method public int getObjectVariableValue(Object!);
-    method public void minimize() throws java.lang.Exception;
-    method public void removeRow(androidx.constraintlayout.core.ArrayRow!);
-    method public void reset();
-    field public static long ARRAY_ROW_CREATION;
-    field public static final boolean DEBUG = false;
-    field public static final boolean FULL_DEBUG = false;
-    field public static long OPTIMIZED_ARRAY_ROW_CREATION;
-    field public static boolean OPTIMIZED_ENGINE;
-    field public static boolean SIMPLIFY_SYNONYMS;
-    field public static boolean SKIP_COLUMNS;
-    field public static boolean USE_BASIC_SYNONYMS;
-    field public static boolean USE_DEPENDENCY_ORDERING;
-    field public static boolean USE_SYNONYMS;
-    field public boolean graphOptimizer;
-    field public boolean hasSimpleDefinition;
-    field public boolean newgraphOptimizer;
-    field public static androidx.constraintlayout.core.Metrics! sMetrics;
-  }
-
-  public class Metrics {
-    ctor public Metrics();
-    method public void copy(androidx.constraintlayout.core.Metrics!);
-    method public void reset();
-    field public long additionalMeasures;
-    field public long bfs;
-    field public long constraints;
-    field public long determineGroups;
-    field public long errors;
-    field public long extravariables;
-    field public long fullySolved;
-    field public long graphOptimizer;
-    field public long graphSolved;
-    field public long grouping;
-    field public long infeasibleDetermineGroups;
-    field public long iterations;
-    field public long lastTableSize;
-    field public long layouts;
-    field public long linearSolved;
-    field public long mChildCount;
-    field public long mEquations;
-    field public long mMeasureCalls;
-    field public long mMeasureDuration;
-    field public int mNumberOfLayouts;
-    field public int mNumberOfMeasures;
-    field public long mSimpleEquations;
-    field public long mSolverPasses;
-    field public long mVariables;
-    field public long maxRows;
-    field public long maxTableSize;
-    field public long maxVariables;
-    field public long measuredMatchWidgets;
-    field public long measuredWidgets;
-    field public long measures;
-    field public long measuresLayoutDuration;
-    field public long measuresWidgetsDuration;
-    field public long measuresWrap;
-    field public long measuresWrapInfeasible;
-    field public long minimize;
-    field public long minimizeGoal;
-    field public long nonresolvedWidgets;
-    field public long optimize;
-    field public long pivots;
-    field public java.util.ArrayList<java.lang.String!>! problematicLayouts;
-    field public long resolutions;
-    field public long resolvedWidgets;
-    field public long simpleconstraints;
-    field public long slackvariables;
-    field public long tableSizeIncrease;
-    field public long variables;
-    field public long widgets;
-  }
-
-  public class PriorityGoalRow extends androidx.constraintlayout.core.ArrayRow {
-    ctor public PriorityGoalRow(androidx.constraintlayout.core.Cache!);
-  }
-
-  public class SolverVariable implements java.lang.Comparable<androidx.constraintlayout.core.SolverVariable!> {
-    ctor public SolverVariable(androidx.constraintlayout.core.SolverVariable.Type!, String!);
-    ctor public SolverVariable(String!, androidx.constraintlayout.core.SolverVariable.Type!);
-    method public final void addToRow(androidx.constraintlayout.core.ArrayRow!);
-    method public int compareTo(androidx.constraintlayout.core.SolverVariable!);
-    method public String! getName();
-    method public final void removeFromRow(androidx.constraintlayout.core.ArrayRow!);
-    method public void reset();
-    method public void setFinalValue(androidx.constraintlayout.core.LinearSystem!, float);
-    method public void setName(String!);
-    method public void setSynonym(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public void setType(androidx.constraintlayout.core.SolverVariable.Type!, String!);
-    method public final void updateReferencesWithNewDefinition(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.ArrayRow!);
-    field public static final int STRENGTH_BARRIER = 6; // 0x6
-    field public static final int STRENGTH_CENTERING = 7; // 0x7
-    field public static final int STRENGTH_EQUALITY = 5; // 0x5
-    field public static final int STRENGTH_FIXED = 8; // 0x8
-    field public static final int STRENGTH_HIGH = 3; // 0x3
-    field public static final int STRENGTH_HIGHEST = 4; // 0x4
-    field public static final int STRENGTH_LOW = 1; // 0x1
-    field public static final int STRENGTH_MEDIUM = 2; // 0x2
-    field public static final int STRENGTH_NONE = 0; // 0x0
-    field public float computedValue;
-    field public int id;
-    field public boolean inGoal;
-    field public boolean isFinalValue;
-    field public int strength;
-    field public int usageInRowCount;
-  }
-
-  public enum SolverVariable.Type {
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type CONSTANT;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type ERROR;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type SLACK;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type UNKNOWN;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type UNRESTRICTED;
-  }
-
-  public class SolverVariableValues implements androidx.constraintlayout.core.ArrayRow.ArrayRowVariables {
-    method public void add(androidx.constraintlayout.core.SolverVariable!, float, boolean);
-    method public void clear();
-    method public boolean contains(androidx.constraintlayout.core.SolverVariable!);
-    method public void display();
-    method public void divideByAmount(float);
-    method public float get(androidx.constraintlayout.core.SolverVariable!);
-    method public int getCurrentSize();
-    method public androidx.constraintlayout.core.SolverVariable! getVariable(int);
-    method public float getVariableValue(int);
-    method public int indexOf(androidx.constraintlayout.core.SolverVariable!);
-    method public void invert();
-    method public void put(androidx.constraintlayout.core.SolverVariable!, float);
-    method public float remove(androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public int sizeInBytes();
-    method public float use(androidx.constraintlayout.core.ArrayRow!, boolean);
-    field protected final androidx.constraintlayout.core.Cache! mCache;
-  }
-
-}
-
-package androidx.constraintlayout.core.dsl {
-
-  public class Barrier extends androidx.constraintlayout.core.dsl.Helper {
-    ctor public Barrier(String!);
-    ctor public Barrier(String!, String!);
-    method public androidx.constraintlayout.core.dsl.Barrier! addReference(androidx.constraintlayout.core.dsl.Ref!);
-    method public androidx.constraintlayout.core.dsl.Barrier! addReference(String!);
-    method public androidx.constraintlayout.core.dsl.Constraint.Side! getDirection();
-    method public int getMargin();
-    method public String! referencesToString();
-    method public void setDirection(androidx.constraintlayout.core.dsl.Constraint.Side!);
-    method public void setMargin(int);
-  }
-
-  public abstract class Chain extends androidx.constraintlayout.core.dsl.Helper {
-    ctor public Chain(String!);
-    method public androidx.constraintlayout.core.dsl.Chain! addReference(androidx.constraintlayout.core.dsl.Ref!);
-    method public androidx.constraintlayout.core.dsl.Chain! addReference(String!);
-    method public androidx.constraintlayout.core.dsl.Chain.Style! getStyle();
-    method public String! referencesToString();
-    method public void setStyle(androidx.constraintlayout.core.dsl.Chain.Style!);
-    field protected java.util.ArrayList<androidx.constraintlayout.core.dsl.Ref!>! references;
-    field protected static final java.util.Map<androidx.constraintlayout.core.dsl.Chain.Style!,java.lang.String!>! styleMap;
-  }
-
-  public class Chain.Anchor {
-    method public void build(StringBuilder!);
-    method public String! getId();
-  }
-
-  public enum Chain.Style {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Chain.Style PACKED;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Chain.Style SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Chain.Style SPREAD_INSIDE;
-  }
-
-  public class Constraint {
-    ctor public Constraint(String!);
-    method protected void append(StringBuilder!, String!, float);
-    method public String! convertStringArrayToString(String![]!);
-    method public androidx.constraintlayout.core.dsl.Constraint.VAnchor! getBaseline();
-    method public androidx.constraintlayout.core.dsl.Constraint.VAnchor! getBottom();
-    method public float getCircleAngle();
-    method public String! getCircleConstraint();
-    method public int getCircleRadius();
-    method public String! getDimensionRatio();
-    method public int getEditorAbsoluteX();
-    method public int getEditorAbsoluteY();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getEnd();
-    method public int getHeight();
-    method public androidx.constraintlayout.core.dsl.Constraint.Behaviour! getHeightDefault();
-    method public int getHeightMax();
-    method public int getHeightMin();
-    method public float getHeightPercent();
-    method public float getHorizontalBias();
-    method public androidx.constraintlayout.core.dsl.Constraint.ChainMode! getHorizontalChainStyle();
-    method public float getHorizontalWeight();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getLeft();
-    method public String![]! getReferenceIds();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getRight();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getStart();
-    method public androidx.constraintlayout.core.dsl.Constraint.VAnchor! getTop();
-    method public float getVerticalBias();
-    method public androidx.constraintlayout.core.dsl.Constraint.ChainMode! getVerticalChainStyle();
-    method public float getVerticalWeight();
-    method public int getWidth();
-    method public androidx.constraintlayout.core.dsl.Constraint.Behaviour! getWidthDefault();
-    method public int getWidthMax();
-    method public int getWidthMin();
-    method public float getWidthPercent();
-    method public boolean isConstrainedHeight();
-    method public boolean isConstrainedWidth();
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void setCircleAngle(float);
-    method public void setCircleConstraint(String!);
-    method public void setCircleRadius(int);
-    method public void setConstrainedHeight(boolean);
-    method public void setConstrainedWidth(boolean);
-    method public void setDimensionRatio(String!);
-    method public void setEditorAbsoluteX(int);
-    method public void setEditorAbsoluteY(int);
-    method public void setHeight(int);
-    method public void setHeightDefault(androidx.constraintlayout.core.dsl.Constraint.Behaviour!);
-    method public void setHeightMax(int);
-    method public void setHeightMin(int);
-    method public void setHeightPercent(float);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalChainStyle(androidx.constraintlayout.core.dsl.Constraint.ChainMode!);
-    method public void setHorizontalWeight(float);
-    method public void setReferenceIds(String![]!);
-    method public void setVerticalBias(float);
-    method public void setVerticalChainStyle(androidx.constraintlayout.core.dsl.Constraint.ChainMode!);
-    method public void setVerticalWeight(float);
-    method public void setWidth(int);
-    method public void setWidthDefault(androidx.constraintlayout.core.dsl.Constraint.Behaviour!);
-    method public void setWidthMax(int);
-    method public void setWidthMin(int);
-    method public void setWidthPercent(float);
-    field public static final androidx.constraintlayout.core.dsl.Constraint! PARENT;
-  }
-
-  public class Constraint.Anchor {
-    method public void build(StringBuilder!);
-    method public String! getId();
-  }
-
-  public enum Constraint.Behaviour {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour PERCENT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour RATIO;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour RESOLVED;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour WRAP;
-  }
-
-  public enum Constraint.ChainMode {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.ChainMode PACKED;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.ChainMode SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.ChainMode SPREAD_INSIDE;
-  }
-
-  public class Constraint.HAnchor extends androidx.constraintlayout.core.dsl.Constraint.Anchor {
-  }
-
-  public enum Constraint.HSide {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide START;
-  }
-
-  public enum Constraint.Side {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side TOP;
-  }
-
-  public class Constraint.VAnchor extends androidx.constraintlayout.core.dsl.Constraint.Anchor {
-  }
-
-  public enum Constraint.VSide {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.VSide BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.VSide BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.VSide TOP;
-  }
-
-  public class ConstraintSet {
-    ctor public ConstraintSet(String!);
-    method public void add(androidx.constraintlayout.core.dsl.Constraint!);
-    method public void add(androidx.constraintlayout.core.dsl.Helper!);
-  }
-
-  public abstract class Guideline extends androidx.constraintlayout.core.dsl.Helper {
-    method public int getEnd();
-    method public float getPercent();
-    method public int getStart();
-    method public void setEnd(int);
-    method public void setPercent(float);
-    method public void setStart(int);
-  }
-
-  public class HChain extends androidx.constraintlayout.core.dsl.Chain {
-    ctor public HChain(String!);
-    ctor public HChain(String!, String!);
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getEnd();
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getLeft();
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getRight();
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getStart();
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-  }
-
-  public class HChain.HAnchor extends androidx.constraintlayout.core.dsl.Chain.Anchor {
-  }
-
-  public class Helper {
-    ctor public Helper(String!, androidx.constraintlayout.core.dsl.Helper.HelperType!);
-    ctor public Helper(String!, androidx.constraintlayout.core.dsl.Helper.HelperType!, String!);
-    method public void append(java.util.Map<java.lang.String!,java.lang.String!>!, StringBuilder!);
-    method public java.util.Map<java.lang.String!,java.lang.String!>! convertConfigToMap();
-    method public String! getConfig();
-    method public String! getId();
-    method public androidx.constraintlayout.core.dsl.Helper.HelperType! getType();
-    method public static void main(String![]!);
-    field protected String! config;
-    field protected java.util.Map<java.lang.String!,java.lang.String!>! configMap;
-    field protected final String! name;
-    field protected static final java.util.Map<androidx.constraintlayout.core.dsl.Constraint.Side!,java.lang.String!>! sideMap;
-    field protected androidx.constraintlayout.core.dsl.Helper.HelperType! type;
-    field protected static final java.util.Map<androidx.constraintlayout.core.dsl.Helper.Type!,java.lang.String!>! typeMap;
-  }
-
-  public static final class Helper.HelperType {
-    ctor public Helper.HelperType(String!);
-  }
-
-  public enum Helper.Type {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type BARRIER;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type HORIZONTAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type HORIZONTAL_GUIDELINE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type VERTICAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type VERTICAL_GUIDELINE;
-  }
-
-  public class KeyAttribute extends androidx.constraintlayout.core.dsl.Keys {
-    ctor public KeyAttribute(int, String!);
-    method protected void attributesToString(StringBuilder!);
-    method public float getAlpha();
-    method public androidx.constraintlayout.core.dsl.KeyAttribute.Fit! getCurveFit();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getRotation();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public String! getTarget();
-    method public String! getTransitionEasing();
-    method public float getTransitionPathRotate();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public androidx.constraintlayout.core.dsl.KeyAttribute.Visibility! getVisibility();
-    method public void setAlpha(float);
-    method public void setCurveFit(androidx.constraintlayout.core.dsl.KeyAttribute.Fit!);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setRotation(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTarget(String!);
-    method public void setTransitionEasing(String!);
-    method public void setTransitionPathRotate(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public void setVisibility(androidx.constraintlayout.core.dsl.KeyAttribute.Visibility!);
-    field protected String! TYPE;
-  }
-
-  public enum KeyAttribute.Fit {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Fit LINEAR;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Fit SPLINE;
-  }
-
-  public enum KeyAttribute.Visibility {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Visibility GONE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Visibility INVISIBLE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Visibility VISIBLE;
-  }
-
-  public class KeyAttributes extends androidx.constraintlayout.core.dsl.Keys {
-    method protected void attributesToString(StringBuilder!);
-    method public float[]! getAlpha();
-    method public androidx.constraintlayout.core.dsl.KeyAttributes.Fit! getCurveFit();
-    method public float[]! getPivotX();
-    method public float[]! getPivotY();
-    method public float[]! getRotation();
-    method public float[]! getRotationX();
-    method public float[]! getRotationY();
-    method public float[]! getScaleX();
-    method public float[]! getScaleY();
-    method public String![]! getTarget();
-    method public String! getTransitionEasing();
-    method public float[]! getTransitionPathRotate();
-    method public float[]! getTranslationX();
-    method public float[]! getTranslationY();
-    method public float[]! getTranslationZ();
-    method public androidx.constraintlayout.core.dsl.KeyAttributes.Visibility![]! getVisibility();
-    method public void setAlpha(float...!);
-    method public void setCurveFit(androidx.constraintlayout.core.dsl.KeyAttributes.Fit!);
-    method public void setPivotX(float...!);
-    method public void setPivotY(float...!);
-    method public void setRotation(float...!);
-    method public void setRotationX(float...!);
-    method public void setRotationY(float...!);
-    method public void setScaleX(float[]!);
-    method public void setScaleY(float[]!);
-    method public void setTarget(String![]!);
-    method public void setTransitionEasing(String!);
-    method public void setTransitionPathRotate(float...!);
-    method public void setTranslationX(float[]!);
-    method public void setTranslationY(float[]!);
-    method public void setTranslationZ(float[]!);
-    method public void setVisibility(androidx.constraintlayout.core.dsl.KeyAttributes.Visibility!...!);
-    field protected String! TYPE;
-  }
-
-  public enum KeyAttributes.Fit {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Fit LINEAR;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Fit SPLINE;
-  }
-
-  public enum KeyAttributes.Visibility {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Visibility GONE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Visibility INVISIBLE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Visibility VISIBLE;
-  }
-
-  public class KeyCycle extends androidx.constraintlayout.core.dsl.KeyAttribute {
-    method public float getOffset();
-    method public float getPeriod();
-    method public float getPhase();
-    method public androidx.constraintlayout.core.dsl.KeyCycle.Wave! getShape();
-    method public void setOffset(float);
-    method public void setPeriod(float);
-    method public void setPhase(float);
-    method public void setShape(androidx.constraintlayout.core.dsl.KeyCycle.Wave!);
-  }
-
-  public enum KeyCycle.Wave {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave COS;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave REVERSE_SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave SIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave SQUARE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave TRIANGLE;
-  }
-
-  public class KeyCycles extends androidx.constraintlayout.core.dsl.KeyAttributes {
-    method public float[]! getWaveOffset();
-    method public float[]! getWavePeriod();
-    method public float[]! getWavePhase();
-    method public androidx.constraintlayout.core.dsl.KeyCycles.Wave! getWaveShape();
-    method public void setWaveOffset(float...!);
-    method public void setWavePeriod(float...!);
-    method public void setWavePhase(float...!);
-    method public void setWaveShape(androidx.constraintlayout.core.dsl.KeyCycles.Wave!);
-  }
-
-  public enum KeyCycles.Wave {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave COS;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave REVERSE_SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave SIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave SQUARE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave TRIANGLE;
-  }
-
-  public class KeyFrames {
-    ctor public KeyFrames();
-    method public void add(androidx.constraintlayout.core.dsl.Keys!);
-  }
-
-  public class KeyPosition extends androidx.constraintlayout.core.dsl.Keys {
-    ctor public KeyPosition(String!, int);
-    method public int getFrames();
-    method public float getPercentHeight();
-    method public float getPercentWidth();
-    method public float getPercentX();
-    method public float getPercentY();
-    method public androidx.constraintlayout.core.dsl.KeyPosition.Type! getPositionType();
-    method public String! getTarget();
-    method public String! getTransitionEasing();
-    method public void setFrames(int);
-    method public void setPercentHeight(float);
-    method public void setPercentWidth(float);
-    method public void setPercentX(float);
-    method public void setPercentY(float);
-    method public void setPositionType(androidx.constraintlayout.core.dsl.KeyPosition.Type!);
-    method public void setTarget(String!);
-    method public void setTransitionEasing(String!);
-  }
-
-  public enum KeyPosition.Type {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPosition.Type CARTESIAN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPosition.Type PATH;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPosition.Type SCREEN;
-  }
-
-  public class KeyPositions extends androidx.constraintlayout.core.dsl.Keys {
-    ctor public KeyPositions(int, java.lang.String!...!);
-    method public int[]! getFrames();
-    method public float[]! getPercentHeight();
-    method public float[]! getPercentWidth();
-    method public float[]! getPercentX();
-    method public float[]! getPercentY();
-    method public androidx.constraintlayout.core.dsl.KeyPositions.Type! getPositionType();
-    method public String![]! getTarget();
-    method public String! getTransitionEasing();
-    method public void setFrames(int...!);
-    method public void setPercentHeight(float...!);
-    method public void setPercentWidth(float...!);
-    method public void setPercentX(float...!);
-    method public void setPercentY(float...!);
-    method public void setPositionType(androidx.constraintlayout.core.dsl.KeyPositions.Type!);
-    method public void setTransitionEasing(String!);
-  }
-
-  public enum KeyPositions.Type {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPositions.Type CARTESIAN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPositions.Type PATH;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPositions.Type SCREEN;
-  }
-
-  public class Keys {
-    ctor public Keys();
-    method protected void append(StringBuilder!, String!, float);
-    method protected void append(StringBuilder!, String!, float[]!);
-    method protected void append(StringBuilder!, String!, int);
-    method protected void append(StringBuilder!, String!, String!);
-    method protected void append(StringBuilder!, String!, String![]!);
-    method protected String! unpack(String![]!);
-  }
-
-  public class MotionScene {
-    ctor public MotionScene();
-    method public void addConstraintSet(androidx.constraintlayout.core.dsl.ConstraintSet!);
-    method public void addTransition(androidx.constraintlayout.core.dsl.Transition!);
-  }
-
-  public class OnSwipe {
-    ctor public OnSwipe();
-    ctor public OnSwipe(String!, androidx.constraintlayout.core.dsl.OnSwipe.Side!, androidx.constraintlayout.core.dsl.OnSwipe.Drag!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Mode! getAutoCompleteMode();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Drag! getDragDirection();
-    method public float getDragScale();
-    method public float getDragThreshold();
-    method public String! getLimitBoundsTo();
-    method public float getMaxAcceleration();
-    method public float getMaxVelocity();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.TouchUp! getOnTouchUp();
-    method public String! getRotationCenterId();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Boundary! getSpringBoundary();
-    method public float getSpringDamping();
-    method public float getSpringMass();
-    method public float getSpringStiffness();
-    method public float getSpringStopThreshold();
-    method public String! getTouchAnchorId();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Side! getTouchAnchorSide();
-    method public void setAutoCompleteMode(androidx.constraintlayout.core.dsl.OnSwipe.Mode!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setDragDirection(androidx.constraintlayout.core.dsl.OnSwipe.Drag!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setDragScale(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setDragThreshold(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setLimitBoundsTo(String!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setMaxAcceleration(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setMaxVelocity(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setOnTouchUp(androidx.constraintlayout.core.dsl.OnSwipe.TouchUp!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setRotateCenter(String!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringBoundary(androidx.constraintlayout.core.dsl.OnSwipe.Boundary!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringDamping(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringMass(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringStiffness(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringStopThreshold(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setTouchAnchorId(String!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setTouchAnchorSide(androidx.constraintlayout.core.dsl.OnSwipe.Side!);
-    field public static final int FLAG_DISABLE_POST_SCROLL = 1; // 0x1
-    field public static final int FLAG_DISABLE_SCROLL = 2; // 0x2
-  }
-
-  public enum OnSwipe.Boundary {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary BOUNCE_BOTH;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary BOUNCE_END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary BOUNCE_START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary OVERSHOOT;
-  }
-
-  public enum OnSwipe.Drag {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag ANTICLOCKWISE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag CLOCKWISE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag DOWN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag UP;
-  }
-
-  public enum OnSwipe.Mode {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Mode SPRING;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Mode VELOCITY;
-  }
-
-  public enum OnSwipe.Side {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side MIDDLE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side TOP;
-  }
-
-  public enum OnSwipe.TouchUp {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp AUTOCOMPLETE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp DECELERATE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp DECELERATE_COMPLETE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp NEVER_COMPLETE_END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp NEVER_COMPLETE_START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp STOP;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp TO_END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp TO_START;
-  }
-
-  public class Ref {
-    method public static void addStringToReferences(String!, java.util.ArrayList<androidx.constraintlayout.core.dsl.Ref!>!);
-    method public String! getId();
-    method public float getPostMargin();
-    method public float getPreMargin();
-    method public float getWeight();
-    method public static float parseFloat(Object!);
-    method public static androidx.constraintlayout.core.dsl.Ref! parseStringToRef(String!);
-    method public void setId(String!);
-    method public void setPostMargin(float);
-    method public void setPreMargin(float);
-    method public void setWeight(float);
-  }
-
-  public class Transition {
-    ctor public Transition(String!, String!);
-    ctor public Transition(String!, String!, String!);
-    method public String! getId();
-    method public void setDuration(int);
-    method public void setFrom(String!);
-    method public void setId(String!);
-    method public void setKeyFrames(androidx.constraintlayout.core.dsl.Keys!);
-    method public void setOnSwipe(androidx.constraintlayout.core.dsl.OnSwipe!);
-    method public void setStagger(float);
-    method public void setTo(String!);
-  }
-
-  public class VChain extends androidx.constraintlayout.core.dsl.Chain {
-    ctor public VChain(String!);
-    ctor public VChain(String!, String!);
-    method public androidx.constraintlayout.core.dsl.VChain.VAnchor! getBaseline();
-    method public androidx.constraintlayout.core.dsl.VChain.VAnchor! getBottom();
-    method public androidx.constraintlayout.core.dsl.VChain.VAnchor! getTop();
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-  }
-
-  public class VChain.VAnchor extends androidx.constraintlayout.core.dsl.Chain.Anchor {
-  }
-
-  public class VGuideline extends androidx.constraintlayout.core.dsl.Guideline {
-    ctor public VGuideline(String!);
-    ctor public VGuideline(String!, String!);
-  }
-
-}
-
-package androidx.constraintlayout.core.motion {
-
-  public class CustomAttribute {
-    ctor public CustomAttribute(androidx.constraintlayout.core.motion.CustomAttribute!, Object!);
-    ctor public CustomAttribute(String!, androidx.constraintlayout.core.motion.CustomAttribute.AttributeType!);
-    ctor public CustomAttribute(String!, androidx.constraintlayout.core.motion.CustomAttribute.AttributeType!, Object!, boolean);
-    method public boolean diff(androidx.constraintlayout.core.motion.CustomAttribute!);
-    method public androidx.constraintlayout.core.motion.CustomAttribute.AttributeType! getType();
-    method public float getValueToInterpolate();
-    method public void getValuesToInterpolate(float[]!);
-    method public static int hsvToRgb(float, float, float);
-    method public boolean isContinuous();
-    method public int numberOfInterpolatedValues();
-    method public void setColorValue(int);
-    method public void setFloatValue(float);
-    method public void setIntValue(int);
-    method public void setStringValue(String!);
-    method public void setValue(float[]!);
-    method public void setValue(Object!);
-  }
-
-  public enum CustomAttribute.AttributeType {
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType BOOLEAN_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType COLOR_DRAWABLE_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType COLOR_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType DIMENSION_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType FLOAT_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType INT_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType REFERENCE_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType STRING_TYPE;
-  }
-
-  public class CustomVariable {
-    ctor public CustomVariable(androidx.constraintlayout.core.motion.CustomVariable!);
-    ctor public CustomVariable(androidx.constraintlayout.core.motion.CustomVariable!, Object!);
-    ctor public CustomVariable(String!, int);
-    ctor public CustomVariable(String!, int, boolean);
-    ctor public CustomVariable(String!, int, float);
-    ctor public CustomVariable(String!, int, int);
-    ctor public CustomVariable(String!, int, Object!);
-    ctor public CustomVariable(String!, int, String!);
-    method public void applyToWidget(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public static String! colorString(int);
-    method public androidx.constraintlayout.core.motion.CustomVariable! copy();
-    method public boolean diff(androidx.constraintlayout.core.motion.CustomVariable!);
-    method public boolean getBooleanValue();
-    method public int getColorValue();
-    method public float getFloatValue();
-    method public int getIntegerValue();
-    method public int getInterpolatedColor(float[]!);
-    method public String! getName();
-    method public String! getStringValue();
-    method public int getType();
-    method public float getValueToInterpolate();
-    method public void getValuesToInterpolate(float[]!);
-    method public static int hsvToRgb(float, float, float);
-    method public boolean isContinuous();
-    method public int numberOfInterpolatedValues();
-    method public static int rgbaTocColor(float, float, float, float);
-    method public void setBooleanValue(boolean);
-    method public void setFloatValue(float);
-    method public void setIntValue(int);
-    method public void setInterpolatedValue(androidx.constraintlayout.core.motion.MotionWidget!, float[]!);
-    method public void setStringValue(String!);
-    method public void setValue(float[]!);
-    method public void setValue(Object!);
-  }
-
-  public class Motion implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public Motion(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void addKey(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public int buildKeyFrames(float[]!, int[]!, int[]!);
-    method public void buildPath(float[]!, int);
-    method public void buildRect(float, float[]!, int);
-    method public String! getAnimateRelativeTo();
-    method public void getCenter(double, float[]!, float[]!);
-    method public float getCenterX();
-    method public float getCenterY();
-    method public void getDpDt(float, float, float, float[]!);
-    method public int getDrawPath();
-    method public float getFinalHeight();
-    method public float getFinalWidth();
-    method public float getFinalX();
-    method public float getFinalY();
-    method public int getId(String!);
-    method public androidx.constraintlayout.core.motion.MotionPaths! getKeyFrame(int);
-    method public int getKeyFrameInfo(int, int[]!);
-    method public int getKeyFramePositions(int[]!, float[]!);
-    method public float getMotionStagger();
-    method public float getStartHeight();
-    method public float getStartWidth();
-    method public float getStartX();
-    method public float getStartY();
-    method public int getTransformPivotTarget();
-    method public androidx.constraintlayout.core.motion.MotionWidget! getView();
-    method public boolean interpolate(androidx.constraintlayout.core.motion.MotionWidget!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-    method public void setDrawPath(int);
-    method public void setEnd(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void setIdString(String!);
-    method public void setPathMotionArc(int);
-    method public void setStaggerOffset(float);
-    method public void setStaggerScale(float);
-    method public void setStart(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void setStartState(androidx.constraintlayout.core.motion.utils.ViewState!, androidx.constraintlayout.core.motion.MotionWidget!, int, int, int);
-    method public void setTransformPivotTarget(int);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public void setView(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void setup(int, int, float, long);
-    method public void setupRelative(androidx.constraintlayout.core.motion.Motion!);
-    field public static final int DRAW_PATH_AS_CONFIGURED = 4; // 0x4
-    field public static final int DRAW_PATH_BASIC = 1; // 0x1
-    field public static final int DRAW_PATH_CARTESIAN = 3; // 0x3
-    field public static final int DRAW_PATH_NONE = 0; // 0x0
-    field public static final int DRAW_PATH_RECTANGLE = 5; // 0x5
-    field public static final int DRAW_PATH_RELATIVE = 2; // 0x2
-    field public static final int DRAW_PATH_SCREEN = 6; // 0x6
-    field public static final int HORIZONTAL_PATH_X = 2; // 0x2
-    field public static final int HORIZONTAL_PATH_Y = 3; // 0x3
-    field public static final int PATH_PERCENT = 0; // 0x0
-    field public static final int PATH_PERPENDICULAR = 1; // 0x1
-    field public static final int ROTATION_LEFT = 2; // 0x2
-    field public static final int ROTATION_RIGHT = 1; // 0x1
-    field public static final int VERTICAL_PATH_X = 4; // 0x4
-    field public static final int VERTICAL_PATH_Y = 5; // 0x5
-    field public String! mId;
-  }
-
-  public class MotionPaths implements java.lang.Comparable<androidx.constraintlayout.core.motion.MotionPaths!> {
-    ctor public MotionPaths();
-    ctor public MotionPaths(int, int, androidx.constraintlayout.core.motion.key.MotionKeyPosition!, androidx.constraintlayout.core.motion.MotionPaths!, androidx.constraintlayout.core.motion.MotionPaths!);
-    method public void applyParameters(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public int compareTo(androidx.constraintlayout.core.motion.MotionPaths!);
-    method public void configureRelativeTo(androidx.constraintlayout.core.motion.Motion!);
-    method public void setupRelative(androidx.constraintlayout.core.motion.Motion!, androidx.constraintlayout.core.motion.MotionPaths!);
-    field public static final int CARTESIAN = 0; // 0x0
-    field public static final boolean DEBUG = false;
-    field public static final boolean OLD_WAY = false;
-    field public static final int PERPENDICULAR = 1; // 0x1
-    field public static final int SCREEN = 2; // 0x2
-    field public static final String TAG = "MotionPaths";
-    field public String! mId;
-  }
-
-  public class MotionWidget implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public MotionWidget();
-    ctor public MotionWidget(androidx.constraintlayout.core.state.WidgetFrame!);
-    method public androidx.constraintlayout.core.motion.MotionWidget! findViewById(int);
-    method public float getAlpha();
-    method public int getBottom();
-    method public androidx.constraintlayout.core.motion.CustomVariable! getCustomAttribute(String!);
-    method public java.util.Set<java.lang.String!>! getCustomAttributeNames();
-    method public int getHeight();
-    method public int getId(String!);
-    method public int getLeft();
-    method public String! getName();
-    method public androidx.constraintlayout.core.motion.MotionWidget! getParent();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public int getRight();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public int getTop();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public float getValueAttributes(int);
-    method public int getVisibility();
-    method public androidx.constraintlayout.core.state.WidgetFrame! getWidgetFrame();
-    method public int getWidth();
-    method public int getX();
-    method public int getY();
-    method public void layout(int, int, int, int);
-    method public void setBounds(int, int, int, int);
-    method public void setCustomAttribute(String!, int, boolean);
-    method public void setCustomAttribute(String!, int, float);
-    method public void setCustomAttribute(String!, int, int);
-    method public void setCustomAttribute(String!, int, String!);
-    method public void setInterpolatedValue(androidx.constraintlayout.core.motion.CustomAttribute!, float[]!);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public boolean setValueAttributes(int, float);
-    method public boolean setValueMotion(int, float);
-    method public boolean setValueMotion(int, int);
-    method public boolean setValueMotion(int, String!);
-    method public void setVisibility(int);
-    method public void updateMotion(androidx.constraintlayout.core.motion.utils.TypedValues!);
-    field public static final int FILL_PARENT = -1; // 0xffffffff
-    field public static final int GONE_UNSET = -2147483648; // 0x80000000
-    field public static final int INVISIBLE = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int ROTATE_LEFT_OF_PORTRATE = 4; // 0x4
-    field public static final int ROTATE_NONE = 0; // 0x0
-    field public static final int ROTATE_PORTRATE_OF_LEFT = 2; // 0x2
-    field public static final int ROTATE_PORTRATE_OF_RIGHT = 1; // 0x1
-    field public static final int ROTATE_RIGHT_OF_PORTRATE = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int VISIBILITY_MODE_IGNORE = 1; // 0x1
-    field public static final int VISIBILITY_MODE_NORMAL = 0; // 0x0
-    field public static final int VISIBLE = 4; // 0x4
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public static class MotionWidget.Motion {
-    ctor public MotionWidget.Motion();
-    field public int mAnimateCircleAngleTo;
-    field public String! mAnimateRelativeTo;
-    field public int mDrawPath;
-    field public float mMotionStagger;
-    field public int mPathMotionArc;
-    field public float mPathRotate;
-    field public int mPolarRelativeTo;
-    field public int mQuantizeInterpolatorID;
-    field public String! mQuantizeInterpolatorString;
-    field public int mQuantizeInterpolatorType;
-    field public float mQuantizeMotionPhase;
-    field public int mQuantizeMotionSteps;
-    field public String! mTransitionEasing;
-  }
-
-  public static class MotionWidget.PropertySet {
-    ctor public MotionWidget.PropertySet();
-    field public float alpha;
-    field public float mProgress;
-    field public int mVisibilityMode;
-    field public int visibility;
-  }
-
-}
-
-package androidx.constraintlayout.core.motion.key {
-
-  public class MotionConstraintSet {
-    ctor public MotionConstraintSet();
-    field public static final int ROTATE_LEFT_OF_PORTRATE = 4; // 0x4
-    field public static final int ROTATE_NONE = 0; // 0x0
-    field public static final int ROTATE_PORTRATE_OF_LEFT = 2; // 0x2
-    field public static final int ROTATE_PORTRATE_OF_RIGHT = 1; // 0x1
-    field public static final int ROTATE_RIGHT_OF_PORTRATE = 3; // 0x3
-    field public String! mIdString;
-    field public int mRotate;
-  }
-
-  public abstract class MotionKey implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public MotionKey();
-    method public abstract void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public abstract androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public androidx.constraintlayout.core.motion.key.MotionKey! copy(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public abstract void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getFramePosition();
-    method public void setCustomAttribute(String!, int, boolean);
-    method public void setCustomAttribute(String!, int, float);
-    method public void setCustomAttribute(String!, int, int);
-    method public void setCustomAttribute(String!, int, String!);
-    method public void setFramePosition(int);
-    method public void setInterpolation(java.util.HashMap<java.lang.String!,java.lang.Integer!>!);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! setViewId(int);
-    field public static final String ALPHA = "alpha";
-    field public static final String CUSTOM = "CUSTOM";
-    field public static final String ELEVATION = "elevation";
-    field public static final String ROTATION = "rotationZ";
-    field public static final String ROTATION_X = "rotationX";
-    field public static final String SCALE_X = "scaleX";
-    field public static final String SCALE_Y = "scaleY";
-    field public static final String TRANSITION_PATH_ROTATE = "transitionPathRotate";
-    field public static final String TRANSLATION_X = "translationX";
-    field public static final String TRANSLATION_Y = "translationY";
-    field public static int UNSET;
-    field public static final String VISIBILITY = "visibility";
-    field public java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.CustomVariable!>! mCustom;
-    field public int mFramePosition;
-    field public int mType;
-  }
-
-  public class MotionKeyAttributes extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyAttributes();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getCurveFit();
-    method public int getId(String!);
-    method public void printAttributes();
-    field public static final int KEY_TYPE = 1; // 0x1
-  }
-
-  public class MotionKeyCycle extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyCycle();
-    method public void addCycleValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void dump();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    method public float getValue(String!);
-    method public void printAttributes();
-    field public static final int KEY_TYPE = 4; // 0x4
-    field public static final int SHAPE_BOUNCE = 6; // 0x6
-    field public static final int SHAPE_COS_WAVE = 5; // 0x5
-    field public static final int SHAPE_REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SHAPE_SAW_WAVE = 3; // 0x3
-    field public static final int SHAPE_SIN_WAVE = 0; // 0x0
-    field public static final int SHAPE_SQUARE_WAVE = 1; // 0x1
-    field public static final int SHAPE_TRIANGLE_WAVE = 2; // 0x2
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_PHASE = "wavePhase";
-    field public static final String WAVE_SHAPE = "waveShape";
-  }
-
-  public class MotionKeyPosition extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyPosition();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    method public boolean intersects(int, int, androidx.constraintlayout.core.motion.utils.FloatRect!, androidx.constraintlayout.core.motion.utils.FloatRect!, float, float);
-    method public void positionAttributes(androidx.constraintlayout.core.motion.MotionWidget!, androidx.constraintlayout.core.motion.utils.FloatRect!, androidx.constraintlayout.core.motion.utils.FloatRect!, float, float, String![]!, float[]!);
-    field protected static final float SELECTION_SLOPE = 20.0f;
-    field public static final int TYPE_CARTESIAN = 0; // 0x0
-    field public static final int TYPE_PATH = 1; // 0x1
-    field public static final int TYPE_SCREEN = 2; // 0x2
-    field public float mAltPercentX;
-    field public float mAltPercentY;
-    field public int mCurveFit;
-    field public int mDrawPath;
-    field public int mPathMotionArc;
-    field public float mPercentHeight;
-    field public float mPercentWidth;
-    field public float mPercentX;
-    field public float mPercentY;
-    field public int mPositionType;
-    field public String! mTransitionEasing;
-  }
-
-  public class MotionKeyTimeCycle extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyTimeCycle();
-    method public void addTimeValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public androidx.constraintlayout.core.motion.key.MotionKeyTimeCycle! copy(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    field public static final int KEY_TYPE = 3; // 0x3
-  }
-
-  public class MotionKeyTrigger extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyTrigger();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void conditionallyFire(float, androidx.constraintlayout.core.motion.MotionWidget!);
-    method public androidx.constraintlayout.core.motion.key.MotionKeyTrigger! copy(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    field public static final String CROSS = "CROSS";
-    field public static final int KEY_TYPE = 5; // 0x5
-    field public static final String NEGATIVE_CROSS = "negativeCross";
-    field public static final String POSITIVE_CROSS = "positiveCross";
-    field public static final String POST_LAYOUT = "postLayout";
-    field public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
-    field public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
-    field public static final String TRIGGER_ID = "triggerID";
-    field public static final String TRIGGER_RECEIVER = "triggerReceiver";
-    field public static final String TRIGGER_SLACK = "triggerSlack";
-    field public static final int TYPE_CROSS = 312; // 0x138
-    field public static final int TYPE_NEGATIVE_CROSS = 310; // 0x136
-    field public static final int TYPE_POSITIVE_CROSS = 309; // 0x135
-    field public static final int TYPE_POST_LAYOUT = 304; // 0x130
-    field public static final int TYPE_TRIGGER_COLLISION_ID = 307; // 0x133
-    field public static final int TYPE_TRIGGER_COLLISION_VIEW = 306; // 0x132
-    field public static final int TYPE_TRIGGER_ID = 308; // 0x134
-    field public static final int TYPE_TRIGGER_RECEIVER = 311; // 0x137
-    field public static final int TYPE_TRIGGER_SLACK = 305; // 0x131
-    field public static final int TYPE_VIEW_TRANSITION_ON_CROSS = 301; // 0x12d
-    field public static final int TYPE_VIEW_TRANSITION_ON_NEGATIVE_CROSS = 303; // 0x12f
-    field public static final int TYPE_VIEW_TRANSITION_ON_POSITIVE_CROSS = 302; // 0x12e
-    field public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
-    field public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
-    field public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
-  }
-
-}
-
-package androidx.constraintlayout.core.motion.parse {
-
-  public class KeyParser {
-    ctor public KeyParser();
-    method public static void main(String![]!);
-    method public static androidx.constraintlayout.core.motion.utils.TypedBundle! parseAttributes(String!);
-  }
-
-}
-
-package androidx.constraintlayout.core.motion.utils {
-
-  public class ArcCurveFit extends androidx.constraintlayout.core.motion.utils.CurveFit {
-    ctor public ArcCurveFit(int[]!, double[]!, double[]![]!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getSlope(double, double[]!);
-    method public double getSlope(double, int);
-    method public double[]! getTimePoints();
-    field public static final int ARC_ABOVE = 5; // 0x5
-    field public static final int ARC_BELOW = 4; // 0x4
-    field public static final int ARC_START_FLIP = 3; // 0x3
-    field public static final int ARC_START_HORIZONTAL = 2; // 0x2
-    field public static final int ARC_START_LINEAR = 0; // 0x0
-    field public static final int ARC_START_VERTICAL = 1; // 0x1
-  }
-
-  public abstract class CurveFit {
-    ctor public CurveFit();
-    method public static androidx.constraintlayout.core.motion.utils.CurveFit! get(int, double[]!, double[]![]!);
-    method public static androidx.constraintlayout.core.motion.utils.CurveFit! getArc(int[]!, double[]!, double[]![]!);
-    method public abstract void getPos(double, double[]!);
-    method public abstract void getPos(double, float[]!);
-    method public abstract double getPos(double, int);
-    method public abstract void getSlope(double, double[]!);
-    method public abstract double getSlope(double, int);
-    method public abstract double[]! getTimePoints();
-    field public static final int CONSTANT = 2; // 0x2
-    field public static final int LINEAR = 1; // 0x1
-    field public static final int SPLINE = 0; // 0x0
-  }
-
-  public interface DifferentialInterpolator {
-    method public float getInterpolation(float);
-    method public float getVelocity();
-  }
-
-  public class Easing {
-    ctor public Easing();
-    method public double get(double);
-    method public double getDiff(double);
-    method public static androidx.constraintlayout.core.motion.utils.Easing! getInterpolator(String!);
-    field public static String![]! NAMED_EASING;
-  }
-
-  public class FloatRect {
-    ctor public FloatRect();
-    method public final float centerX();
-    method public final float centerY();
-    field public float bottom;
-    field public float left;
-    field public float right;
-    field public float top;
-  }
-
-  public class HyperSpline {
-    ctor public HyperSpline();
-    ctor public HyperSpline(double[]![]!);
-    method public double approxLength(androidx.constraintlayout.core.motion.utils.HyperSpline.Cubic![]!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getVelocity(double, double[]!);
-    method public void setup(double[]![]!);
-  }
-
-  public static class HyperSpline.Cubic {
-    ctor public HyperSpline.Cubic(double, double, double, double);
-    method public double eval(double);
-    method public double vel(double);
-  }
-
-  public class KeyCache {
-    ctor public KeyCache();
-    method public float getFloatValue(Object!, String!, int);
-    method public void setFloatValue(Object!, String!, int, float);
-  }
-
-  public abstract class KeyCycleOscillator {
-    ctor public KeyCycleOscillator();
-    method public float get(float);
-    method public androidx.constraintlayout.core.motion.utils.CurveFit! getCurveFit();
-    method public float getSlope(float);
-    method public static androidx.constraintlayout.core.motion.utils.KeyCycleOscillator! makeWidgetCycle(String!);
-    method protected void setCustom(Object!);
-    method public void setPoint(int, int, String!, int, float, float, float, float);
-    method public void setPoint(int, int, String!, int, float, float, float, float, Object!);
-    method public void setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float);
-    method public void setType(String!);
-    method public void setup(float);
-    method public boolean variesByPath();
-    field public int mVariesBy;
-  }
-
-  public static class KeyCycleOscillator.PathRotateSet extends androidx.constraintlayout.core.motion.utils.KeyCycleOscillator {
-    ctor public KeyCycleOscillator.PathRotateSet(String!);
-    method public void setPathRotate(androidx.constraintlayout.core.motion.MotionWidget!, float, double, double);
-  }
-
-  public class KeyFrameArray {
-    ctor public KeyFrameArray();
-  }
-
-  public static class KeyFrameArray.CustomArray {
-    ctor public KeyFrameArray.CustomArray();
-    method public void append(int, androidx.constraintlayout.core.motion.CustomAttribute!);
-    method public void clear();
-    method public void dump();
-    method public int keyAt(int);
-    method public void remove(int);
-    method public int size();
-    method public androidx.constraintlayout.core.motion.CustomAttribute! valueAt(int);
-  }
-
-  public static class KeyFrameArray.CustomVar {
-    ctor public KeyFrameArray.CustomVar();
-    method public void append(int, androidx.constraintlayout.core.motion.CustomVariable!);
-    method public void clear();
-    method public void dump();
-    method public int keyAt(int);
-    method public void remove(int);
-    method public int size();
-    method public androidx.constraintlayout.core.motion.CustomVariable! valueAt(int);
-  }
-
-  public class LinearCurveFit extends androidx.constraintlayout.core.motion.utils.CurveFit {
-    ctor public LinearCurveFit(double[]!, double[]![]!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getSlope(double, double[]!);
-    method public double getSlope(double, int);
-    method public double[]! getTimePoints();
-  }
-
-  public class MonotonicCurveFit extends androidx.constraintlayout.core.motion.utils.CurveFit {
-    ctor public MonotonicCurveFit(double[]!, double[]![]!);
-    method public static androidx.constraintlayout.core.motion.utils.MonotonicCurveFit! buildWave(String!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getSlope(double, double[]!);
-    method public double getSlope(double, int);
-    method public double[]! getTimePoints();
-  }
-
-  public class Oscillator {
-    ctor public Oscillator();
-    method public void addPoint(double, float);
-    method public double getSlope(double, double, double);
-    method public double getValue(double, double);
-    method public void normalize();
-    method public void setType(int, String!);
-    field public static final int BOUNCE = 6; // 0x6
-    field public static final int COS_WAVE = 5; // 0x5
-    field public static final int CUSTOM = 7; // 0x7
-    field public static final int REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SAW_WAVE = 3; // 0x3
-    field public static final int SIN_WAVE = 0; // 0x0
-    field public static final int SQUARE_WAVE = 1; // 0x1
-    field public static String! TAG;
-    field public static final int TRIANGLE_WAVE = 2; // 0x2
-  }
-
-  public class Rect {
-    ctor public Rect();
-    method public int height();
-    method public int width();
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public int top;
-  }
-
-  public class Schlick extends androidx.constraintlayout.core.motion.utils.Easing {
-  }
-
-  public abstract class SplineSet {
-    ctor public SplineSet();
-    method public float get(float);
-    method public androidx.constraintlayout.core.motion.utils.CurveFit! getCurveFit();
-    method public float getSlope(float);
-    method public static androidx.constraintlayout.core.motion.utils.SplineSet! makeCustomSpline(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomArray!);
-    method public static androidx.constraintlayout.core.motion.utils.SplineSet! makeCustomSplineSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomVar!);
-    method public static androidx.constraintlayout.core.motion.utils.SplineSet! makeSpline(String!, long);
-    method public void setPoint(int, float);
-    method public void setProperty(androidx.constraintlayout.core.motion.utils.TypedValues!, float);
-    method public void setType(String!);
-    method public void setup(int);
-    field protected androidx.constraintlayout.core.motion.utils.CurveFit! mCurveFit;
-    field protected int[]! mTimePoints;
-    field protected float[]! mValues;
-  }
-
-  public static class SplineSet.CustomSet extends androidx.constraintlayout.core.motion.utils.SplineSet {
-    ctor public SplineSet.CustomSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomArray!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomAttribute!);
-    method public void setProperty(androidx.constraintlayout.core.state.WidgetFrame!, float);
-  }
-
-  public static class SplineSet.CustomSpline extends androidx.constraintlayout.core.motion.utils.SplineSet {
-    ctor public SplineSet.CustomSpline(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomVar!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomVariable!);
-    method public void setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float);
-  }
-
-  public class SpringStopEngine implements androidx.constraintlayout.core.motion.utils.StopEngine {
-    ctor public SpringStopEngine();
-    method public String! debug(String!, float);
-    method public float getAcceleration();
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-    method public void springConfig(float, float, float, float, float, float, float, int);
-  }
-
-  public class StepCurve extends androidx.constraintlayout.core.motion.utils.Easing {
-  }
-
-  public interface StopEngine {
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-  }
-
-  public class StopLogicEngine implements androidx.constraintlayout.core.motion.utils.StopEngine {
-    ctor public StopLogicEngine();
-    method public void config(float, float, float, float, float, float);
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-  }
-
-  public static class StopLogicEngine.Decelerate implements androidx.constraintlayout.core.motion.utils.StopEngine {
-    ctor public StopLogicEngine.Decelerate();
-    method public void config(float, float, float);
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-  }
-
-  public abstract class TimeCycleSplineSet {
-    ctor public TimeCycleSplineSet();
-    method protected float calcWave(float);
-    method public androidx.constraintlayout.core.motion.utils.CurveFit! getCurveFit();
-    method public void setPoint(int, float, float, int, float);
-    method protected void setStartTime(long);
-    method public void setType(String!);
-    method public void setup(int);
-    field protected static final int CURVE_OFFSET = 2; // 0x2
-    field protected static final int CURVE_PERIOD = 1; // 0x1
-    field protected static final int CURVE_VALUE = 0; // 0x0
-    field protected float[]! mCache;
-    field protected boolean mContinue;
-    field protected int mCount;
-    field protected androidx.constraintlayout.core.motion.utils.CurveFit! mCurveFit;
-    field protected float mLastCycle;
-    field protected long mLastTime;
-    field protected int[]! mTimePoints;
-    field protected String! mType;
-    field protected float[]![]! mValues;
-    field protected int mWaveShape;
-    field protected static float sVal2PI;
-  }
-
-  public static class TimeCycleSplineSet.CustomSet extends androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet {
-    ctor public TimeCycleSplineSet.CustomSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomArray!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomAttribute!, float, int, float);
-    method public boolean setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  public static class TimeCycleSplineSet.CustomVarSet extends androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet {
-    ctor public TimeCycleSplineSet.CustomVarSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomVar!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomVariable!, float, int, float);
-    method public boolean setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  protected static class TimeCycleSplineSet.Sort {
-    ctor protected TimeCycleSplineSet.Sort();
-  }
-
-  public class TypedBundle {
-    ctor public TypedBundle();
-    method public void add(int, boolean);
-    method public void add(int, float);
-    method public void add(int, int);
-    method public void add(int, String!);
-    method public void addIfNotNull(int, String!);
-    method public void applyDelta(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void applyDelta(androidx.constraintlayout.core.motion.utils.TypedValues!);
-    method public void clear();
-    method public int getInteger(int);
-  }
-
-  public interface TypedValues {
-    method public int getId(String!);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    field public static final int BOOLEAN_MASK = 1; // 0x1
-    field public static final int FLOAT_MASK = 4; // 0x4
-    field public static final int INT_MASK = 2; // 0x2
-    field public static final int STRING_MASK = 8; // 0x8
-    field public static final String S_CUSTOM = "CUSTOM";
-    field public static final int TYPE_FRAME_POSITION = 100; // 0x64
-    field public static final int TYPE_TARGET = 101; // 0x65
-  }
-
-  public static interface TypedValues.AttributesType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyAttributes";
-    field public static final String S_ALPHA = "alpha";
-    field public static final String S_CURVE_FIT = "curveFit";
-    field public static final String S_CUSTOM = "CUSTOM";
-    field public static final String S_EASING = "easing";
-    field public static final String S_ELEVATION = "elevation";
-    field public static final String S_FRAME = "frame";
-    field public static final String S_PATH_ROTATE = "pathRotate";
-    field public static final String S_PIVOT_TARGET = "pivotTarget";
-    field public static final String S_PIVOT_X = "pivotX";
-    field public static final String S_PIVOT_Y = "pivotY";
-    field public static final String S_PROGRESS = "progress";
-    field public static final String S_ROTATION_X = "rotationX";
-    field public static final String S_ROTATION_Y = "rotationY";
-    field public static final String S_ROTATION_Z = "rotationZ";
-    field public static final String S_SCALE_X = "scaleX";
-    field public static final String S_SCALE_Y = "scaleY";
-    field public static final String S_TARGET = "target";
-    field public static final String S_TRANSLATION_X = "translationX";
-    field public static final String S_TRANSLATION_Y = "translationY";
-    field public static final String S_TRANSLATION_Z = "translationZ";
-    field public static final String S_VISIBILITY = "visibility";
-    field public static final int TYPE_ALPHA = 303; // 0x12f
-    field public static final int TYPE_CURVE_FIT = 301; // 0x12d
-    field public static final int TYPE_EASING = 317; // 0x13d
-    field public static final int TYPE_ELEVATION = 307; // 0x133
-    field public static final int TYPE_PATH_ROTATE = 316; // 0x13c
-    field public static final int TYPE_PIVOT_TARGET = 318; // 0x13e
-    field public static final int TYPE_PIVOT_X = 313; // 0x139
-    field public static final int TYPE_PIVOT_Y = 314; // 0x13a
-    field public static final int TYPE_PROGRESS = 315; // 0x13b
-    field public static final int TYPE_ROTATION_X = 308; // 0x134
-    field public static final int TYPE_ROTATION_Y = 309; // 0x135
-    field public static final int TYPE_ROTATION_Z = 310; // 0x136
-    field public static final int TYPE_SCALE_X = 311; // 0x137
-    field public static final int TYPE_SCALE_Y = 312; // 0x138
-    field public static final int TYPE_TRANSLATION_X = 304; // 0x130
-    field public static final int TYPE_TRANSLATION_Y = 305; // 0x131
-    field public static final int TYPE_TRANSLATION_Z = 306; // 0x132
-    field public static final int TYPE_VISIBILITY = 302; // 0x12e
-  }
-
-  public static interface TypedValues.Custom {
-    method public static int getId(String!);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "Custom";
-    field public static final String S_BOOLEAN = "boolean";
-    field public static final String S_COLOR = "color";
-    field public static final String S_DIMENSION = "dimension";
-    field public static final String S_FLOAT = "float";
-    field public static final String S_INT = "integer";
-    field public static final String S_REFERENCE = "reference";
-    field public static final String S_STRING = "string";
-    field public static final int TYPE_BOOLEAN = 904; // 0x388
-    field public static final int TYPE_COLOR = 902; // 0x386
-    field public static final int TYPE_DIMENSION = 905; // 0x389
-    field public static final int TYPE_FLOAT = 901; // 0x385
-    field public static final int TYPE_INT = 900; // 0x384
-    field public static final int TYPE_REFERENCE = 906; // 0x38a
-    field public static final int TYPE_STRING = 903; // 0x387
-  }
-
-  public static interface TypedValues.CycleType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyCycle";
-    field public static final String S_ALPHA = "alpha";
-    field public static final String S_CURVE_FIT = "curveFit";
-    field public static final String S_CUSTOM_WAVE_SHAPE = "customWave";
-    field public static final String S_EASING = "easing";
-    field public static final String S_ELEVATION = "elevation";
-    field public static final String S_PATH_ROTATE = "pathRotate";
-    field public static final String S_PIVOT_X = "pivotX";
-    field public static final String S_PIVOT_Y = "pivotY";
-    field public static final String S_PROGRESS = "progress";
-    field public static final String S_ROTATION_X = "rotationX";
-    field public static final String S_ROTATION_Y = "rotationY";
-    field public static final String S_ROTATION_Z = "rotationZ";
-    field public static final String S_SCALE_X = "scaleX";
-    field public static final String S_SCALE_Y = "scaleY";
-    field public static final String S_TRANSLATION_X = "translationX";
-    field public static final String S_TRANSLATION_Y = "translationY";
-    field public static final String S_TRANSLATION_Z = "translationZ";
-    field public static final String S_VISIBILITY = "visibility";
-    field public static final String S_WAVE_OFFSET = "offset";
-    field public static final String S_WAVE_PERIOD = "period";
-    field public static final String S_WAVE_PHASE = "phase";
-    field public static final String S_WAVE_SHAPE = "waveShape";
-    field public static final int TYPE_ALPHA = 403; // 0x193
-    field public static final int TYPE_CURVE_FIT = 401; // 0x191
-    field public static final int TYPE_CUSTOM_WAVE_SHAPE = 422; // 0x1a6
-    field public static final int TYPE_EASING = 420; // 0x1a4
-    field public static final int TYPE_ELEVATION = 307; // 0x133
-    field public static final int TYPE_PATH_ROTATE = 416; // 0x1a0
-    field public static final int TYPE_PIVOT_X = 313; // 0x139
-    field public static final int TYPE_PIVOT_Y = 314; // 0x13a
-    field public static final int TYPE_PROGRESS = 315; // 0x13b
-    field public static final int TYPE_ROTATION_X = 308; // 0x134
-    field public static final int TYPE_ROTATION_Y = 309; // 0x135
-    field public static final int TYPE_ROTATION_Z = 310; // 0x136
-    field public static final int TYPE_SCALE_X = 311; // 0x137
-    field public static final int TYPE_SCALE_Y = 312; // 0x138
-    field public static final int TYPE_TRANSLATION_X = 304; // 0x130
-    field public static final int TYPE_TRANSLATION_Y = 305; // 0x131
-    field public static final int TYPE_TRANSLATION_Z = 306; // 0x132
-    field public static final int TYPE_VISIBILITY = 402; // 0x192
-    field public static final int TYPE_WAVE_OFFSET = 424; // 0x1a8
-    field public static final int TYPE_WAVE_PERIOD = 423; // 0x1a7
-    field public static final int TYPE_WAVE_PHASE = 425; // 0x1a9
-    field public static final int TYPE_WAVE_SHAPE = 421; // 0x1a5
-  }
-
-  public static interface TypedValues.MotionScene {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "MotionScene";
-    field public static final String S_DEFAULT_DURATION = "defaultDuration";
-    field public static final String S_LAYOUT_DURING_TRANSITION = "layoutDuringTransition";
-    field public static final int TYPE_DEFAULT_DURATION = 600; // 0x258
-    field public static final int TYPE_LAYOUT_DURING_TRANSITION = 601; // 0x259
-  }
-
-  public static interface TypedValues.MotionType {
-    method public static int getId(String!);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "Motion";
-    field public static final String S_ANIMATE_CIRCLEANGLE_TO = "AnimateCircleAngleTo";
-    field public static final String S_ANIMATE_RELATIVE_TO = "AnimateRelativeTo";
-    field public static final String S_DRAW_PATH = "DrawPath";
-    field public static final String S_EASING = "TransitionEasing";
-    field public static final String S_PATHMOTION_ARC = "PathMotionArc";
-    field public static final String S_PATH_ROTATE = "PathRotate";
-    field public static final String S_POLAR_RELATIVETO = "PolarRelativeTo";
-    field public static final String S_QUANTIZE_INTERPOLATOR = "QuantizeInterpolator";
-    field public static final String S_QUANTIZE_INTERPOLATOR_ID = "QuantizeInterpolatorID";
-    field public static final String S_QUANTIZE_INTERPOLATOR_TYPE = "QuantizeInterpolatorType";
-    field public static final String S_QUANTIZE_MOTIONSTEPS = "QuantizeMotionSteps";
-    field public static final String S_QUANTIZE_MOTION_PHASE = "QuantizeMotionPhase";
-    field public static final String S_STAGGER = "Stagger";
-    field public static final int TYPE_ANIMATE_CIRCLEANGLE_TO = 606; // 0x25e
-    field public static final int TYPE_ANIMATE_RELATIVE_TO = 605; // 0x25d
-    field public static final int TYPE_DRAW_PATH = 608; // 0x260
-    field public static final int TYPE_EASING = 603; // 0x25b
-    field public static final int TYPE_PATHMOTION_ARC = 607; // 0x25f
-    field public static final int TYPE_PATH_ROTATE = 601; // 0x259
-    field public static final int TYPE_POLAR_RELATIVETO = 609; // 0x261
-    field public static final int TYPE_QUANTIZE_INTERPOLATOR = 604; // 0x25c
-    field public static final int TYPE_QUANTIZE_INTERPOLATOR_ID = 612; // 0x264
-    field public static final int TYPE_QUANTIZE_INTERPOLATOR_TYPE = 611; // 0x263
-    field public static final int TYPE_QUANTIZE_MOTIONSTEPS = 610; // 0x262
-    field public static final int TYPE_QUANTIZE_MOTION_PHASE = 602; // 0x25a
-    field public static final int TYPE_STAGGER = 600; // 0x258
-  }
-
-  public static interface TypedValues.OnSwipe {
-    field public static final String AUTOCOMPLETE_MODE = "autocompletemode";
-    field public static final String![]! AUTOCOMPLETE_MODE_ENUM;
-    field public static final String DRAG_DIRECTION = "dragdirection";
-    field public static final String DRAG_SCALE = "dragscale";
-    field public static final String DRAG_THRESHOLD = "dragthreshold";
-    field public static final String LIMIT_BOUNDS_TO = "limitboundsto";
-    field public static final String MAX_ACCELERATION = "maxacceleration";
-    field public static final String MAX_VELOCITY = "maxvelocity";
-    field public static final String MOVE_WHEN_SCROLLAT_TOP = "movewhenscrollattop";
-    field public static final String NESTED_SCROLL_FLAGS = "nestedscrollflags";
-    field public static final String![]! NESTED_SCROLL_FLAGS_ENUM;
-    field public static final String ON_TOUCH_UP = "ontouchup";
-    field public static final String![]! ON_TOUCH_UP_ENUM;
-    field public static final String ROTATION_CENTER_ID = "rotationcenterid";
-    field public static final String SPRINGS_TOP_THRESHOLD = "springstopthreshold";
-    field public static final String SPRING_BOUNDARY = "springboundary";
-    field public static final String![]! SPRING_BOUNDARY_ENUM;
-    field public static final String SPRING_DAMPING = "springdamping";
-    field public static final String SPRING_MASS = "springmass";
-    field public static final String SPRING_STIFFNESS = "springstiffness";
-    field public static final String TOUCH_ANCHOR_ID = "touchanchorid";
-    field public static final String TOUCH_ANCHOR_SIDE = "touchanchorside";
-    field public static final String TOUCH_REGION_ID = "touchregionid";
-  }
-
-  public static interface TypedValues.PositionType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyPosition";
-    field public static final String S_DRAWPATH = "drawPath";
-    field public static final String S_PERCENT_HEIGHT = "percentHeight";
-    field public static final String S_PERCENT_WIDTH = "percentWidth";
-    field public static final String S_PERCENT_X = "percentX";
-    field public static final String S_PERCENT_Y = "percentY";
-    field public static final String S_SIZE_PERCENT = "sizePercent";
-    field public static final String S_TRANSITION_EASING = "transitionEasing";
-    field public static final int TYPE_CURVE_FIT = 508; // 0x1fc
-    field public static final int TYPE_DRAWPATH = 502; // 0x1f6
-    field public static final int TYPE_PATH_MOTION_ARC = 509; // 0x1fd
-    field public static final int TYPE_PERCENT_HEIGHT = 504; // 0x1f8
-    field public static final int TYPE_PERCENT_WIDTH = 503; // 0x1f7
-    field public static final int TYPE_PERCENT_X = 506; // 0x1fa
-    field public static final int TYPE_PERCENT_Y = 507; // 0x1fb
-    field public static final int TYPE_POSITION_TYPE = 510; // 0x1fe
-    field public static final int TYPE_SIZE_PERCENT = 505; // 0x1f9
-    field public static final int TYPE_TRANSITION_EASING = 501; // 0x1f5
-  }
-
-  public static interface TypedValues.TransitionType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "Transitions";
-    field public static final String S_AUTO_TRANSITION = "autoTransition";
-    field public static final String S_DURATION = "duration";
-    field public static final String S_FROM = "from";
-    field public static final String S_INTERPOLATOR = "motionInterpolator";
-    field public static final String S_PATH_MOTION_ARC = "pathMotionArc";
-    field public static final String S_STAGGERED = "staggered";
-    field public static final String S_TO = "to";
-    field public static final String S_TRANSITION_FLAGS = "transitionFlags";
-    field public static final int TYPE_AUTO_TRANSITION = 704; // 0x2c0
-    field public static final int TYPE_DURATION = 700; // 0x2bc
-    field public static final int TYPE_FROM = 701; // 0x2bd
-    field public static final int TYPE_INTERPOLATOR = 705; // 0x2c1
-    field public static final int TYPE_PATH_MOTION_ARC = 509; // 0x1fd
-    field public static final int TYPE_STAGGERED = 706; // 0x2c2
-    field public static final int TYPE_TO = 702; // 0x2be
-    field public static final int TYPE_TRANSITION_FLAGS = 707; // 0x2c3
-  }
-
-  public static interface TypedValues.TriggerType {
-    method public static int getId(String!);
-    field public static final String CROSS = "CROSS";
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyTrigger";
-    field public static final String NEGATIVE_CROSS = "negativeCross";
-    field public static final String POSITIVE_CROSS = "positiveCross";
-    field public static final String POST_LAYOUT = "postLayout";
-    field public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
-    field public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
-    field public static final String TRIGGER_ID = "triggerID";
-    field public static final String TRIGGER_RECEIVER = "triggerReceiver";
-    field public static final String TRIGGER_SLACK = "triggerSlack";
-    field public static final int TYPE_CROSS = 312; // 0x138
-    field public static final int TYPE_NEGATIVE_CROSS = 310; // 0x136
-    field public static final int TYPE_POSITIVE_CROSS = 309; // 0x135
-    field public static final int TYPE_POST_LAYOUT = 304; // 0x130
-    field public static final int TYPE_TRIGGER_COLLISION_ID = 307; // 0x133
-    field public static final int TYPE_TRIGGER_COLLISION_VIEW = 306; // 0x132
-    field public static final int TYPE_TRIGGER_ID = 308; // 0x134
-    field public static final int TYPE_TRIGGER_RECEIVER = 311; // 0x137
-    field public static final int TYPE_TRIGGER_SLACK = 305; // 0x131
-    field public static final int TYPE_VIEW_TRANSITION_ON_CROSS = 301; // 0x12d
-    field public static final int TYPE_VIEW_TRANSITION_ON_NEGATIVE_CROSS = 303; // 0x12f
-    field public static final int TYPE_VIEW_TRANSITION_ON_POSITIVE_CROSS = 302; // 0x12e
-    field public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
-    field public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
-    field public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
-  }
-
-  public class Utils {
-    ctor public Utils();
-    method public int getInterpolatedColor(float[]!);
-    method public static void log(String!);
-    method public static void log(String!, String!);
-    method public static void logStack(String!, int);
-    method public static void loge(String!, String!);
-    method public static int rgbaTocColor(float, float, float, float);
-    method public static void setDebugHandle(androidx.constraintlayout.core.motion.utils.Utils.DebugHandle!);
-    method public static void socketSend(String!);
-  }
-
-  public static interface Utils.DebugHandle {
-    method public void message(String!);
-  }
-
-  public class VelocityMatrix {
-    ctor public VelocityMatrix();
-    method public void applyTransform(float, float, int, int, float[]!);
-    method public void clear();
-    method public void setRotationVelocity(androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, float);
-    method public void setRotationVelocity(androidx.constraintlayout.core.motion.utils.SplineSet!, float);
-    method public void setScaleVelocity(androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, float);
-    method public void setScaleVelocity(androidx.constraintlayout.core.motion.utils.SplineSet!, androidx.constraintlayout.core.motion.utils.SplineSet!, float);
-    method public void setTranslationVelocity(androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, float);
-    method public void setTranslationVelocity(androidx.constraintlayout.core.motion.utils.SplineSet!, androidx.constraintlayout.core.motion.utils.SplineSet!, float);
-  }
-
-  public class ViewState {
-    ctor public ViewState();
-    method public void getState(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public int height();
-    method public int width();
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public float rotation;
-    field public int top;
-  }
-
-}
-
-package androidx.constraintlayout.core.parser {
-
-  public class CLArray extends androidx.constraintlayout.core.parser.CLContainer {
-    ctor public CLArray(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-  }
-
-  public class CLContainer extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLContainer(char[]!);
-    method public void add(androidx.constraintlayout.core.parser.CLElement!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public void clear();
-    method public androidx.constraintlayout.core.parser.CLContainer clone();
-    method public androidx.constraintlayout.core.parser.CLElement! get(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLElement! get(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLArray! getArray(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLArray! getArray(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLArray! getArrayOrCreate(String!);
-    method public androidx.constraintlayout.core.parser.CLArray! getArrayOrNull(String!);
-    method public boolean getBoolean(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public boolean getBoolean(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public float getFloat(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public float getFloat(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public float getFloatOrNaN(String!);
-    method public int getInt(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public int getInt(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLObject! getObject(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLObject! getObject(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLObject! getObjectOrNull(String!);
-    method public androidx.constraintlayout.core.parser.CLElement! getOrNull(int);
-    method public androidx.constraintlayout.core.parser.CLElement! getOrNull(String!);
-    method public String! getString(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public String! getString(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public String! getStringOrNull(int);
-    method public String! getStringOrNull(String!);
-    method public boolean has(String!);
-    method public java.util.ArrayList<java.lang.String!>! names();
-    method public void put(String!, androidx.constraintlayout.core.parser.CLElement!);
-    method public void putNumber(String!, float);
-    method public void putString(String!, String!);
-    method public void remove(String!);
-    method public int size();
-  }
-
-  public class CLElement implements java.lang.Cloneable {
-    ctor public CLElement(char[]!);
-    method protected void addIndent(StringBuilder!, int);
-    method public androidx.constraintlayout.core.parser.CLElement clone();
-    method public String! content();
-    method public androidx.constraintlayout.core.parser.CLElement! getContainer();
-    method protected String! getDebugName();
-    method public long getEnd();
-    method public float getFloat();
-    method public int getInt();
-    method public int getLine();
-    method public long getStart();
-    method protected String! getStrClass();
-    method public boolean hasContent();
-    method public boolean isDone();
-    method public boolean isStarted();
-    method public boolean notStarted();
-    method public void setContainer(androidx.constraintlayout.core.parser.CLContainer!);
-    method public void setEnd(long);
-    method public void setLine(int);
-    method public void setStart(long);
-    method protected String! toFormattedJSON(int, int);
-    method protected String! toJSON();
-    field protected androidx.constraintlayout.core.parser.CLContainer! mContainer;
-    field protected long mEnd;
-    field protected long mStart;
-    field protected static int sBaseIndent;
-    field protected static int sMaxLine;
-  }
-
-  public class CLKey extends androidx.constraintlayout.core.parser.CLContainer {
-    ctor public CLKey(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(String!, androidx.constraintlayout.core.parser.CLElement!);
-    method public String! getName();
-    method public androidx.constraintlayout.core.parser.CLElement! getValue();
-    method public void set(androidx.constraintlayout.core.parser.CLElement!);
-  }
-
-  public class CLNumber extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLNumber(char[]!);
-    ctor public CLNumber(float);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public boolean isInt();
-    method public void putValue(float);
-  }
-
-  public class CLObject extends androidx.constraintlayout.core.parser.CLContainer implements java.lang.Iterable<androidx.constraintlayout.core.parser.CLKey!> {
-    ctor public CLObject(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLObject! allocate(char[]!);
-    method public androidx.constraintlayout.core.parser.CLObject clone();
-    method public java.util.Iterator<androidx.constraintlayout.core.parser.CLKey!>! iterator();
-    method public String! toFormattedJSON();
-    method public String! toFormattedJSON(int, int);
-    method public String! toJSON();
-  }
-
-  public class CLParser {
-    ctor public CLParser(String!);
-    method public androidx.constraintlayout.core.parser.CLObject! parse() throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static androidx.constraintlayout.core.parser.CLObject! parse(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-  }
-
-  public class CLParsingException extends java.lang.Exception {
-    ctor public CLParsingException(String!, androidx.constraintlayout.core.parser.CLElement!);
-    method public String! reason();
-  }
-
-  public class CLString extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLString(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLString from(String);
-  }
-
-  public class CLToken extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLToken(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public boolean getBoolean() throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLToken.Type! getType();
-    method public boolean isNull() throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public boolean validate(char, long);
-  }
-
-}
-
-package androidx.constraintlayout.core.state {
-
-  public class ConstraintReference implements androidx.constraintlayout.core.state.Reference {
-    ctor public ConstraintReference(androidx.constraintlayout.core.state.State!);
-    method public void addCustomColor(String!, int);
-    method public void addCustomFloat(String!, float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! alpha(float);
-    method public void apply();
-    method public void applyWidgetConstraints();
-    method public androidx.constraintlayout.core.state.ConstraintReference! baseline();
-    method public androidx.constraintlayout.core.state.ConstraintReference! baselineToBaseline(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! baselineToBottom(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! baselineToTop(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! bias(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! bottom();
-    method public androidx.constraintlayout.core.state.ConstraintReference! bottomToBottom(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! bottomToTop(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! centerHorizontally(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! centerVertically(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! circularConstraint(Object!, float, float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! clear();
-    method public androidx.constraintlayout.core.state.ConstraintReference! clearAll();
-    method public androidx.constraintlayout.core.state.ConstraintReference! clearHorizontal();
-    method public androidx.constraintlayout.core.state.ConstraintReference! clearVertical();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! createConstraintWidget();
-    method public androidx.constraintlayout.core.state.ConstraintReference! end();
-    method public androidx.constraintlayout.core.state.ConstraintReference! endToEnd(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! endToStart(Object!);
-    method public float getAlpha();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public androidx.constraintlayout.core.state.helpers.Facade! getFacade();
-    method public androidx.constraintlayout.core.state.Dimension! getHeight();
-    method public int getHorizontalChainStyle();
-    method public float getHorizontalChainWeight();
-    method public Object! getKey();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public String! getTag();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public int getVerticalChainStyle(int);
-    method public float getVerticalChainWeight();
-    method public Object! getView();
-    method public androidx.constraintlayout.core.state.Dimension! getWidth();
-    method public androidx.constraintlayout.core.state.ConstraintReference! height(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! horizontalBias(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! left();
-    method public androidx.constraintlayout.core.state.ConstraintReference! leftToLeft(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! leftToRight(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! margin(int);
-    method public androidx.constraintlayout.core.state.ConstraintReference! margin(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! marginGone(int);
-    method public androidx.constraintlayout.core.state.ConstraintReference! marginGone(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! pivotX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! pivotY(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! right();
-    method public androidx.constraintlayout.core.state.ConstraintReference! rightToLeft(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rightToRight(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rotationX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rotationY(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rotationZ(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! scaleX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! scaleY(float);
-    method public void setConstraintWidget(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setFacade(androidx.constraintlayout.core.state.helpers.Facade!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! setHeight(androidx.constraintlayout.core.state.Dimension!);
-    method public void setHorizontalChainStyle(int);
-    method public void setHorizontalChainWeight(float);
-    method public void setKey(Object!);
-    method public void setTag(String!);
-    method public void setVerticalChainStyle(int);
-    method public void setVerticalChainWeight(float);
-    method public void setView(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! setWidth(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! start();
-    method public androidx.constraintlayout.core.state.ConstraintReference! startToEnd(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! startToStart(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! top();
-    method public androidx.constraintlayout.core.state.ConstraintReference! topToBottom(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! topToTop(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! translationX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! translationY(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! translationZ(float);
-    method public void validate() throws java.lang.Exception;
-    method public androidx.constraintlayout.core.state.ConstraintReference! verticalBias(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! visibility(int);
-    method public androidx.constraintlayout.core.state.ConstraintReference! width(androidx.constraintlayout.core.state.Dimension!);
-    field protected Object! mBottomToBottom;
-    field protected Object! mBottomToTop;
-    field protected Object! mEndToEnd;
-    field protected Object! mEndToStart;
-    field protected float mHorizontalBias;
-    field protected Object! mLeftToLeft;
-    field protected Object! mLeftToRight;
-    field protected int mMarginBottom;
-    field protected int mMarginBottomGone;
-    field protected int mMarginEnd;
-    field protected int mMarginEndGone;
-    field protected int mMarginLeft;
-    field protected int mMarginLeftGone;
-    field protected int mMarginRight;
-    field protected int mMarginRightGone;
-    field protected int mMarginStart;
-    field protected int mMarginStartGone;
-    field protected int mMarginTop;
-    field protected int mMarginTopGone;
-    field protected Object! mRightToLeft;
-    field protected Object! mRightToRight;
-    field protected Object! mStartToEnd;
-    field protected Object! mStartToStart;
-    field protected Object! mTopToBottom;
-    field protected Object! mTopToTop;
-    field protected float mVerticalBias;
-  }
-
-  public static interface ConstraintReference.ConstraintReferenceFactory {
-    method public androidx.constraintlayout.core.state.ConstraintReference! create(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class ConstraintSetParser {
-    ctor public ConstraintSetParser();
-    method public static void parseDesignElementsJSON(String!, java.util.ArrayList<androidx.constraintlayout.core.state.ConstraintSetParser.DesignElement!>!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static void parseJSON(String!, androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.state.ConstraintSetParser.LayoutVariables!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static void parseJSON(String!, androidx.constraintlayout.core.state.Transition!, int);
-    method public static void parseMotionSceneJSON(androidx.constraintlayout.core.state.CoreMotionScene!, String!);
-  }
-
-  public static class ConstraintSetParser.DesignElement {
-    method public String! getId();
-    method public java.util.HashMap<java.lang.String!,java.lang.String!>! getParams();
-    method public String! getType();
-  }
-
-  public static class ConstraintSetParser.LayoutVariables {
-    ctor public ConstraintSetParser.LayoutVariables();
-    method public void putOverride(String!, float);
-  }
-
-  public enum ConstraintSetParser.MotionLayoutDebugFlags {
-    enum_constant public static final androidx.constraintlayout.core.state.ConstraintSetParser.MotionLayoutDebugFlags NONE;
-    enum_constant public static final androidx.constraintlayout.core.state.ConstraintSetParser.MotionLayoutDebugFlags SHOW_ALL;
-    enum_constant public static final androidx.constraintlayout.core.state.ConstraintSetParser.MotionLayoutDebugFlags UNKNOWN;
-  }
-
-  public interface CoreMotionScene {
-    method public String! getConstraintSet(int);
-    method public String! getConstraintSet(String!);
-    method public String! getTransition(String!);
-    method public void setConstraintSetContent(String!, String!);
-    method public void setDebugName(String!);
-    method public void setTransitionContent(String!, String!);
-  }
-
-  public interface CorePixelDp {
-    method public float toPixels(float);
-  }
-
-  public class Dimension {
-    method public void apply(androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-    method public static androidx.constraintlayout.core.state.Dimension! createFixed(int);
-    method public static androidx.constraintlayout.core.state.Dimension! createFixed(Object!);
-    method public static androidx.constraintlayout.core.state.Dimension! createParent();
-    method public static androidx.constraintlayout.core.state.Dimension! createPercent(Object!, float);
-    method public static androidx.constraintlayout.core.state.Dimension! createRatio(String!);
-    method public static androidx.constraintlayout.core.state.Dimension! createSpread();
-    method public static androidx.constraintlayout.core.state.Dimension! createSuggested(int);
-    method public static androidx.constraintlayout.core.state.Dimension! createSuggested(Object!);
-    method public static androidx.constraintlayout.core.state.Dimension! createWrap();
-    method public boolean equalsFixedValue(int);
-    method public androidx.constraintlayout.core.state.Dimension! fixed(int);
-    method public androidx.constraintlayout.core.state.Dimension! fixed(Object!);
-    method public androidx.constraintlayout.core.state.Dimension! max(int);
-    method public androidx.constraintlayout.core.state.Dimension! max(Object!);
-    method public androidx.constraintlayout.core.state.Dimension! min(int);
-    method public androidx.constraintlayout.core.state.Dimension! min(Object!);
-    method public androidx.constraintlayout.core.state.Dimension! percent(Object!, float);
-    method public androidx.constraintlayout.core.state.Dimension! ratio(String!);
-    method public androidx.constraintlayout.core.state.Dimension! suggested(int);
-    method public androidx.constraintlayout.core.state.Dimension! suggested(Object!);
-    field public static final Object! FIXED_DIMENSION;
-    field public static final Object! PARENT_DIMENSION;
-    field public static final Object! PERCENT_DIMENSION;
-    field public static final Object! RATIO_DIMENSION;
-    field public static final Object! SPREAD_DIMENSION;
-    field public static final Object! WRAP_DIMENSION;
-  }
-
-  public enum Dimension.Type {
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type FIXED;
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type MATCH_CONSTRAINT;
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type MATCH_PARENT;
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type WRAP;
-  }
-
-  public class HelperReference extends androidx.constraintlayout.core.state.ConstraintReference implements androidx.constraintlayout.core.state.helpers.Facade {
-    ctor public HelperReference(androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.state.State.Helper!);
-    method public androidx.constraintlayout.core.state.HelperReference! add(java.lang.Object!...!);
-    method public void applyBase();
-    method public androidx.constraintlayout.core.widgets.HelperWidget! getHelperWidget();
-    method public androidx.constraintlayout.core.state.State.Helper! getType();
-    method public void setHelperWidget(androidx.constraintlayout.core.widgets.HelperWidget!);
-    field protected final androidx.constraintlayout.core.state.State! mHelperState;
-    field protected java.util.ArrayList<java.lang.Object!>! mReferences;
-  }
-
-  public interface Interpolator {
-    method public float getInterpolation(float);
-  }
-
-  public interface Reference {
-    method public void apply();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public androidx.constraintlayout.core.state.helpers.Facade! getFacade();
-    method public Object! getKey();
-    method public void setConstraintWidget(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setKey(Object!);
-  }
-
-  public class Registry {
-    ctor public Registry();
-    method public String! currentContent(String!);
-    method public String! currentLayoutInformation(String!);
-    method public static androidx.constraintlayout.core.state.Registry! getInstance();
-    method public long getLastModified(String!);
-    method public java.util.Set<java.lang.String!>! getLayoutList();
-    method public void register(String!, androidx.constraintlayout.core.state.RegistryCallback!);
-    method public void setDrawDebug(String!, int);
-    method public void setLayoutInformationMode(String!, int);
-    method public void unregister(String!, androidx.constraintlayout.core.state.RegistryCallback!);
-    method public void updateContent(String!, String!);
-    method public void updateDimensions(String!, int, int);
-    method public void updateProgress(String!, float);
-  }
-
-  public interface RegistryCallback {
-    method public String! currentLayoutInformation();
-    method public String! currentMotionScene();
-    method public long getLastModified();
-    method public void onDimensions(int, int);
-    method public void onNewMotionScene(String!);
-    method public void onProgress(float);
-    method public void setDrawDebug(int);
-    method public void setLayoutInformationMode(int);
-  }
-
-  public class State {
-    ctor public State();
-    method public void apply(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    method public androidx.constraintlayout.core.state.helpers.BarrierReference! barrier(Object!, androidx.constraintlayout.core.state.State.Direction!);
-    method public void baselineNeededFor(Object!);
-    method public androidx.constraintlayout.core.state.helpers.AlignHorizontallyReference! centerHorizontally(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.AlignVerticallyReference! centerVertically(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! constraints(Object!);
-    method public int convertDimension(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! createConstraintReference(Object!);
-    method public void directMapping();
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getFlow(Object!, boolean);
-    method public androidx.constraintlayout.core.state.helpers.GridReference getGrid(Object, String);
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getHorizontalFlow();
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getHorizontalFlow(java.lang.Object!...!);
-    method public java.util.ArrayList<java.lang.String!>! getIdsForTag(String!);
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getVerticalFlow();
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getVerticalFlow(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! guideline(Object!, int);
-    method public androidx.constraintlayout.core.state.State! height(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.HelperReference! helper(Object!, androidx.constraintlayout.core.state.State.Helper!);
-    method public androidx.constraintlayout.core.state.helpers.HorizontalChainReference! horizontalChain();
-    method public androidx.constraintlayout.core.state.helpers.HorizontalChainReference! horizontalChain(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! horizontalGuideline(Object!);
-    method public boolean isBaselineNeeded(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method @Deprecated public boolean isLtr();
-    method public boolean isRtl();
-    method public void map(Object!, Object!);
-    method public void reset();
-    method public boolean sameFixedHeight(int);
-    method public boolean sameFixedWidth(int);
-    method public void setDpToPixel(androidx.constraintlayout.core.state.CorePixelDp!);
-    method public androidx.constraintlayout.core.state.State! setHeight(androidx.constraintlayout.core.state.Dimension!);
-    method @Deprecated public void setLtr(boolean);
-    method public void setRtl(boolean);
-    method public void setTag(String!, String!);
-    method public androidx.constraintlayout.core.state.State! setWidth(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.helpers.VerticalChainReference! verticalChain();
-    method public androidx.constraintlayout.core.state.helpers.VerticalChainReference! verticalChain(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! verticalGuideline(Object!);
-    method public androidx.constraintlayout.core.state.State! width(androidx.constraintlayout.core.state.Dimension!);
-    field public static final Integer PARENT;
-    field protected java.util.HashMap<java.lang.Object!,androidx.constraintlayout.core.state.HelperReference!>! mHelperReferences;
-    field public final androidx.constraintlayout.core.state.ConstraintReference! mParent;
-    field protected java.util.HashMap<java.lang.Object!,androidx.constraintlayout.core.state.Reference!>! mReferences;
-  }
-
-  public enum State.Chain {
-    method public static androidx.constraintlayout.core.state.State.Chain! getChainByString(String!);
-    method public static int getValueByString(String!);
-    enum_constant public static final androidx.constraintlayout.core.state.State.Chain PACKED;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Chain SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Chain SPREAD_INSIDE;
-    field public static java.util.Map<java.lang.String!,androidx.constraintlayout.core.state.State.Chain!>! chainMap;
-    field public static java.util.Map<java.lang.String!,java.lang.Integer!>! valueMap;
-  }
-
-  public enum State.Constraint {
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BASELINE_TO_BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BASELINE_TO_BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BASELINE_TO_TOP;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BOTTOM_TO_BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BOTTOM_TO_BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BOTTOM_TO_TOP;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint CENTER_HORIZONTALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint CENTER_VERTICALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint CIRCULAR_CONSTRAINT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint END_TO_END;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint END_TO_START;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint LEFT_TO_LEFT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint LEFT_TO_RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint RIGHT_TO_LEFT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint RIGHT_TO_RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint START_TO_END;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint START_TO_START;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint TOP_TO_BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint TOP_TO_BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint TOP_TO_TOP;
-  }
-
-  public enum State.Direction {
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction END;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction LEFT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction START;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction TOP;
-  }
-
-  public enum State.Helper {
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper ALIGN_HORIZONTALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper ALIGN_VERTICALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper BARRIER;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper COLUMN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper FLOW;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper GRID;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper HORIZONTAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper HORIZONTAL_FLOW;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper LAYER;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper ROW;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper VERTICAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper VERTICAL_FLOW;
-  }
-
-  public enum State.Wrap {
-    method public static androidx.constraintlayout.core.state.State.Wrap! getChainByString(String!);
-    method public static int getValueByString(String!);
-    enum_constant public static final androidx.constraintlayout.core.state.State.Wrap ALIGNED;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Wrap CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Wrap NONE;
-    field public static java.util.Map<java.lang.String!,java.lang.Integer!>! valueMap;
-    field public static java.util.Map<java.lang.String!,androidx.constraintlayout.core.state.State.Wrap!>! wrapMap;
-  }
-
-  public class Transition implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public Transition(androidx.constraintlayout.core.state.CorePixelDp);
-    method public void addCustomColor(int, String!, String!, int);
-    method public void addCustomFloat(int, String!, String!, float);
-    method public void addKeyAttribute(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void addKeyAttribute(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!, androidx.constraintlayout.core.motion.CustomVariable![]!);
-    method public void addKeyCycle(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void addKeyPosition(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void addKeyPosition(String!, int, int, float, float);
-    method public void calcStagger();
-    method public void clear();
-    method public boolean contains(String!);
-    method public float dragToProgress(float, int, int, float, float);
-    method public void fillKeyPositions(androidx.constraintlayout.core.state.WidgetFrame!, float[]!, float[]!, float[]!);
-    method public androidx.constraintlayout.core.state.Transition.KeyPosition! findNextPosition(String!, int);
-    method public androidx.constraintlayout.core.state.Transition.KeyPosition! findPreviousPosition(String!, int);
-    method public int getAutoTransition();
-    method public androidx.constraintlayout.core.state.WidgetFrame! getEnd(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getEnd(String!);
-    method public int getId(String!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getInterpolated(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getInterpolated(String!);
-    method public int getInterpolatedHeight();
-    method public int getInterpolatedWidth();
-    method public androidx.constraintlayout.core.state.Interpolator! getInterpolator();
-    method public static androidx.constraintlayout.core.state.Interpolator! getInterpolator(int, String!);
-    method public int getKeyFrames(String!, float[]!, int[]!, int[]!);
-    method public androidx.constraintlayout.core.motion.Motion! getMotion(String!);
-    method public int getNumberKeyPositions(androidx.constraintlayout.core.state.WidgetFrame!);
-    method public float[]! getPath(String!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getStart(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getStart(String!);
-    method public float getTouchUpProgress(long);
-    method public androidx.constraintlayout.core.state.Transition.WidgetState! getWidgetState(String!, androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-    method public boolean hasOnSwipe();
-    method public boolean hasPositionKeyframes();
-    method public void interpolate(int, int, float);
-    method public boolean isEmpty();
-    method public boolean isTouchNotDone(float);
-    method public void setTouchUp(float, long, float, float);
-    method public void setTransitionProperties(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public void updateFrom(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int);
-    field public static final int END = 1; // 0x1
-    field public static final int INTERPOLATED = 2; // 0x2
-    field public static final int START = 0; // 0x0
-  }
-
-  public static class Transition.WidgetState {
-    ctor public Transition.WidgetState();
-    method public androidx.constraintlayout.core.state.WidgetFrame! getFrame(int);
-    method public void interpolate(int, int, float, androidx.constraintlayout.core.state.Transition!);
-    method public void setKeyAttribute(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void setKeyAttribute(androidx.constraintlayout.core.motion.utils.TypedBundle!, androidx.constraintlayout.core.motion.CustomVariable![]!);
-    method public void setKeyCycle(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void setKeyPosition(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void setPathRelative(androidx.constraintlayout.core.state.Transition.WidgetState!);
-    method public void update(androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-  }
-
-  public class TransitionParser {
-    ctor public TransitionParser();
-    method @Deprecated public static void parse(androidx.constraintlayout.core.parser.CLObject!, androidx.constraintlayout.core.state.Transition!, androidx.constraintlayout.core.state.CorePixelDp!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static void parseKeyFrames(androidx.constraintlayout.core.parser.CLObject!, androidx.constraintlayout.core.state.Transition!) throws androidx.constraintlayout.core.parser.CLParsingException;
-  }
-
-  public class WidgetFrame {
-    ctor public WidgetFrame();
-    ctor public WidgetFrame(androidx.constraintlayout.core.state.WidgetFrame!);
-    ctor public WidgetFrame(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void addCustomColor(String!, int);
-    method public void addCustomFloat(String!, float);
-    method public float centerX();
-    method public float centerY();
-    method public boolean containsCustom(String);
-    method public androidx.constraintlayout.core.motion.CustomVariable! getCustomAttribute(String!);
-    method public java.util.Set<java.lang.String!>! getCustomAttributeNames();
-    method public int getCustomColor(String!);
-    method public float getCustomFloat(String!);
-    method public String! getId();
-    method public androidx.constraintlayout.core.motion.utils.TypedBundle! getMotionProperties();
-    method public int height();
-    method public static void interpolate(int, int, androidx.constraintlayout.core.state.WidgetFrame!, androidx.constraintlayout.core.state.WidgetFrame!, androidx.constraintlayout.core.state.WidgetFrame!, androidx.constraintlayout.core.state.Transition!, float);
-    method public boolean isDefaultTransform();
-    method public StringBuilder! serialize(StringBuilder!);
-    method public StringBuilder! serialize(StringBuilder!, boolean);
-    method public void setCustomAttribute(String!, int, boolean);
-    method public void setCustomAttribute(String!, int, float);
-    method public void setCustomAttribute(String!, int, int);
-    method public void setCustomAttribute(String!, int, String!);
-    method public void setCustomValue(androidx.constraintlayout.core.motion.CustomAttribute!, float[]!);
-    method public boolean setValue(String!, androidx.constraintlayout.core.parser.CLElement!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.state.WidgetFrame! update();
-    method public androidx.constraintlayout.core.state.WidgetFrame! update(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void updateAttributes(androidx.constraintlayout.core.state.WidgetFrame!);
-    method public int width();
-    field public float alpha;
-    field public int bottom;
-    field public float interpolatedPos;
-    field public int left;
-    field public String! name;
-    field public static float phone_orientation;
-    field public float pivotX;
-    field public float pivotY;
-    field public int right;
-    field public float rotationX;
-    field public float rotationY;
-    field public float rotationZ;
-    field public float scaleX;
-    field public float scaleY;
-    field public int top;
-    field public float translationX;
-    field public float translationY;
-    field public float translationZ;
-    field public int visibility;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget! widget;
-  }
-
-}
-
-package androidx.constraintlayout.core.state.helpers {
-
-  public class AlignHorizontallyReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public AlignHorizontallyReference(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class AlignVerticallyReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public AlignVerticallyReference(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class BarrierReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public BarrierReference(androidx.constraintlayout.core.state.State!);
-    method public void setBarrierDirection(androidx.constraintlayout.core.state.State.Direction!);
-  }
-
-  public class ChainReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public ChainReference(androidx.constraintlayout.core.state.State, androidx.constraintlayout.core.state.State.Helper);
-    method public void addChainElement(String, float, float, float);
-    method public androidx.constraintlayout.core.state.helpers.ChainReference bias(float);
-    method public float getBias();
-    method protected float getPostMargin(String);
-    method protected float getPreMargin(String);
-    method public androidx.constraintlayout.core.state.State.Chain getStyle();
-    method protected float getWeight(String);
-    method public androidx.constraintlayout.core.state.helpers.ChainReference style(androidx.constraintlayout.core.state.State.Chain);
-    field protected float mBias;
-    field @Deprecated protected java.util.HashMap<java.lang.String!,java.lang.Float!> mMapPostMargin;
-    field @Deprecated protected java.util.HashMap<java.lang.String!,java.lang.Float!> mMapPreMargin;
-    field @Deprecated protected java.util.HashMap<java.lang.String!,java.lang.Float!> mMapWeights;
-    field protected androidx.constraintlayout.core.state.State.Chain mStyle;
-  }
-
-  public interface Facade {
-    method public void apply();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-  }
-
-  public class FlowReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public FlowReference(androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.state.State.Helper!);
-    method public void addFlowElement(String!, float, float, float);
-    method public float getFirstHorizontalBias();
-    method public int getFirstHorizontalStyle();
-    method public float getFirstVerticalBias();
-    method public int getFirstVerticalStyle();
-    method public int getHorizontalAlign();
-    method public float getHorizontalBias();
-    method public int getHorizontalGap();
-    method public int getHorizontalStyle();
-    method public float getLastHorizontalBias();
-    method public int getLastHorizontalStyle();
-    method public float getLastVerticalBias();
-    method public int getLastVerticalStyle();
-    method public int getMaxElementsWrap();
-    method public int getOrientation();
-    method public int getPaddingBottom();
-    method public int getPaddingLeft();
-    method public int getPaddingRight();
-    method public int getPaddingTop();
-    method protected float getPostMargin(String!);
-    method protected float getPreMargin(String!);
-    method public int getVerticalAlign();
-    method public float getVerticalBias();
-    method public int getVerticalGap();
-    method public int getVerticalStyle();
-    method protected float getWeight(String!);
-    method public int getWrapMode();
-    method public void setFirstHorizontalBias(float);
-    method public void setFirstHorizontalStyle(int);
-    method public void setFirstVerticalBias(float);
-    method public void setFirstVerticalStyle(int);
-    method public void setHorizontalAlign(int);
-    method public void setHorizontalGap(int);
-    method public void setHorizontalStyle(int);
-    method public void setLastHorizontalBias(float);
-    method public void setLastHorizontalStyle(int);
-    method public void setLastVerticalBias(float);
-    method public void setLastVerticalStyle(int);
-    method public void setMaxElementsWrap(int);
-    method public void setOrientation(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingLeft(int);
-    method public void setPaddingRight(int);
-    method public void setPaddingTop(int);
-    method public void setVerticalAlign(int);
-    method public void setVerticalGap(int);
-    method public void setVerticalStyle(int);
-    method public void setWrapMode(int);
-    field protected float mFirstHorizontalBias;
-    field protected int mFirstHorizontalStyle;
-    field protected float mFirstVerticalBias;
-    field protected int mFirstVerticalStyle;
-    field protected androidx.constraintlayout.core.widgets.Flow! mFlow;
-    field protected int mHorizontalAlign;
-    field protected int mHorizontalGap;
-    field protected int mHorizontalStyle;
-    field protected float mLastHorizontalBias;
-    field protected int mLastHorizontalStyle;
-    field protected float mLastVerticalBias;
-    field protected int mLastVerticalStyle;
-    field protected java.util.HashMap<java.lang.String!,java.lang.Float!>! mMapPostMargin;
-    field protected java.util.HashMap<java.lang.String!,java.lang.Float!>! mMapPreMargin;
-    field protected java.util.HashMap<java.lang.String!,java.lang.Float!>! mMapWeights;
-    field protected int mMaxElementsWrap;
-    field protected int mOrientation;
-    field protected int mPaddingBottom;
-    field protected int mPaddingLeft;
-    field protected int mPaddingRight;
-    field protected int mPaddingTop;
-    field protected int mVerticalAlign;
-    field protected int mVerticalGap;
-    field protected int mVerticalStyle;
-    field protected int mWrapMode;
-  }
-
-  public class GridReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public GridReference(androidx.constraintlayout.core.state.State, androidx.constraintlayout.core.state.State.Helper);
-    method public String? getColumnWeights();
-    method public int getColumnsSet();
-    method public int getFlags();
-    method public float getHorizontalGaps();
-    method public int getOrientation();
-    method public int getPaddingBottom();
-    method public int getPaddingEnd();
-    method public int getPaddingStart();
-    method public int getPaddingTop();
-    method public String? getRowWeights();
-    method public int getRowsSet();
-    method public String? getSkips();
-    method public String? getSpans();
-    method public float getVerticalGaps();
-    method public void setColumnWeights(String);
-    method public void setColumnsSet(int);
-    method public void setFlags(int);
-    method public void setFlags(String);
-    method public void setHorizontalGaps(float);
-    method public void setOrientation(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingEnd(int);
-    method public void setPaddingStart(int);
-    method public void setPaddingTop(int);
-    method public void setRowWeights(String);
-    method public void setRowsSet(int);
-    method public void setSkips(String);
-    method public void setSpans(String);
-    method public void setVerticalGaps(float);
-  }
-
-  public class GuidelineReference implements androidx.constraintlayout.core.state.helpers.Facade androidx.constraintlayout.core.state.Reference {
-    ctor public GuidelineReference(androidx.constraintlayout.core.state.State!);
-    method public void apply();
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! end(Object!);
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public androidx.constraintlayout.core.state.helpers.Facade! getFacade();
-    method public Object! getKey();
-    method public int getOrientation();
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! percent(float);
-    method public void setConstraintWidget(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setKey(Object!);
-    method public void setOrientation(int);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! start(Object!);
-  }
-
-  public class HorizontalChainReference extends androidx.constraintlayout.core.state.helpers.ChainReference {
-    ctor public HorizontalChainReference(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class VerticalChainReference extends androidx.constraintlayout.core.state.helpers.ChainReference {
-    ctor public VerticalChainReference(androidx.constraintlayout.core.state.State!);
-  }
-
-}
-
-package androidx.constraintlayout.core.utils {
-
-  public class GridCore extends androidx.constraintlayout.core.widgets.VirtualLayout {
-    ctor public GridCore();
-    ctor public GridCore(int, int);
-    method public String? getColumnWeights();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidgetContainer? getContainer();
-    method public int getFlags();
-    method public float getHorizontalGaps();
-    method public int getOrientation();
-    method public String? getRowWeights();
-    method public float getVerticalGaps();
-    method public void setColumnWeights(String);
-    method public void setColumns(int);
-    method public void setContainer(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer);
-    method public void setFlags(int);
-    method public void setHorizontalGaps(float);
-    method public void setOrientation(int);
-    method public void setRowWeights(String);
-    method public void setRows(int);
-    method public void setSkips(String);
-    method public void setSpans(CharSequence);
-    method public void setVerticalGaps(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SPANS_RESPECT_WIDGET_ORDER = 2; // 0x2
-    field public static final int SUB_GRID_BY_COL_ROW = 1; // 0x1
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public class GridEngine {
-    ctor public GridEngine();
-    ctor public GridEngine(int, int);
-    ctor public GridEngine(int, int, int);
-    method public int bottomOfWidget(int);
-    method public int leftOfWidget(int);
-    method public int rightOfWidget(int);
-    method public void setColumns(int);
-    method public void setNumWidgets(int);
-    method public void setOrientation(int);
-    method public void setRows(int);
-    method public void setSkips(String!);
-    method public void setSpans(CharSequence!);
-    method public void setup();
-    method public int topOfWidget(int);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-}
-
-package androidx.constraintlayout.core.widgets {
-
-  public class Barrier extends androidx.constraintlayout.core.widgets.HelperWidget {
-    ctor public Barrier();
-    ctor public Barrier(String!);
-    method public boolean allSolved();
-    method @Deprecated public boolean allowsGoneWidget();
-    method public boolean getAllowsGoneWidget();
-    method public int getBarrierType();
-    method public int getMargin();
-    method public int getOrientation();
-    method protected void markWidgets();
-    method public void setAllowsGoneWidget(boolean);
-    method public void setBarrierType(int);
-    method public void setMargin(int);
-    field public static final int BOTTOM = 3; // 0x3
-    field public static final int LEFT = 0; // 0x0
-    field public static final int RIGHT = 1; // 0x1
-    field public static final int TOP = 2; // 0x2
-  }
-
-  public class Chain {
-    ctor public Chain();
-    method public static void applyChainConstraints(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.LinearSystem!, java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>!, int);
-    field public static final boolean USE_CHAIN_OPTIMIZATION = false;
-  }
-
-  public class ChainHead {
-    ctor public ChainHead(androidx.constraintlayout.core.widgets.ConstraintWidget!, int, boolean);
-    method public void define();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getFirst();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getFirstMatchConstraintWidget();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getFirstVisibleWidget();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getHead();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getLast();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getLastMatchConstraintWidget();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getLastVisibleWidget();
-    method public float getTotalWeight();
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mFirst;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mFirstMatchConstraintWidget;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mFirstVisibleWidget;
-    field protected boolean mHasComplexMatchWeights;
-    field protected boolean mHasDefinedWeights;
-    field protected boolean mHasRatio;
-    field protected boolean mHasUndefinedWeights;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mHead;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mLast;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mLastMatchConstraintWidget;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mLastVisibleWidget;
-    field protected float mTotalWeight;
-    field protected java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>! mWeightedMatchConstraintsWidgets;
-    field protected int mWidgetsCount;
-    field protected int mWidgetsMatchCount;
-  }
-
-  public class ConstraintAnchor {
-    ctor public ConstraintAnchor(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!);
-    method public boolean connect(androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method public boolean connect(androidx.constraintlayout.core.widgets.ConstraintAnchor!, int, int, boolean);
-    method public void copyFrom(androidx.constraintlayout.core.widgets.ConstraintAnchor!, java.util.HashMap<androidx.constraintlayout.core.widgets.ConstraintWidget!,androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void findDependents(int, java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public java.util.HashSet<androidx.constraintlayout.core.widgets.ConstraintAnchor!>! getDependents();
-    method public int getFinalValue();
-    method public int getMargin();
-    method public final androidx.constraintlayout.core.widgets.ConstraintAnchor! getOpposite();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getOwner();
-    method public androidx.constraintlayout.core.SolverVariable! getSolverVariable();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor! getTarget();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor.Type! getType();
-    method public boolean hasCenteredDependents();
-    method public boolean hasDependents();
-    method public boolean hasFinalValue();
-    method public boolean isConnected();
-    method public boolean isConnectionAllowed(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public boolean isConnectionAllowed(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public boolean isSideAnchor();
-    method public boolean isSimilarDimensionConnection(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public boolean isValidConnection(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public boolean isVerticalAnchor();
-    method public void reset();
-    method public void resetFinalResolution();
-    method public void resetSolverVariable(androidx.constraintlayout.core.Cache!);
-    method public void setFinalValue(int);
-    method public void setGoneMargin(int);
-    method public void setMargin(int);
-    field public int mMargin;
-    field public final androidx.constraintlayout.core.widgets.ConstraintWidget! mOwner;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mTarget;
-    field public final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type! mType;
-  }
-
-  public enum ConstraintAnchor.Type {
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type CENTER;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type CENTER_X;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type CENTER_Y;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type LEFT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type NONE;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type TOP;
-  }
-
-  public class ConstraintWidget {
-    ctor public ConstraintWidget();
-    ctor public ConstraintWidget(int, int);
-    ctor public ConstraintWidget(int, int, int, int);
-    ctor public ConstraintWidget(String!);
-    ctor public ConstraintWidget(String!, int, int);
-    ctor public ConstraintWidget(String!, int, int, int, int);
-    method public void addChildrenToSolverByDependency(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.LinearSystem!, java.util.HashSet<androidx.constraintlayout.core.widgets.ConstraintWidget!>!, int, boolean);
-    method public void addToSolver(androidx.constraintlayout.core.LinearSystem!, boolean);
-    method public boolean allowedInBarrier();
-    method public void connect(androidx.constraintlayout.core.widgets.ConstraintAnchor!, androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method public void connect(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!);
-    method public void connect(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, int);
-    method public void connectCircularConstraint(androidx.constraintlayout.core.widgets.ConstraintWidget!, float, int);
-    method public void copy(androidx.constraintlayout.core.widgets.ConstraintWidget!, java.util.HashMap<androidx.constraintlayout.core.widgets.ConstraintWidget!,androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void createObjectVariables(androidx.constraintlayout.core.LinearSystem!);
-    method public void ensureMeasureRequested();
-    method public void ensureWidgetRuns();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor! getAnchor(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!);
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintAnchor!>! getAnchors();
-    method public int getBaselineDistance();
-    method public float getBiasPercent(int);
-    method public int getBottom();
-    method public Object! getCompanionWidget();
-    method public int getContainerItemSkip();
-    method public String! getDebugName();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! getDimensionBehaviour(int);
-    method public float getDimensionRatio();
-    method public int getDimensionRatioSide();
-    method public boolean getHasBaseline();
-    method public int getHeight();
-    method public float getHorizontalBiasPercent();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getHorizontalChainControlWidget();
-    method public int getHorizontalChainStyle();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! getHorizontalDimensionBehaviour();
-    method public int getHorizontalMargin();
-    method public int getLastHorizontalMeasureSpec();
-    method public int getLastVerticalMeasureSpec();
-    method public int getLeft();
-    method public int getLength(int);
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public int getMinHeight();
-    method public int getMinWidth();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getNextChainMember(int);
-    method public int getOptimizerWrapHeight();
-    method public int getOptimizerWrapWidth();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getParent();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getPreviousChainMember(int);
-    method public int getRight();
-    method protected int getRootX();
-    method protected int getRootY();
-    method public androidx.constraintlayout.core.widgets.analyzer.WidgetRun! getRun(int);
-    method public void getSceneString(StringBuilder!);
-    method public int getTop();
-    method public String! getType();
-    method public float getVerticalBiasPercent();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getVerticalChainControlWidget();
-    method public int getVerticalChainStyle();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! getVerticalDimensionBehaviour();
-    method public int getVerticalMargin();
-    method public int getVisibility();
-    method public int getWidth();
-    method public int getWrapBehaviorInParent();
-    method public int getX();
-    method public int getY();
-    method public boolean hasBaseline();
-    method public boolean hasDanglingDimension(int);
-    method public boolean hasDependencies();
-    method public boolean hasDimensionOverride();
-    method public boolean hasResolvedTargets(int, int);
-    method public void immediateConnect(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, int, int);
-    method public boolean isAnimated();
-    method public boolean isHeightWrapContent();
-    method public boolean isHorizontalSolvingPassDone();
-    method public boolean isInBarrier(int);
-    method public boolean isInHorizontalChain();
-    method public boolean isInPlaceholder();
-    method public boolean isInVerticalChain();
-    method public boolean isInVirtualLayout();
-    method public boolean isMeasureRequested();
-    method public boolean isResolvedHorizontally();
-    method public boolean isResolvedVertically();
-    method public boolean isRoot();
-    method public boolean isSpreadHeight();
-    method public boolean isSpreadWidth();
-    method public boolean isVerticalSolvingPassDone();
-    method public boolean isWidthWrapContent();
-    method public void markHorizontalSolvingPassDone();
-    method public void markVerticalSolvingPassDone();
-    method public boolean oppositeDimensionDependsOn(int);
-    method public boolean oppositeDimensionsTied();
-    method public void reset();
-    method public void resetAllConstraints();
-    method public void resetAnchor(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public void resetAnchors();
-    method public void resetFinalResolution();
-    method public void resetSolverVariables(androidx.constraintlayout.core.Cache!);
-    method public void resetSolvingPassFlag();
-    method public StringBuilder! serialize(StringBuilder!);
-    method public void setAnimated(boolean);
-    method public void setBaselineDistance(int);
-    method public void setCompanionWidget(Object!);
-    method public void setContainerItemSkip(int);
-    method public void setDebugName(String!);
-    method public void setDebugSolverName(androidx.constraintlayout.core.LinearSystem!, String!);
-    method public void setDimension(int, int);
-    method public void setDimensionRatio(float, int);
-    method public void setDimensionRatio(String!);
-    method public void setFinalBaseline(int);
-    method public void setFinalFrame(int, int, int, int, int, int);
-    method public void setFinalHorizontal(int, int);
-    method public void setFinalLeft(int);
-    method public void setFinalTop(int);
-    method public void setFinalVertical(int, int);
-    method public void setFrame(int, int, int);
-    method public void setFrame(int, int, int, int);
-    method public void setGoneMargin(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, int);
-    method public void setHasBaseline(boolean);
-    method public void setHeight(int);
-    method public void setHeightWrapContent(boolean);
-    method public void setHorizontalBiasPercent(float);
-    method public void setHorizontalChainStyle(int);
-    method public void setHorizontalDimension(int, int);
-    method public void setHorizontalDimensionBehaviour(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-    method public void setHorizontalMatchStyle(int, int, int, float);
-    method public void setHorizontalWeight(float);
-    method protected void setInBarrier(int, boolean);
-    method public void setInPlaceholder(boolean);
-    method public void setInVirtualLayout(boolean);
-    method public void setLastMeasureSpec(int, int);
-    method public void setLength(int, int);
-    method public void setMaxHeight(int);
-    method public void setMaxWidth(int);
-    method public void setMeasureRequested(boolean);
-    method public void setMinHeight(int);
-    method public void setMinWidth(int);
-    method public void setOffset(int, int);
-    method public void setOrigin(int, int);
-    method public void setParent(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setType(String!);
-    method public void setVerticalBiasPercent(float);
-    method public void setVerticalChainStyle(int);
-    method public void setVerticalDimension(int, int);
-    method public void setVerticalDimensionBehaviour(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-    method public void setVerticalMatchStyle(int, int, int, float);
-    method public void setVerticalWeight(float);
-    method public void setVisibility(int);
-    method public void setWidth(int);
-    method public void setWidthWrapContent(boolean);
-    method public void setWrapBehaviorInParent(int);
-    method public void setX(int);
-    method public void setY(int);
-    method public void setupDimensionRatio(boolean, boolean, boolean, boolean);
-    method public void updateFromRuns(boolean, boolean);
-    method public void updateFromSolver(androidx.constraintlayout.core.LinearSystem!, boolean);
-    field public static final int ANCHOR_BASELINE = 4; // 0x4
-    field public static final int ANCHOR_BOTTOM = 3; // 0x3
-    field public static final int ANCHOR_LEFT = 0; // 0x0
-    field public static final int ANCHOR_RIGHT = 1; // 0x1
-    field public static final int ANCHOR_TOP = 2; // 0x2
-    field public static final int BOTH = 2; // 0x2
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static float DEFAULT_BIAS;
-    field protected static final int DIRECT = 2; // 0x2
-    field public static final int GONE = 8; // 0x8
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int INVISIBLE = 4; // 0x4
-    field public static final int MATCH_CONSTRAINT_PERCENT = 2; // 0x2
-    field public static final int MATCH_CONSTRAINT_RATIO = 3; // 0x3
-    field public static final int MATCH_CONSTRAINT_RATIO_RESOLVED = 4; // 0x4
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field protected static final int SOLVER = 1; // 0x1
-    field public static final int UNKNOWN = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int VISIBLE = 0; // 0x0
-    field public static final int WRAP_BEHAVIOR_HORIZONTAL_ONLY = 1; // 0x1
-    field public static final int WRAP_BEHAVIOR_INCLUDED = 0; // 0x0
-    field public static final int WRAP_BEHAVIOR_SKIPPED = 3; // 0x3
-    field public static final int WRAP_BEHAVIOR_VERTICAL_ONLY = 2; // 0x2
-    field public androidx.constraintlayout.core.state.WidgetFrame! frame;
-    field public androidx.constraintlayout.core.widgets.analyzer.ChainRun! horizontalChainRun;
-    field public int horizontalGroup;
-    field public boolean[]! isTerminalWidget;
-    field protected java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintAnchor!>! mAnchors;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mBaseline;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mBottom;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mCenter;
-    field public float mCircleConstraintAngle;
-    field public float mDimensionRatio;
-    field protected int mDimensionRatioSide;
-    field public int mHorizontalResolution;
-    field public androidx.constraintlayout.core.widgets.analyzer.HorizontalWidgetRun! mHorizontalRun;
-    field public boolean mIsHeightWrapContent;
-    field public boolean mIsWidthWrapContent;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mLeft;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor![]! mListAnchors;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour![]! mListDimensionBehaviors;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget![]! mListNextMatchConstraintsWidget;
-    field public int mMatchConstraintDefaultHeight;
-    field public int mMatchConstraintDefaultWidth;
-    field public int mMatchConstraintMaxHeight;
-    field public int mMatchConstraintMaxWidth;
-    field public int mMatchConstraintMinHeight;
-    field public int mMatchConstraintMinWidth;
-    field public float mMatchConstraintPercentHeight;
-    field public float mMatchConstraintPercentWidth;
-    field protected int mMinHeight;
-    field protected int mMinWidth;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget![]! mNextChainWidget;
-    field protected int mOffsetX;
-    field protected int mOffsetY;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget! mParent;
-    field public int[]! mResolvedMatchConstraintDefault;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mRight;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mTop;
-    field public int mVerticalResolution;
-    field public androidx.constraintlayout.core.widgets.analyzer.VerticalWidgetRun! mVerticalRun;
-    field public float[]! mWeight;
-    field protected int mX;
-    field protected int mY;
-    field public boolean measured;
-    field public androidx.constraintlayout.core.widgets.analyzer.WidgetRun![]! run;
-    field public String! stringId;
-    field public androidx.constraintlayout.core.widgets.analyzer.ChainRun! verticalChainRun;
-    field public int verticalGroup;
-  }
-
-  public enum ConstraintWidget.DimensionBehaviour {
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour FIXED;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour MATCH_CONSTRAINT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour MATCH_PARENT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour WRAP_CONTENT;
-  }
-
-  public class ConstraintWidgetContainer extends androidx.constraintlayout.core.widgets.WidgetContainer {
-    ctor public ConstraintWidgetContainer();
-    ctor public ConstraintWidgetContainer(int, int);
-    ctor public ConstraintWidgetContainer(int, int, int, int);
-    ctor public ConstraintWidgetContainer(String!, int, int);
-    method public boolean addChildrenToSolver(androidx.constraintlayout.core.LinearSystem!);
-    method public void addHorizontalWrapMaxVariable(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public void addHorizontalWrapMinVariable(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public void defineTerminalWidgets();
-    method public boolean directMeasure(boolean);
-    method public boolean directMeasureSetup(boolean);
-    method public boolean directMeasureWithOrientation(boolean, int);
-    method public void fillMetrics(androidx.constraintlayout.core.Metrics!);
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.Guideline!>! getHorizontalGuidelines();
-    method public androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer! getMeasurer();
-    method public int getOptimizationLevel();
-    method public androidx.constraintlayout.core.LinearSystem! getSystem();
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.Guideline!>! getVerticalGuidelines();
-    method public boolean handlesInternalConstraints();
-    method public void invalidateGraph();
-    method public void invalidateMeasures();
-    method public boolean isHeightMeasuredTooSmall();
-    method public boolean isRtl();
-    method public boolean isWidthMeasuredTooSmall();
-    method public static boolean measure(int, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure!, int);
-    method public long measure(int, int, int, int, int, int, int, int, int);
-    method public boolean optimizeFor(int);
-    method public void setMeasurer(androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-    method public void setOptimizationLevel(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPass(int);
-    method public void setRtl(boolean);
-    method public boolean updateChildrenFromSolver(androidx.constraintlayout.core.LinearSystem!, boolean[]!);
-    method public void updateHierarchy();
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyGraph! mDependencyGraph;
-    field public boolean mGroupsWrapOptimized;
-    field public int mHorizontalChainsSize;
-    field public boolean mHorizontalWrapOptimized;
-    field public androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure! mMeasure;
-    field protected androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer! mMeasurer;
-    field public androidx.constraintlayout.core.Metrics! mMetrics;
-    field public boolean mSkipSolver;
-    field protected androidx.constraintlayout.core.LinearSystem! mSystem;
-    field public int mVerticalChainsSize;
-    field public boolean mVerticalWrapOptimized;
-    field public int mWrapFixedHeight;
-    field public int mWrapFixedWidth;
-  }
-
-  public class Flow extends androidx.constraintlayout.core.widgets.VirtualLayout {
-    ctor public Flow();
-    method public float getMaxElementsWrap();
-    method public void setFirstHorizontalBias(float);
-    method public void setFirstHorizontalStyle(int);
-    method public void setFirstVerticalBias(float);
-    method public void setFirstVerticalStyle(int);
-    method public void setHorizontalAlign(int);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalGap(int);
-    method public void setHorizontalStyle(int);
-    method public void setLastHorizontalBias(float);
-    method public void setLastHorizontalStyle(int);
-    method public void setLastVerticalBias(float);
-    method public void setLastVerticalStyle(int);
-    method public void setMaxElementsWrap(int);
-    method public void setOrientation(int);
-    method public void setVerticalAlign(int);
-    method public void setVerticalBias(float);
-    method public void setVerticalGap(int);
-    method public void setVerticalStyle(int);
-    method public void setWrapMode(int);
-    field public static final int HORIZONTAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int HORIZONTAL_ALIGN_END = 1; // 0x1
-    field public static final int HORIZONTAL_ALIGN_START = 0; // 0x0
-    field public static final int VERTICAL_ALIGN_BASELINE = 3; // 0x3
-    field public static final int VERTICAL_ALIGN_BOTTOM = 1; // 0x1
-    field public static final int VERTICAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int VERTICAL_ALIGN_TOP = 0; // 0x0
-    field public static final int WRAP_ALIGNED = 2; // 0x2
-    field public static final int WRAP_CHAIN = 1; // 0x1
-    field public static final int WRAP_CHAIN_NEW = 3; // 0x3
-    field public static final int WRAP_NONE = 0; // 0x0
-  }
-
-  public class Guideline extends androidx.constraintlayout.core.widgets.ConstraintWidget {
-    ctor public Guideline();
-    method public void cyclePosition();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor! getAnchor();
-    method public int getMinimumPosition();
-    method public int getOrientation();
-    method public int getRelativeBegin();
-    method public int getRelativeBehaviour();
-    method public int getRelativeEnd();
-    method public float getRelativePercent();
-    method public boolean isPercent();
-    method public void setFinalValue(int);
-    method public void setGuideBegin(int);
-    method public void setGuideEnd(int);
-    method public void setGuidePercent(float);
-    method public void setGuidePercent(int);
-    method public void setMinimumPosition(int);
-    method public void setOrientation(int);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int RELATIVE_BEGIN = 1; // 0x1
-    field public static final int RELATIVE_END = 2; // 0x2
-    field public static final int RELATIVE_PERCENT = 0; // 0x0
-    field public static final int RELATIVE_UNKNOWN = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field protected boolean mGuidelineUseRtl;
-    field protected int mRelativeBegin;
-    field protected int mRelativeEnd;
-    field protected float mRelativePercent;
-  }
-
-  public interface Helper {
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void removeAllIds();
-    method public void updateConstraints(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-  }
-
-  public class HelperWidget extends androidx.constraintlayout.core.widgets.ConstraintWidget implements androidx.constraintlayout.core.widgets.Helper {
-    ctor public HelperWidget();
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void addDependents(java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!, int, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public int findGroupInDependents(int);
-    method public void removeAllIds();
-    method public void updateConstraints(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget![]! mWidgets;
-    field public int mWidgetsCount;
-  }
-
-  public class Optimizer {
-    ctor public Optimizer();
-    method public static final boolean enabled(int, int);
-    field public static final int OPTIMIZATION_BARRIER = 2; // 0x2
-    field public static final int OPTIMIZATION_CACHE_MEASURES = 256; // 0x100
-    field public static final int OPTIMIZATION_CHAIN = 4; // 0x4
-    field public static final int OPTIMIZATION_DEPENDENCY_ORDERING = 512; // 0x200
-    field public static final int OPTIMIZATION_DIMENSIONS = 8; // 0x8
-    field public static final int OPTIMIZATION_DIRECT = 1; // 0x1
-    field public static final int OPTIMIZATION_GRAPH = 64; // 0x40
-    field public static final int OPTIMIZATION_GRAPH_WRAP = 128; // 0x80
-    field public static final int OPTIMIZATION_GROUPING = 1024; // 0x400
-    field public static final int OPTIMIZATION_GROUPS = 32; // 0x20
-    field public static final int OPTIMIZATION_NONE = 0; // 0x0
-    field public static final int OPTIMIZATION_RATIO = 16; // 0x10
-    field public static final int OPTIMIZATION_STANDARD = 257; // 0x101
-  }
-
-  public class Placeholder extends androidx.constraintlayout.core.widgets.VirtualLayout {
-    ctor public Placeholder();
-  }
-
-  public class Rectangle {
-    ctor public Rectangle();
-    method public boolean contains(int, int);
-    method public int getCenterX();
-    method public int getCenterY();
-    method public void setBounds(int, int, int, int);
-    field public int height;
-    field public int width;
-    field public int x;
-    field public int y;
-  }
-
-  public class VirtualLayout extends androidx.constraintlayout.core.widgets.HelperWidget {
-    ctor public VirtualLayout();
-    method public void applyRtl(boolean);
-    method public void captureWidgets();
-    method public boolean contains(java.util.HashSet<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public int getMeasuredHeight();
-    method public int getMeasuredWidth();
-    method public int getPaddingBottom();
-    method public int getPaddingLeft();
-    method public int getPaddingRight();
-    method public int getPaddingTop();
-    method protected void measure(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, int, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, int);
-    method public void measure(int, int, int, int);
-    method protected boolean measureChildren();
-    method public boolean needSolverPass();
-    method protected void needsCallbackFromSolver(boolean);
-    method public void setMeasure(int, int);
-    method public void setPadding(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingEnd(int);
-    method public void setPaddingLeft(int);
-    method public void setPaddingRight(int);
-    method public void setPaddingStart(int);
-    method public void setPaddingTop(int);
-    field protected androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure! mMeasure;
-  }
-
-  public class WidgetContainer extends androidx.constraintlayout.core.widgets.ConstraintWidget {
-    ctor public WidgetContainer();
-    ctor public WidgetContainer(int, int);
-    ctor public WidgetContainer(int, int, int, int);
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!...!);
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>! getChildren();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidgetContainer! getRootConstraintContainer();
-    method public void layout();
-    method public void remove(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void removeAllChildren();
-    field public java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>! mChildren;
-  }
-
-}
-
-package androidx.constraintlayout.core.widgets.analyzer {
-
-  public class BasicMeasure {
-    ctor public BasicMeasure(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    method public long solverMeasure(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int, int, int, int, int, int, int, int, int);
-    method public void updateHierarchy(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    field public static final int AT_MOST = -2147483648; // 0x80000000
-    field public static final int EXACTLY = 1073741824; // 0x40000000
-    field public static final int FIXED = -3; // 0xfffffffd
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int UNSPECIFIED = 0; // 0x0
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public static class BasicMeasure.Measure {
-    ctor public BasicMeasure.Measure();
-    field public static int SELF_DIMENSIONS;
-    field public static int TRY_GIVEN_DIMENSIONS;
-    field public static int USE_GIVEN_DIMENSIONS;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! horizontalBehavior;
-    field public int horizontalDimension;
-    field public int measureStrategy;
-    field public int measuredBaseline;
-    field public boolean measuredHasBaseline;
-    field public int measuredHeight;
-    field public boolean measuredNeedsSolverPass;
-    field public int measuredWidth;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! verticalBehavior;
-    field public int verticalDimension;
-  }
-
-  public static interface BasicMeasure.Measurer {
-    method public void didMeasures();
-    method public void measure(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure!);
-  }
-
-  public class ChainRun extends androidx.constraintlayout.core.widgets.analyzer.WidgetRun {
-    ctor public ChainRun(androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-    method public void applyToWidget();
-  }
-
-  public interface Dependency {
-    method public void update(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-  }
-
-  public class DependencyGraph {
-    ctor public DependencyGraph(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    method public void buildGraph();
-    method public void buildGraph(java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetRun!>!);
-    method public void defineTerminalWidgets(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-    method public boolean directMeasure(boolean);
-    method public boolean directMeasureSetup(boolean);
-    method public boolean directMeasureWithOrientation(boolean, int);
-    method public void invalidateGraph();
-    method public void invalidateMeasures();
-    method public void measureWidgets();
-    method public void setMeasurer(androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-  }
-
-  public class DependencyNode implements androidx.constraintlayout.core.widgets.analyzer.Dependency {
-    ctor public DependencyNode(androidx.constraintlayout.core.widgets.analyzer.WidgetRun!);
-    method public void addDependency(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method public void clear();
-    method public String! name();
-    method public void resolve(int);
-    method public void update(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    field public boolean delegateToWidgetRun;
-    field public boolean readyToSolve;
-    field public boolean resolved;
-    field public androidx.constraintlayout.core.widgets.analyzer.Dependency! updateDelegate;
-    field public int value;
-  }
-
-  public class Direct {
-    ctor public Direct();
-    method public static String! ls(int);
-    method public static boolean solveChain(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.LinearSystem!, int, int, androidx.constraintlayout.core.widgets.ChainHead!, boolean, boolean, boolean);
-    method public static void solvingPass(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-  }
-
-  public class Grouping {
-    ctor public Grouping();
-    method public static androidx.constraintlayout.core.widgets.analyzer.WidgetGroup! findDependents(androidx.constraintlayout.core.widgets.ConstraintWidget!, int, java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public static boolean simpleSolvingPass(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-    method public static boolean validInGroup(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-  }
-
-  public class HorizontalWidgetRun extends androidx.constraintlayout.core.widgets.analyzer.WidgetRun {
-    ctor public HorizontalWidgetRun(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void applyToWidget();
-  }
-
-  public class VerticalWidgetRun extends androidx.constraintlayout.core.widgets.analyzer.WidgetRun {
-    ctor public VerticalWidgetRun(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void applyToWidget();
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyNode! baseline;
-  }
-
-  public class WidgetGroup {
-    ctor public WidgetGroup(int);
-    method public boolean add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void apply();
-    method public void cleanup(java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!);
-    method public void clear();
-    method public int getId();
-    method public int getOrientation();
-    method public boolean intersectWith(androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public boolean isAuthoritative();
-    method public int measureWrap(androidx.constraintlayout.core.LinearSystem!, int);
-    method public void moveTo(int, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public void setAuthoritative(boolean);
-    method public void setOrientation(int);
-    method public int size();
-  }
-
-  public abstract class WidgetRun implements androidx.constraintlayout.core.widgets.analyzer.Dependency {
-    ctor public WidgetRun(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method protected final void addTarget(androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, int);
-    method protected final void addTarget(androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, int, androidx.constraintlayout.core.widgets.analyzer.DimensionDependency!);
-    method protected final int getLimitedDimension(int, int);
-    method protected final androidx.constraintlayout.core.widgets.analyzer.DependencyNode! getTarget(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method protected final androidx.constraintlayout.core.widgets.analyzer.DependencyNode! getTarget(androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method public long getWrapDimension();
-    method public boolean isCenterConnection();
-    method public boolean isDimensionResolved();
-    method public boolean isResolved();
-    method public void update(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method protected void updateRunCenter(androidx.constraintlayout.core.widgets.analyzer.Dependency!, androidx.constraintlayout.core.widgets.ConstraintAnchor!, androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method protected void updateRunEnd(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method protected void updateRunStart(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method public long wrapSize(int);
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyNode! end;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! mDimensionBehavior;
-    field protected androidx.constraintlayout.core.widgets.analyzer.WidgetRun.RunType! mRunType;
-    field public int matchConstraintsType;
-    field public int orientation;
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyNode! start;
-  }
-
-}
-
diff --git a/constraintlayout/constraintlayout-core/api/restricted_1.1.0-beta01.txt b/constraintlayout/constraintlayout-core/api/restricted_1.1.0-beta01.txt
deleted file mode 100644
index daaf9e5..0000000
--- a/constraintlayout/constraintlayout-core/api/restricted_1.1.0-beta01.txt
+++ /dev/null
@@ -1,3397 +0,0 @@
-// Signature format: 4.0
-package androidx.constraintlayout.core {
-
-  public class ArrayLinkedVariables implements androidx.constraintlayout.core.ArrayRow.ArrayRowVariables {
-    method public void add(androidx.constraintlayout.core.SolverVariable!, float, boolean);
-    method public final void clear();
-    method public boolean contains(androidx.constraintlayout.core.SolverVariable!);
-    method public void display();
-    method public void divideByAmount(float);
-    method public final float get(androidx.constraintlayout.core.SolverVariable!);
-    method public int getCurrentSize();
-    method public int getHead();
-    method public final int getId(int);
-    method public final int getNextIndice(int);
-    method public final float getValue(int);
-    method public androidx.constraintlayout.core.SolverVariable! getVariable(int);
-    method public float getVariableValue(int);
-    method public int indexOf(androidx.constraintlayout.core.SolverVariable!);
-    method public void invert();
-    method public final void put(androidx.constraintlayout.core.SolverVariable!, float);
-    method public final float remove(androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public int sizeInBytes();
-    method public float use(androidx.constraintlayout.core.ArrayRow!, boolean);
-    field protected final androidx.constraintlayout.core.Cache! mCache;
-  }
-
-  public class ArrayRow {
-    ctor public ArrayRow();
-    ctor public ArrayRow(androidx.constraintlayout.core.Cache!);
-    method public androidx.constraintlayout.core.ArrayRow! addError(androidx.constraintlayout.core.LinearSystem!, int);
-    method public void addError(androidx.constraintlayout.core.SolverVariable!);
-    method public void clear();
-    method public androidx.constraintlayout.core.ArrayRow! createRowDimensionRatio(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEqualDimension(float, float, float, androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEqualMatchDimensions(float, float, float, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEquals(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowEquals(androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowGreaterThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowGreaterThan(androidx.constraintlayout.core.SolverVariable!, int, androidx.constraintlayout.core.SolverVariable!);
-    method public androidx.constraintlayout.core.ArrayRow! createRowLowerThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.ArrayRow! createRowWithAngle(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public androidx.constraintlayout.core.SolverVariable! getKey();
-    method public androidx.constraintlayout.core.SolverVariable! getPivotCandidate(androidx.constraintlayout.core.LinearSystem!, boolean[]!);
-    method public void initFromRow(androidx.constraintlayout.core.LinearSystem.Row!);
-    method public boolean isEmpty();
-    method public androidx.constraintlayout.core.SolverVariable! pickPivot(androidx.constraintlayout.core.SolverVariable!);
-    method public void reset();
-    method public void updateFromFinalVariable(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public void updateFromRow(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.ArrayRow!, boolean);
-    method public void updateFromSynonymVariable(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public void updateFromSystem(androidx.constraintlayout.core.LinearSystem!);
-    field public androidx.constraintlayout.core.ArrayRow.ArrayRowVariables! variables;
-  }
-
-  public static interface ArrayRow.ArrayRowVariables {
-    method public void add(androidx.constraintlayout.core.SolverVariable!, float, boolean);
-    method public void clear();
-    method public boolean contains(androidx.constraintlayout.core.SolverVariable!);
-    method public void display();
-    method public void divideByAmount(float);
-    method public float get(androidx.constraintlayout.core.SolverVariable!);
-    method public int getCurrentSize();
-    method public androidx.constraintlayout.core.SolverVariable! getVariable(int);
-    method public float getVariableValue(int);
-    method public int indexOf(androidx.constraintlayout.core.SolverVariable!);
-    method public void invert();
-    method public void put(androidx.constraintlayout.core.SolverVariable!, float);
-    method public float remove(androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public int sizeInBytes();
-    method public float use(androidx.constraintlayout.core.ArrayRow!, boolean);
-  }
-
-  public class Cache {
-    ctor public Cache();
-  }
-
-  public class GoalRow extends androidx.constraintlayout.core.ArrayRow {
-    ctor public GoalRow(androidx.constraintlayout.core.Cache!);
-  }
-
-  public class LinearSystem {
-    ctor public LinearSystem();
-    method public void addCenterPoint(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintWidget!, float, int);
-    method public void addCentering(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, float, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addConstraint(androidx.constraintlayout.core.ArrayRow!);
-    method public androidx.constraintlayout.core.ArrayRow! addEquality(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addEquality(androidx.constraintlayout.core.SolverVariable!, int);
-    method public void addGreaterBarrier(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, boolean);
-    method public void addGreaterThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addLowerBarrier(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, boolean);
-    method public void addLowerThan(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int, int);
-    method public void addRatio(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float, int);
-    method public void addSynonym(androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, int);
-    method public androidx.constraintlayout.core.SolverVariable! createErrorVariable(int, String!);
-    method public androidx.constraintlayout.core.SolverVariable! createExtraVariable();
-    method public androidx.constraintlayout.core.SolverVariable! createObjectVariable(Object!);
-    method public androidx.constraintlayout.core.ArrayRow! createRow();
-    method public static androidx.constraintlayout.core.ArrayRow! createRowDimensionPercent(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public androidx.constraintlayout.core.SolverVariable! createSlackVariable();
-    method public void displayReadableRows();
-    method public void displayVariablesReadableRows();
-    method public void fillMetrics(androidx.constraintlayout.core.Metrics!);
-    method public androidx.constraintlayout.core.Cache! getCache();
-    method public int getMemoryUsed();
-    method public static androidx.constraintlayout.core.Metrics! getMetrics();
-    method public int getNumEquations();
-    method public int getNumVariables();
-    method public int getObjectVariableValue(Object!);
-    method public void minimize() throws java.lang.Exception;
-    method public void removeRow(androidx.constraintlayout.core.ArrayRow!);
-    method public void reset();
-    field public static long ARRAY_ROW_CREATION;
-    field public static final boolean DEBUG = false;
-    field public static final boolean FULL_DEBUG = false;
-    field public static long OPTIMIZED_ARRAY_ROW_CREATION;
-    field public static boolean OPTIMIZED_ENGINE;
-    field public static boolean SIMPLIFY_SYNONYMS;
-    field public static boolean SKIP_COLUMNS;
-    field public static boolean USE_BASIC_SYNONYMS;
-    field public static boolean USE_DEPENDENCY_ORDERING;
-    field public static boolean USE_SYNONYMS;
-    field public boolean graphOptimizer;
-    field public boolean hasSimpleDefinition;
-    field public boolean newgraphOptimizer;
-    field public static androidx.constraintlayout.core.Metrics! sMetrics;
-  }
-
-  public class Metrics {
-    ctor public Metrics();
-    method public void copy(androidx.constraintlayout.core.Metrics!);
-    method public void reset();
-    field public long additionalMeasures;
-    field public long bfs;
-    field public long constraints;
-    field public long determineGroups;
-    field public long errors;
-    field public long extravariables;
-    field public long fullySolved;
-    field public long graphOptimizer;
-    field public long graphSolved;
-    field public long grouping;
-    field public long infeasibleDetermineGroups;
-    field public long iterations;
-    field public long lastTableSize;
-    field public long layouts;
-    field public long linearSolved;
-    field public long mChildCount;
-    field public long mEquations;
-    field public long mMeasureCalls;
-    field public long mMeasureDuration;
-    field public int mNumberOfLayouts;
-    field public int mNumberOfMeasures;
-    field public long mSimpleEquations;
-    field public long mSolverPasses;
-    field public long mVariables;
-    field public long maxRows;
-    field public long maxTableSize;
-    field public long maxVariables;
-    field public long measuredMatchWidgets;
-    field public long measuredWidgets;
-    field public long measures;
-    field public long measuresLayoutDuration;
-    field public long measuresWidgetsDuration;
-    field public long measuresWrap;
-    field public long measuresWrapInfeasible;
-    field public long minimize;
-    field public long minimizeGoal;
-    field public long nonresolvedWidgets;
-    field public long optimize;
-    field public long pivots;
-    field public java.util.ArrayList<java.lang.String!>! problematicLayouts;
-    field public long resolutions;
-    field public long resolvedWidgets;
-    field public long simpleconstraints;
-    field public long slackvariables;
-    field public long tableSizeIncrease;
-    field public long variables;
-    field public long widgets;
-  }
-
-  public class PriorityGoalRow extends androidx.constraintlayout.core.ArrayRow {
-    ctor public PriorityGoalRow(androidx.constraintlayout.core.Cache!);
-  }
-
-  public class SolverVariable implements java.lang.Comparable<androidx.constraintlayout.core.SolverVariable!> {
-    ctor public SolverVariable(androidx.constraintlayout.core.SolverVariable.Type!, String!);
-    ctor public SolverVariable(String!, androidx.constraintlayout.core.SolverVariable.Type!);
-    method public final void addToRow(androidx.constraintlayout.core.ArrayRow!);
-    method public int compareTo(androidx.constraintlayout.core.SolverVariable!);
-    method public String! getName();
-    method public final void removeFromRow(androidx.constraintlayout.core.ArrayRow!);
-    method public void reset();
-    method public void setFinalValue(androidx.constraintlayout.core.LinearSystem!, float);
-    method public void setName(String!);
-    method public void setSynonym(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.SolverVariable!, float);
-    method public void setType(androidx.constraintlayout.core.SolverVariable.Type!, String!);
-    method public final void updateReferencesWithNewDefinition(androidx.constraintlayout.core.LinearSystem!, androidx.constraintlayout.core.ArrayRow!);
-    field public static final int STRENGTH_BARRIER = 6; // 0x6
-    field public static final int STRENGTH_CENTERING = 7; // 0x7
-    field public static final int STRENGTH_EQUALITY = 5; // 0x5
-    field public static final int STRENGTH_FIXED = 8; // 0x8
-    field public static final int STRENGTH_HIGH = 3; // 0x3
-    field public static final int STRENGTH_HIGHEST = 4; // 0x4
-    field public static final int STRENGTH_LOW = 1; // 0x1
-    field public static final int STRENGTH_MEDIUM = 2; // 0x2
-    field public static final int STRENGTH_NONE = 0; // 0x0
-    field public float computedValue;
-    field public int id;
-    field public boolean inGoal;
-    field public boolean isFinalValue;
-    field public int strength;
-    field public int usageInRowCount;
-  }
-
-  public enum SolverVariable.Type {
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type CONSTANT;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type ERROR;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type SLACK;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type UNKNOWN;
-    enum_constant public static final androidx.constraintlayout.core.SolverVariable.Type UNRESTRICTED;
-  }
-
-  public class SolverVariableValues implements androidx.constraintlayout.core.ArrayRow.ArrayRowVariables {
-    method public void add(androidx.constraintlayout.core.SolverVariable!, float, boolean);
-    method public void clear();
-    method public boolean contains(androidx.constraintlayout.core.SolverVariable!);
-    method public void display();
-    method public void divideByAmount(float);
-    method public float get(androidx.constraintlayout.core.SolverVariable!);
-    method public int getCurrentSize();
-    method public androidx.constraintlayout.core.SolverVariable! getVariable(int);
-    method public float getVariableValue(int);
-    method public int indexOf(androidx.constraintlayout.core.SolverVariable!);
-    method public void invert();
-    method public void put(androidx.constraintlayout.core.SolverVariable!, float);
-    method public float remove(androidx.constraintlayout.core.SolverVariable!, boolean);
-    method public int sizeInBytes();
-    method public float use(androidx.constraintlayout.core.ArrayRow!, boolean);
-    field protected final androidx.constraintlayout.core.Cache! mCache;
-  }
-
-}
-
-package androidx.constraintlayout.core.dsl {
-
-  public class Barrier extends androidx.constraintlayout.core.dsl.Helper {
-    ctor public Barrier(String!);
-    ctor public Barrier(String!, String!);
-    method public androidx.constraintlayout.core.dsl.Barrier! addReference(androidx.constraintlayout.core.dsl.Ref!);
-    method public androidx.constraintlayout.core.dsl.Barrier! addReference(String!);
-    method public androidx.constraintlayout.core.dsl.Constraint.Side! getDirection();
-    method public int getMargin();
-    method public String! referencesToString();
-    method public void setDirection(androidx.constraintlayout.core.dsl.Constraint.Side!);
-    method public void setMargin(int);
-  }
-
-  public abstract class Chain extends androidx.constraintlayout.core.dsl.Helper {
-    ctor public Chain(String!);
-    method public androidx.constraintlayout.core.dsl.Chain! addReference(androidx.constraintlayout.core.dsl.Ref!);
-    method public androidx.constraintlayout.core.dsl.Chain! addReference(String!);
-    method public androidx.constraintlayout.core.dsl.Chain.Style! getStyle();
-    method public String! referencesToString();
-    method public void setStyle(androidx.constraintlayout.core.dsl.Chain.Style!);
-    field protected java.util.ArrayList<androidx.constraintlayout.core.dsl.Ref!>! references;
-    field protected static final java.util.Map<androidx.constraintlayout.core.dsl.Chain.Style!,java.lang.String!>! styleMap;
-  }
-
-  public class Chain.Anchor {
-    method public void build(StringBuilder!);
-    method public String! getId();
-  }
-
-  public enum Chain.Style {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Chain.Style PACKED;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Chain.Style SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Chain.Style SPREAD_INSIDE;
-  }
-
-  public class Constraint {
-    ctor public Constraint(String!);
-    method protected void append(StringBuilder!, String!, float);
-    method public String! convertStringArrayToString(String![]!);
-    method public androidx.constraintlayout.core.dsl.Constraint.VAnchor! getBaseline();
-    method public androidx.constraintlayout.core.dsl.Constraint.VAnchor! getBottom();
-    method public float getCircleAngle();
-    method public String! getCircleConstraint();
-    method public int getCircleRadius();
-    method public String! getDimensionRatio();
-    method public int getEditorAbsoluteX();
-    method public int getEditorAbsoluteY();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getEnd();
-    method public int getHeight();
-    method public androidx.constraintlayout.core.dsl.Constraint.Behaviour! getHeightDefault();
-    method public int getHeightMax();
-    method public int getHeightMin();
-    method public float getHeightPercent();
-    method public float getHorizontalBias();
-    method public androidx.constraintlayout.core.dsl.Constraint.ChainMode! getHorizontalChainStyle();
-    method public float getHorizontalWeight();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getLeft();
-    method public String![]! getReferenceIds();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getRight();
-    method public androidx.constraintlayout.core.dsl.Constraint.HAnchor! getStart();
-    method public androidx.constraintlayout.core.dsl.Constraint.VAnchor! getTop();
-    method public float getVerticalBias();
-    method public androidx.constraintlayout.core.dsl.Constraint.ChainMode! getVerticalChainStyle();
-    method public float getVerticalWeight();
-    method public int getWidth();
-    method public androidx.constraintlayout.core.dsl.Constraint.Behaviour! getWidthDefault();
-    method public int getWidthMax();
-    method public int getWidthMin();
-    method public float getWidthPercent();
-    method public boolean isConstrainedHeight();
-    method public boolean isConstrainedWidth();
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void setCircleAngle(float);
-    method public void setCircleConstraint(String!);
-    method public void setCircleRadius(int);
-    method public void setConstrainedHeight(boolean);
-    method public void setConstrainedWidth(boolean);
-    method public void setDimensionRatio(String!);
-    method public void setEditorAbsoluteX(int);
-    method public void setEditorAbsoluteY(int);
-    method public void setHeight(int);
-    method public void setHeightDefault(androidx.constraintlayout.core.dsl.Constraint.Behaviour!);
-    method public void setHeightMax(int);
-    method public void setHeightMin(int);
-    method public void setHeightPercent(float);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalChainStyle(androidx.constraintlayout.core.dsl.Constraint.ChainMode!);
-    method public void setHorizontalWeight(float);
-    method public void setReferenceIds(String![]!);
-    method public void setVerticalBias(float);
-    method public void setVerticalChainStyle(androidx.constraintlayout.core.dsl.Constraint.ChainMode!);
-    method public void setVerticalWeight(float);
-    method public void setWidth(int);
-    method public void setWidthDefault(androidx.constraintlayout.core.dsl.Constraint.Behaviour!);
-    method public void setWidthMax(int);
-    method public void setWidthMin(int);
-    method public void setWidthPercent(float);
-    field public static final androidx.constraintlayout.core.dsl.Constraint! PARENT;
-  }
-
-  public class Constraint.Anchor {
-    method public void build(StringBuilder!);
-    method public String! getId();
-  }
-
-  public enum Constraint.Behaviour {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour PERCENT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour RATIO;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour RESOLVED;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Behaviour WRAP;
-  }
-
-  public enum Constraint.ChainMode {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.ChainMode PACKED;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.ChainMode SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.ChainMode SPREAD_INSIDE;
-  }
-
-  public class Constraint.HAnchor extends androidx.constraintlayout.core.dsl.Constraint.Anchor {
-  }
-
-  public enum Constraint.HSide {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.HSide START;
-  }
-
-  public enum Constraint.Side {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.Side TOP;
-  }
-
-  public class Constraint.VAnchor extends androidx.constraintlayout.core.dsl.Constraint.Anchor {
-  }
-
-  public enum Constraint.VSide {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.VSide BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.VSide BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Constraint.VSide TOP;
-  }
-
-  public class ConstraintSet {
-    ctor public ConstraintSet(String!);
-    method public void add(androidx.constraintlayout.core.dsl.Constraint!);
-    method public void add(androidx.constraintlayout.core.dsl.Helper!);
-  }
-
-  public abstract class Guideline extends androidx.constraintlayout.core.dsl.Helper {
-    method public int getEnd();
-    method public float getPercent();
-    method public int getStart();
-    method public void setEnd(int);
-    method public void setPercent(float);
-    method public void setStart(int);
-  }
-
-  public class HChain extends androidx.constraintlayout.core.dsl.Chain {
-    ctor public HChain(String!);
-    ctor public HChain(String!, String!);
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getEnd();
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getLeft();
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getRight();
-    method public androidx.constraintlayout.core.dsl.HChain.HAnchor! getStart();
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToEnd(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToLeft(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToRight(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int);
-    method public void linkToStart(androidx.constraintlayout.core.dsl.Constraint.HAnchor!, int, int);
-  }
-
-  public class HChain.HAnchor extends androidx.constraintlayout.core.dsl.Chain.Anchor {
-  }
-
-  public class Helper {
-    ctor public Helper(String!, androidx.constraintlayout.core.dsl.Helper.HelperType!);
-    ctor public Helper(String!, androidx.constraintlayout.core.dsl.Helper.HelperType!, String!);
-    method public void append(java.util.Map<java.lang.String!,java.lang.String!>!, StringBuilder!);
-    method public java.util.Map<java.lang.String!,java.lang.String!>! convertConfigToMap();
-    method public String! getConfig();
-    method public String! getId();
-    method public androidx.constraintlayout.core.dsl.Helper.HelperType! getType();
-    method public static void main(String![]!);
-    field protected String! config;
-    field protected java.util.Map<java.lang.String!,java.lang.String!>! configMap;
-    field protected final String! name;
-    field protected static final java.util.Map<androidx.constraintlayout.core.dsl.Constraint.Side!,java.lang.String!>! sideMap;
-    field protected androidx.constraintlayout.core.dsl.Helper.HelperType! type;
-    field protected static final java.util.Map<androidx.constraintlayout.core.dsl.Helper.Type!,java.lang.String!>! typeMap;
-  }
-
-  public static final class Helper.HelperType {
-    ctor public Helper.HelperType(String!);
-  }
-
-  public enum Helper.Type {
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type BARRIER;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type HORIZONTAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type HORIZONTAL_GUIDELINE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type VERTICAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.Helper.Type VERTICAL_GUIDELINE;
-  }
-
-  public class KeyAttribute extends androidx.constraintlayout.core.dsl.Keys {
-    ctor public KeyAttribute(int, String!);
-    method protected void attributesToString(StringBuilder!);
-    method public float getAlpha();
-    method public androidx.constraintlayout.core.dsl.KeyAttribute.Fit! getCurveFit();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getRotation();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public String! getTarget();
-    method public String! getTransitionEasing();
-    method public float getTransitionPathRotate();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public androidx.constraintlayout.core.dsl.KeyAttribute.Visibility! getVisibility();
-    method public void setAlpha(float);
-    method public void setCurveFit(androidx.constraintlayout.core.dsl.KeyAttribute.Fit!);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setRotation(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTarget(String!);
-    method public void setTransitionEasing(String!);
-    method public void setTransitionPathRotate(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public void setVisibility(androidx.constraintlayout.core.dsl.KeyAttribute.Visibility!);
-    field protected String! TYPE;
-  }
-
-  public enum KeyAttribute.Fit {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Fit LINEAR;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Fit SPLINE;
-  }
-
-  public enum KeyAttribute.Visibility {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Visibility GONE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Visibility INVISIBLE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttribute.Visibility VISIBLE;
-  }
-
-  public class KeyAttributes extends androidx.constraintlayout.core.dsl.Keys {
-    method protected void attributesToString(StringBuilder!);
-    method public float[]! getAlpha();
-    method public androidx.constraintlayout.core.dsl.KeyAttributes.Fit! getCurveFit();
-    method public float[]! getPivotX();
-    method public float[]! getPivotY();
-    method public float[]! getRotation();
-    method public float[]! getRotationX();
-    method public float[]! getRotationY();
-    method public float[]! getScaleX();
-    method public float[]! getScaleY();
-    method public String![]! getTarget();
-    method public String! getTransitionEasing();
-    method public float[]! getTransitionPathRotate();
-    method public float[]! getTranslationX();
-    method public float[]! getTranslationY();
-    method public float[]! getTranslationZ();
-    method public androidx.constraintlayout.core.dsl.KeyAttributes.Visibility![]! getVisibility();
-    method public void setAlpha(float...!);
-    method public void setCurveFit(androidx.constraintlayout.core.dsl.KeyAttributes.Fit!);
-    method public void setPivotX(float...!);
-    method public void setPivotY(float...!);
-    method public void setRotation(float...!);
-    method public void setRotationX(float...!);
-    method public void setRotationY(float...!);
-    method public void setScaleX(float[]!);
-    method public void setScaleY(float[]!);
-    method public void setTarget(String![]!);
-    method public void setTransitionEasing(String!);
-    method public void setTransitionPathRotate(float...!);
-    method public void setTranslationX(float[]!);
-    method public void setTranslationY(float[]!);
-    method public void setTranslationZ(float[]!);
-    method public void setVisibility(androidx.constraintlayout.core.dsl.KeyAttributes.Visibility!...!);
-    field protected String! TYPE;
-  }
-
-  public enum KeyAttributes.Fit {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Fit LINEAR;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Fit SPLINE;
-  }
-
-  public enum KeyAttributes.Visibility {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Visibility GONE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Visibility INVISIBLE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyAttributes.Visibility VISIBLE;
-  }
-
-  public class KeyCycle extends androidx.constraintlayout.core.dsl.KeyAttribute {
-    method public float getOffset();
-    method public float getPeriod();
-    method public float getPhase();
-    method public androidx.constraintlayout.core.dsl.KeyCycle.Wave! getShape();
-    method public void setOffset(float);
-    method public void setPeriod(float);
-    method public void setPhase(float);
-    method public void setShape(androidx.constraintlayout.core.dsl.KeyCycle.Wave!);
-  }
-
-  public enum KeyCycle.Wave {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave COS;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave REVERSE_SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave SIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave SQUARE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycle.Wave TRIANGLE;
-  }
-
-  public class KeyCycles extends androidx.constraintlayout.core.dsl.KeyAttributes {
-    method public float[]! getWaveOffset();
-    method public float[]! getWavePeriod();
-    method public float[]! getWavePhase();
-    method public androidx.constraintlayout.core.dsl.KeyCycles.Wave! getWaveShape();
-    method public void setWaveOffset(float...!);
-    method public void setWavePeriod(float...!);
-    method public void setWavePhase(float...!);
-    method public void setWaveShape(androidx.constraintlayout.core.dsl.KeyCycles.Wave!);
-  }
-
-  public enum KeyCycles.Wave {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave COS;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave REVERSE_SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave SAW;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave SIN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave SQUARE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyCycles.Wave TRIANGLE;
-  }
-
-  public class KeyFrames {
-    ctor public KeyFrames();
-    method public void add(androidx.constraintlayout.core.dsl.Keys!);
-  }
-
-  public class KeyPosition extends androidx.constraintlayout.core.dsl.Keys {
-    ctor public KeyPosition(String!, int);
-    method public int getFrames();
-    method public float getPercentHeight();
-    method public float getPercentWidth();
-    method public float getPercentX();
-    method public float getPercentY();
-    method public androidx.constraintlayout.core.dsl.KeyPosition.Type! getPositionType();
-    method public String! getTarget();
-    method public String! getTransitionEasing();
-    method public void setFrames(int);
-    method public void setPercentHeight(float);
-    method public void setPercentWidth(float);
-    method public void setPercentX(float);
-    method public void setPercentY(float);
-    method public void setPositionType(androidx.constraintlayout.core.dsl.KeyPosition.Type!);
-    method public void setTarget(String!);
-    method public void setTransitionEasing(String!);
-  }
-
-  public enum KeyPosition.Type {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPosition.Type CARTESIAN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPosition.Type PATH;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPosition.Type SCREEN;
-  }
-
-  public class KeyPositions extends androidx.constraintlayout.core.dsl.Keys {
-    ctor public KeyPositions(int, java.lang.String!...!);
-    method public int[]! getFrames();
-    method public float[]! getPercentHeight();
-    method public float[]! getPercentWidth();
-    method public float[]! getPercentX();
-    method public float[]! getPercentY();
-    method public androidx.constraintlayout.core.dsl.KeyPositions.Type! getPositionType();
-    method public String![]! getTarget();
-    method public String! getTransitionEasing();
-    method public void setFrames(int...!);
-    method public void setPercentHeight(float...!);
-    method public void setPercentWidth(float...!);
-    method public void setPercentX(float...!);
-    method public void setPercentY(float...!);
-    method public void setPositionType(androidx.constraintlayout.core.dsl.KeyPositions.Type!);
-    method public void setTransitionEasing(String!);
-  }
-
-  public enum KeyPositions.Type {
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPositions.Type CARTESIAN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPositions.Type PATH;
-    enum_constant public static final androidx.constraintlayout.core.dsl.KeyPositions.Type SCREEN;
-  }
-
-  public class Keys {
-    ctor public Keys();
-    method protected void append(StringBuilder!, String!, float);
-    method protected void append(StringBuilder!, String!, float[]!);
-    method protected void append(StringBuilder!, String!, int);
-    method protected void append(StringBuilder!, String!, String!);
-    method protected void append(StringBuilder!, String!, String![]!);
-    method protected String! unpack(String![]!);
-  }
-
-  public class MotionScene {
-    ctor public MotionScene();
-    method public void addConstraintSet(androidx.constraintlayout.core.dsl.ConstraintSet!);
-    method public void addTransition(androidx.constraintlayout.core.dsl.Transition!);
-  }
-
-  public class OnSwipe {
-    ctor public OnSwipe();
-    ctor public OnSwipe(String!, androidx.constraintlayout.core.dsl.OnSwipe.Side!, androidx.constraintlayout.core.dsl.OnSwipe.Drag!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Mode! getAutoCompleteMode();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Drag! getDragDirection();
-    method public float getDragScale();
-    method public float getDragThreshold();
-    method public String! getLimitBoundsTo();
-    method public float getMaxAcceleration();
-    method public float getMaxVelocity();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.TouchUp! getOnTouchUp();
-    method public String! getRotationCenterId();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Boundary! getSpringBoundary();
-    method public float getSpringDamping();
-    method public float getSpringMass();
-    method public float getSpringStiffness();
-    method public float getSpringStopThreshold();
-    method public String! getTouchAnchorId();
-    method public androidx.constraintlayout.core.dsl.OnSwipe.Side! getTouchAnchorSide();
-    method public void setAutoCompleteMode(androidx.constraintlayout.core.dsl.OnSwipe.Mode!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setDragDirection(androidx.constraintlayout.core.dsl.OnSwipe.Drag!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setDragScale(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setDragThreshold(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setLimitBoundsTo(String!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setMaxAcceleration(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setMaxVelocity(int);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setOnTouchUp(androidx.constraintlayout.core.dsl.OnSwipe.TouchUp!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setRotateCenter(String!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringBoundary(androidx.constraintlayout.core.dsl.OnSwipe.Boundary!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringDamping(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringMass(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringStiffness(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setSpringStopThreshold(float);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setTouchAnchorId(String!);
-    method public androidx.constraintlayout.core.dsl.OnSwipe! setTouchAnchorSide(androidx.constraintlayout.core.dsl.OnSwipe.Side!);
-    field public static final int FLAG_DISABLE_POST_SCROLL = 1; // 0x1
-    field public static final int FLAG_DISABLE_SCROLL = 2; // 0x2
-  }
-
-  public enum OnSwipe.Boundary {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary BOUNCE_BOTH;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary BOUNCE_END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary BOUNCE_START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Boundary OVERSHOOT;
-  }
-
-  public enum OnSwipe.Drag {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag ANTICLOCKWISE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag CLOCKWISE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag DOWN;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Drag UP;
-  }
-
-  public enum OnSwipe.Mode {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Mode SPRING;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Mode VELOCITY;
-  }
-
-  public enum OnSwipe.Side {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side LEFT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side MIDDLE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.Side TOP;
-  }
-
-  public enum OnSwipe.TouchUp {
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp AUTOCOMPLETE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp DECELERATE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp DECELERATE_COMPLETE;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp NEVER_COMPLETE_END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp NEVER_COMPLETE_START;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp STOP;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp TO_END;
-    enum_constant public static final androidx.constraintlayout.core.dsl.OnSwipe.TouchUp TO_START;
-  }
-
-  public class Ref {
-    method public static void addStringToReferences(String!, java.util.ArrayList<androidx.constraintlayout.core.dsl.Ref!>!);
-    method public String! getId();
-    method public float getPostMargin();
-    method public float getPreMargin();
-    method public float getWeight();
-    method public static float parseFloat(Object!);
-    method public static androidx.constraintlayout.core.dsl.Ref! parseStringToRef(String!);
-    method public void setId(String!);
-    method public void setPostMargin(float);
-    method public void setPreMargin(float);
-    method public void setWeight(float);
-  }
-
-  public class Transition {
-    ctor public Transition(String!, String!);
-    ctor public Transition(String!, String!, String!);
-    method public String! getId();
-    method public void setDuration(int);
-    method public void setFrom(String!);
-    method public void setId(String!);
-    method public void setKeyFrames(androidx.constraintlayout.core.dsl.Keys!);
-    method public void setOnSwipe(androidx.constraintlayout.core.dsl.OnSwipe!);
-    method public void setStagger(float);
-    method public void setTo(String!);
-  }
-
-  public class VChain extends androidx.constraintlayout.core.dsl.Chain {
-    ctor public VChain(String!);
-    ctor public VChain(String!, String!);
-    method public androidx.constraintlayout.core.dsl.VChain.VAnchor! getBaseline();
-    method public androidx.constraintlayout.core.dsl.VChain.VAnchor! getBottom();
-    method public androidx.constraintlayout.core.dsl.VChain.VAnchor! getTop();
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBaseline(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToBottom(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int);
-    method public void linkToTop(androidx.constraintlayout.core.dsl.Constraint.VAnchor!, int, int);
-  }
-
-  public class VChain.VAnchor extends androidx.constraintlayout.core.dsl.Chain.Anchor {
-  }
-
-  public class VGuideline extends androidx.constraintlayout.core.dsl.Guideline {
-    ctor public VGuideline(String!);
-    ctor public VGuideline(String!, String!);
-  }
-
-}
-
-package androidx.constraintlayout.core.motion {
-
-  public class CustomAttribute {
-    ctor public CustomAttribute(androidx.constraintlayout.core.motion.CustomAttribute!, Object!);
-    ctor public CustomAttribute(String!, androidx.constraintlayout.core.motion.CustomAttribute.AttributeType!);
-    ctor public CustomAttribute(String!, androidx.constraintlayout.core.motion.CustomAttribute.AttributeType!, Object!, boolean);
-    method public boolean diff(androidx.constraintlayout.core.motion.CustomAttribute!);
-    method public androidx.constraintlayout.core.motion.CustomAttribute.AttributeType! getType();
-    method public float getValueToInterpolate();
-    method public void getValuesToInterpolate(float[]!);
-    method public static int hsvToRgb(float, float, float);
-    method public boolean isContinuous();
-    method public int numberOfInterpolatedValues();
-    method public void setColorValue(int);
-    method public void setFloatValue(float);
-    method public void setIntValue(int);
-    method public void setStringValue(String!);
-    method public void setValue(float[]!);
-    method public void setValue(Object!);
-  }
-
-  public enum CustomAttribute.AttributeType {
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType BOOLEAN_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType COLOR_DRAWABLE_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType COLOR_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType DIMENSION_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType FLOAT_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType INT_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType REFERENCE_TYPE;
-    enum_constant public static final androidx.constraintlayout.core.motion.CustomAttribute.AttributeType STRING_TYPE;
-  }
-
-  public class CustomVariable {
-    ctor public CustomVariable(androidx.constraintlayout.core.motion.CustomVariable!);
-    ctor public CustomVariable(androidx.constraintlayout.core.motion.CustomVariable!, Object!);
-    ctor public CustomVariable(String!, int);
-    ctor public CustomVariable(String!, int, boolean);
-    ctor public CustomVariable(String!, int, float);
-    ctor public CustomVariable(String!, int, int);
-    ctor public CustomVariable(String!, int, Object!);
-    ctor public CustomVariable(String!, int, String!);
-    method public void applyToWidget(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public static String! colorString(int);
-    method public androidx.constraintlayout.core.motion.CustomVariable! copy();
-    method public boolean diff(androidx.constraintlayout.core.motion.CustomVariable!);
-    method public boolean getBooleanValue();
-    method public int getColorValue();
-    method public float getFloatValue();
-    method public int getIntegerValue();
-    method public int getInterpolatedColor(float[]!);
-    method public String! getName();
-    method public String! getStringValue();
-    method public int getType();
-    method public float getValueToInterpolate();
-    method public void getValuesToInterpolate(float[]!);
-    method public static int hsvToRgb(float, float, float);
-    method public boolean isContinuous();
-    method public int numberOfInterpolatedValues();
-    method public static int rgbaTocColor(float, float, float, float);
-    method public void setBooleanValue(boolean);
-    method public void setFloatValue(float);
-    method public void setIntValue(int);
-    method public void setInterpolatedValue(androidx.constraintlayout.core.motion.MotionWidget!, float[]!);
-    method public void setStringValue(String!);
-    method public void setValue(float[]!);
-    method public void setValue(Object!);
-  }
-
-  public class Motion implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public Motion(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void addKey(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public int buildKeyFrames(float[]!, int[]!, int[]!);
-    method public void buildPath(float[]!, int);
-    method public void buildRect(float, float[]!, int);
-    method public String! getAnimateRelativeTo();
-    method public void getCenter(double, float[]!, float[]!);
-    method public float getCenterX();
-    method public float getCenterY();
-    method public void getDpDt(float, float, float, float[]!);
-    method public int getDrawPath();
-    method public float getFinalHeight();
-    method public float getFinalWidth();
-    method public float getFinalX();
-    method public float getFinalY();
-    method public int getId(String!);
-    method public androidx.constraintlayout.core.motion.MotionPaths! getKeyFrame(int);
-    method public int getKeyFrameInfo(int, int[]!);
-    method public int getKeyFramePositions(int[]!, float[]!);
-    method public float getMotionStagger();
-    method public float getStartHeight();
-    method public float getStartWidth();
-    method public float getStartX();
-    method public float getStartY();
-    method public int getTransformPivotTarget();
-    method public androidx.constraintlayout.core.motion.MotionWidget! getView();
-    method public boolean interpolate(androidx.constraintlayout.core.motion.MotionWidget!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-    method public void setDrawPath(int);
-    method public void setEnd(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void setIdString(String!);
-    method public void setPathMotionArc(int);
-    method public void setStaggerOffset(float);
-    method public void setStaggerScale(float);
-    method public void setStart(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void setStartState(androidx.constraintlayout.core.motion.utils.ViewState!, androidx.constraintlayout.core.motion.MotionWidget!, int, int, int);
-    method public void setTransformPivotTarget(int);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public void setView(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public void setup(int, int, float, long);
-    method public void setupRelative(androidx.constraintlayout.core.motion.Motion!);
-    field public static final int DRAW_PATH_AS_CONFIGURED = 4; // 0x4
-    field public static final int DRAW_PATH_BASIC = 1; // 0x1
-    field public static final int DRAW_PATH_CARTESIAN = 3; // 0x3
-    field public static final int DRAW_PATH_NONE = 0; // 0x0
-    field public static final int DRAW_PATH_RECTANGLE = 5; // 0x5
-    field public static final int DRAW_PATH_RELATIVE = 2; // 0x2
-    field public static final int DRAW_PATH_SCREEN = 6; // 0x6
-    field public static final int HORIZONTAL_PATH_X = 2; // 0x2
-    field public static final int HORIZONTAL_PATH_Y = 3; // 0x3
-    field public static final int PATH_PERCENT = 0; // 0x0
-    field public static final int PATH_PERPENDICULAR = 1; // 0x1
-    field public static final int ROTATION_LEFT = 2; // 0x2
-    field public static final int ROTATION_RIGHT = 1; // 0x1
-    field public static final int VERTICAL_PATH_X = 4; // 0x4
-    field public static final int VERTICAL_PATH_Y = 5; // 0x5
-    field public String! mId;
-  }
-
-  public class MotionPaths implements java.lang.Comparable<androidx.constraintlayout.core.motion.MotionPaths!> {
-    ctor public MotionPaths();
-    ctor public MotionPaths(int, int, androidx.constraintlayout.core.motion.key.MotionKeyPosition!, androidx.constraintlayout.core.motion.MotionPaths!, androidx.constraintlayout.core.motion.MotionPaths!);
-    method public void applyParameters(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public int compareTo(androidx.constraintlayout.core.motion.MotionPaths!);
-    method public void configureRelativeTo(androidx.constraintlayout.core.motion.Motion!);
-    method public void setupRelative(androidx.constraintlayout.core.motion.Motion!, androidx.constraintlayout.core.motion.MotionPaths!);
-    field public static final int CARTESIAN = 0; // 0x0
-    field public static final boolean DEBUG = false;
-    field public static final boolean OLD_WAY = false;
-    field public static final int PERPENDICULAR = 1; // 0x1
-    field public static final int SCREEN = 2; // 0x2
-    field public static final String TAG = "MotionPaths";
-    field public String! mId;
-  }
-
-  public class MotionWidget implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public MotionWidget();
-    ctor public MotionWidget(androidx.constraintlayout.core.state.WidgetFrame!);
-    method public androidx.constraintlayout.core.motion.MotionWidget! findViewById(int);
-    method public float getAlpha();
-    method public int getBottom();
-    method public androidx.constraintlayout.core.motion.CustomVariable! getCustomAttribute(String!);
-    method public java.util.Set<java.lang.String!>! getCustomAttributeNames();
-    method public int getHeight();
-    method public int getId(String!);
-    method public int getLeft();
-    method public String! getName();
-    method public androidx.constraintlayout.core.motion.MotionWidget! getParent();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public int getRight();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public int getTop();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public float getValueAttributes(int);
-    method public int getVisibility();
-    method public androidx.constraintlayout.core.state.WidgetFrame! getWidgetFrame();
-    method public int getWidth();
-    method public int getX();
-    method public int getY();
-    method public void layout(int, int, int, int);
-    method public void setBounds(int, int, int, int);
-    method public void setCustomAttribute(String!, int, boolean);
-    method public void setCustomAttribute(String!, int, float);
-    method public void setCustomAttribute(String!, int, int);
-    method public void setCustomAttribute(String!, int, String!);
-    method public void setInterpolatedValue(androidx.constraintlayout.core.motion.CustomAttribute!, float[]!);
-    method public void setPivotX(float);
-    method public void setPivotY(float);
-    method public void setRotationX(float);
-    method public void setRotationY(float);
-    method public void setRotationZ(float);
-    method public void setScaleX(float);
-    method public void setScaleY(float);
-    method public void setTranslationX(float);
-    method public void setTranslationY(float);
-    method public void setTranslationZ(float);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public boolean setValueAttributes(int, float);
-    method public boolean setValueMotion(int, float);
-    method public boolean setValueMotion(int, int);
-    method public boolean setValueMotion(int, String!);
-    method public void setVisibility(int);
-    method public void updateMotion(androidx.constraintlayout.core.motion.utils.TypedValues!);
-    field public static final int FILL_PARENT = -1; // 0xffffffff
-    field public static final int GONE_UNSET = -2147483648; // 0x80000000
-    field public static final int INVISIBLE = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int ROTATE_LEFT_OF_PORTRATE = 4; // 0x4
-    field public static final int ROTATE_NONE = 0; // 0x0
-    field public static final int ROTATE_PORTRATE_OF_LEFT = 2; // 0x2
-    field public static final int ROTATE_PORTRATE_OF_RIGHT = 1; // 0x1
-    field public static final int ROTATE_RIGHT_OF_PORTRATE = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int VISIBILITY_MODE_IGNORE = 1; // 0x1
-    field public static final int VISIBILITY_MODE_NORMAL = 0; // 0x0
-    field public static final int VISIBLE = 4; // 0x4
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public static class MotionWidget.Motion {
-    ctor public MotionWidget.Motion();
-    field public int mAnimateCircleAngleTo;
-    field public String! mAnimateRelativeTo;
-    field public int mDrawPath;
-    field public float mMotionStagger;
-    field public int mPathMotionArc;
-    field public float mPathRotate;
-    field public int mPolarRelativeTo;
-    field public int mQuantizeInterpolatorID;
-    field public String! mQuantizeInterpolatorString;
-    field public int mQuantizeInterpolatorType;
-    field public float mQuantizeMotionPhase;
-    field public int mQuantizeMotionSteps;
-    field public String! mTransitionEasing;
-  }
-
-  public static class MotionWidget.PropertySet {
-    ctor public MotionWidget.PropertySet();
-    field public float alpha;
-    field public float mProgress;
-    field public int mVisibilityMode;
-    field public int visibility;
-  }
-
-}
-
-package androidx.constraintlayout.core.motion.key {
-
-  public class MotionConstraintSet {
-    ctor public MotionConstraintSet();
-    field public static final int ROTATE_LEFT_OF_PORTRATE = 4; // 0x4
-    field public static final int ROTATE_NONE = 0; // 0x0
-    field public static final int ROTATE_PORTRATE_OF_LEFT = 2; // 0x2
-    field public static final int ROTATE_PORTRATE_OF_RIGHT = 1; // 0x1
-    field public static final int ROTATE_RIGHT_OF_PORTRATE = 3; // 0x3
-    field public String! mIdString;
-    field public int mRotate;
-  }
-
-  public abstract class MotionKey implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public MotionKey();
-    method public abstract void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public abstract androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public androidx.constraintlayout.core.motion.key.MotionKey! copy(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public abstract void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getFramePosition();
-    method public void setCustomAttribute(String!, int, boolean);
-    method public void setCustomAttribute(String!, int, float);
-    method public void setCustomAttribute(String!, int, int);
-    method public void setCustomAttribute(String!, int, String!);
-    method public void setFramePosition(int);
-    method public void setInterpolation(java.util.HashMap<java.lang.String!,java.lang.Integer!>!);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! setViewId(int);
-    field public static final String ALPHA = "alpha";
-    field public static final String CUSTOM = "CUSTOM";
-    field public static final String ELEVATION = "elevation";
-    field public static final String ROTATION = "rotationZ";
-    field public static final String ROTATION_X = "rotationX";
-    field public static final String SCALE_X = "scaleX";
-    field public static final String SCALE_Y = "scaleY";
-    field public static final String TRANSITION_PATH_ROTATE = "transitionPathRotate";
-    field public static final String TRANSLATION_X = "translationX";
-    field public static final String TRANSLATION_Y = "translationY";
-    field public static int UNSET;
-    field public static final String VISIBILITY = "visibility";
-    field public java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.CustomVariable!>! mCustom;
-    field public int mFramePosition;
-    field public int mType;
-  }
-
-  public class MotionKeyAttributes extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyAttributes();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getCurveFit();
-    method public int getId(String!);
-    method public void printAttributes();
-    field public static final int KEY_TYPE = 1; // 0x1
-  }
-
-  public class MotionKeyCycle extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyCycle();
-    method public void addCycleValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void dump();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    method public float getValue(String!);
-    method public void printAttributes();
-    field public static final int KEY_TYPE = 4; // 0x4
-    field public static final int SHAPE_BOUNCE = 6; // 0x6
-    field public static final int SHAPE_COS_WAVE = 5; // 0x5
-    field public static final int SHAPE_REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SHAPE_SAW_WAVE = 3; // 0x3
-    field public static final int SHAPE_SIN_WAVE = 0; // 0x0
-    field public static final int SHAPE_SQUARE_WAVE = 1; // 0x1
-    field public static final int SHAPE_TRIANGLE_WAVE = 2; // 0x2
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_PHASE = "wavePhase";
-    field public static final String WAVE_SHAPE = "waveShape";
-  }
-
-  public class MotionKeyPosition extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyPosition();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    method public boolean intersects(int, int, androidx.constraintlayout.core.motion.utils.FloatRect!, androidx.constraintlayout.core.motion.utils.FloatRect!, float, float);
-    method public void positionAttributes(androidx.constraintlayout.core.motion.MotionWidget!, androidx.constraintlayout.core.motion.utils.FloatRect!, androidx.constraintlayout.core.motion.utils.FloatRect!, float, float, String![]!, float[]!);
-    field protected static final float SELECTION_SLOPE = 20.0f;
-    field public static final int TYPE_CARTESIAN = 0; // 0x0
-    field public static final int TYPE_PATH = 1; // 0x1
-    field public static final int TYPE_SCREEN = 2; // 0x2
-    field public float mAltPercentX;
-    field public float mAltPercentY;
-    field public int mCurveFit;
-    field public int mDrawPath;
-    field public int mPathMotionArc;
-    field public float mPercentHeight;
-    field public float mPercentWidth;
-    field public float mPercentX;
-    field public float mPercentY;
-    field public int mPositionType;
-    field public String! mTransitionEasing;
-  }
-
-  public class MotionKeyTimeCycle extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyTimeCycle();
-    method public void addTimeValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public androidx.constraintlayout.core.motion.key.MotionKeyTimeCycle! copy(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    field public static final int KEY_TYPE = 3; // 0x3
-  }
-
-  public class MotionKeyTrigger extends androidx.constraintlayout.core.motion.key.MotionKey {
-    ctor public MotionKeyTrigger();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.core.motion.utils.SplineSet!>!);
-    method public androidx.constraintlayout.core.motion.key.MotionKey! clone();
-    method public void conditionallyFire(float, androidx.constraintlayout.core.motion.MotionWidget!);
-    method public androidx.constraintlayout.core.motion.key.MotionKeyTrigger! copy(androidx.constraintlayout.core.motion.key.MotionKey!);
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public int getId(String!);
-    field public static final String CROSS = "CROSS";
-    field public static final int KEY_TYPE = 5; // 0x5
-    field public static final String NEGATIVE_CROSS = "negativeCross";
-    field public static final String POSITIVE_CROSS = "positiveCross";
-    field public static final String POST_LAYOUT = "postLayout";
-    field public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
-    field public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
-    field public static final String TRIGGER_ID = "triggerID";
-    field public static final String TRIGGER_RECEIVER = "triggerReceiver";
-    field public static final String TRIGGER_SLACK = "triggerSlack";
-    field public static final int TYPE_CROSS = 312; // 0x138
-    field public static final int TYPE_NEGATIVE_CROSS = 310; // 0x136
-    field public static final int TYPE_POSITIVE_CROSS = 309; // 0x135
-    field public static final int TYPE_POST_LAYOUT = 304; // 0x130
-    field public static final int TYPE_TRIGGER_COLLISION_ID = 307; // 0x133
-    field public static final int TYPE_TRIGGER_COLLISION_VIEW = 306; // 0x132
-    field public static final int TYPE_TRIGGER_ID = 308; // 0x134
-    field public static final int TYPE_TRIGGER_RECEIVER = 311; // 0x137
-    field public static final int TYPE_TRIGGER_SLACK = 305; // 0x131
-    field public static final int TYPE_VIEW_TRANSITION_ON_CROSS = 301; // 0x12d
-    field public static final int TYPE_VIEW_TRANSITION_ON_NEGATIVE_CROSS = 303; // 0x12f
-    field public static final int TYPE_VIEW_TRANSITION_ON_POSITIVE_CROSS = 302; // 0x12e
-    field public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
-    field public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
-    field public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
-  }
-
-}
-
-package androidx.constraintlayout.core.motion.parse {
-
-  public class KeyParser {
-    ctor public KeyParser();
-    method public static void main(String![]!);
-    method public static androidx.constraintlayout.core.motion.utils.TypedBundle! parseAttributes(String!);
-  }
-
-}
-
-package androidx.constraintlayout.core.motion.utils {
-
-  public class ArcCurveFit extends androidx.constraintlayout.core.motion.utils.CurveFit {
-    ctor public ArcCurveFit(int[]!, double[]!, double[]![]!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getSlope(double, double[]!);
-    method public double getSlope(double, int);
-    method public double[]! getTimePoints();
-    field public static final int ARC_ABOVE = 5; // 0x5
-    field public static final int ARC_BELOW = 4; // 0x4
-    field public static final int ARC_START_FLIP = 3; // 0x3
-    field public static final int ARC_START_HORIZONTAL = 2; // 0x2
-    field public static final int ARC_START_LINEAR = 0; // 0x0
-    field public static final int ARC_START_VERTICAL = 1; // 0x1
-  }
-
-  public abstract class CurveFit {
-    ctor public CurveFit();
-    method public static androidx.constraintlayout.core.motion.utils.CurveFit! get(int, double[]!, double[]![]!);
-    method public static androidx.constraintlayout.core.motion.utils.CurveFit! getArc(int[]!, double[]!, double[]![]!);
-    method public abstract void getPos(double, double[]!);
-    method public abstract void getPos(double, float[]!);
-    method public abstract double getPos(double, int);
-    method public abstract void getSlope(double, double[]!);
-    method public abstract double getSlope(double, int);
-    method public abstract double[]! getTimePoints();
-    field public static final int CONSTANT = 2; // 0x2
-    field public static final int LINEAR = 1; // 0x1
-    field public static final int SPLINE = 0; // 0x0
-  }
-
-  public interface DifferentialInterpolator {
-    method public float getInterpolation(float);
-    method public float getVelocity();
-  }
-
-  public class Easing {
-    ctor public Easing();
-    method public double get(double);
-    method public double getDiff(double);
-    method public static androidx.constraintlayout.core.motion.utils.Easing! getInterpolator(String!);
-    field public static String![]! NAMED_EASING;
-  }
-
-  public class FloatRect {
-    ctor public FloatRect();
-    method public final float centerX();
-    method public final float centerY();
-    field public float bottom;
-    field public float left;
-    field public float right;
-    field public float top;
-  }
-
-  public class HyperSpline {
-    ctor public HyperSpline();
-    ctor public HyperSpline(double[]![]!);
-    method public double approxLength(androidx.constraintlayout.core.motion.utils.HyperSpline.Cubic![]!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getVelocity(double, double[]!);
-    method public void setup(double[]![]!);
-  }
-
-  public static class HyperSpline.Cubic {
-    ctor public HyperSpline.Cubic(double, double, double, double);
-    method public double eval(double);
-    method public double vel(double);
-  }
-
-  public class KeyCache {
-    ctor public KeyCache();
-    method public float getFloatValue(Object!, String!, int);
-    method public void setFloatValue(Object!, String!, int, float);
-  }
-
-  public abstract class KeyCycleOscillator {
-    ctor public KeyCycleOscillator();
-    method public float get(float);
-    method public androidx.constraintlayout.core.motion.utils.CurveFit! getCurveFit();
-    method public float getSlope(float);
-    method public static androidx.constraintlayout.core.motion.utils.KeyCycleOscillator! makeWidgetCycle(String!);
-    method protected void setCustom(Object!);
-    method public void setPoint(int, int, String!, int, float, float, float, float);
-    method public void setPoint(int, int, String!, int, float, float, float, float, Object!);
-    method public void setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float);
-    method public void setType(String!);
-    method public void setup(float);
-    method public boolean variesByPath();
-    field public int mVariesBy;
-  }
-
-  public static class KeyCycleOscillator.PathRotateSet extends androidx.constraintlayout.core.motion.utils.KeyCycleOscillator {
-    ctor public KeyCycleOscillator.PathRotateSet(String!);
-    method public void setPathRotate(androidx.constraintlayout.core.motion.MotionWidget!, float, double, double);
-  }
-
-  public class KeyFrameArray {
-    ctor public KeyFrameArray();
-  }
-
-  public static class KeyFrameArray.CustomArray {
-    ctor public KeyFrameArray.CustomArray();
-    method public void append(int, androidx.constraintlayout.core.motion.CustomAttribute!);
-    method public void clear();
-    method public void dump();
-    method public int keyAt(int);
-    method public void remove(int);
-    method public int size();
-    method public androidx.constraintlayout.core.motion.CustomAttribute! valueAt(int);
-  }
-
-  public static class KeyFrameArray.CustomVar {
-    ctor public KeyFrameArray.CustomVar();
-    method public void append(int, androidx.constraintlayout.core.motion.CustomVariable!);
-    method public void clear();
-    method public void dump();
-    method public int keyAt(int);
-    method public void remove(int);
-    method public int size();
-    method public androidx.constraintlayout.core.motion.CustomVariable! valueAt(int);
-  }
-
-  public class LinearCurveFit extends androidx.constraintlayout.core.motion.utils.CurveFit {
-    ctor public LinearCurveFit(double[]!, double[]![]!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getSlope(double, double[]!);
-    method public double getSlope(double, int);
-    method public double[]! getTimePoints();
-  }
-
-  public class MonotonicCurveFit extends androidx.constraintlayout.core.motion.utils.CurveFit {
-    ctor public MonotonicCurveFit(double[]!, double[]![]!);
-    method public static androidx.constraintlayout.core.motion.utils.MonotonicCurveFit! buildWave(String!);
-    method public void getPos(double, double[]!);
-    method public void getPos(double, float[]!);
-    method public double getPos(double, int);
-    method public void getSlope(double, double[]!);
-    method public double getSlope(double, int);
-    method public double[]! getTimePoints();
-  }
-
-  public class Oscillator {
-    ctor public Oscillator();
-    method public void addPoint(double, float);
-    method public double getSlope(double, double, double);
-    method public double getValue(double, double);
-    method public void normalize();
-    method public void setType(int, String!);
-    field public static final int BOUNCE = 6; // 0x6
-    field public static final int COS_WAVE = 5; // 0x5
-    field public static final int CUSTOM = 7; // 0x7
-    field public static final int REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SAW_WAVE = 3; // 0x3
-    field public static final int SIN_WAVE = 0; // 0x0
-    field public static final int SQUARE_WAVE = 1; // 0x1
-    field public static String! TAG;
-    field public static final int TRIANGLE_WAVE = 2; // 0x2
-  }
-
-  public class Rect {
-    ctor public Rect();
-    method public int height();
-    method public int width();
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public int top;
-  }
-
-  public class Schlick extends androidx.constraintlayout.core.motion.utils.Easing {
-  }
-
-  public abstract class SplineSet {
-    ctor public SplineSet();
-    method public float get(float);
-    method public androidx.constraintlayout.core.motion.utils.CurveFit! getCurveFit();
-    method public float getSlope(float);
-    method public static androidx.constraintlayout.core.motion.utils.SplineSet! makeCustomSpline(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomArray!);
-    method public static androidx.constraintlayout.core.motion.utils.SplineSet! makeCustomSplineSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomVar!);
-    method public static androidx.constraintlayout.core.motion.utils.SplineSet! makeSpline(String!, long);
-    method public void setPoint(int, float);
-    method public void setProperty(androidx.constraintlayout.core.motion.utils.TypedValues!, float);
-    method public void setType(String!);
-    method public void setup(int);
-    field protected androidx.constraintlayout.core.motion.utils.CurveFit! mCurveFit;
-    field protected int[]! mTimePoints;
-    field protected float[]! mValues;
-  }
-
-  public static class SplineSet.CustomSet extends androidx.constraintlayout.core.motion.utils.SplineSet {
-    ctor public SplineSet.CustomSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomArray!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomAttribute!);
-    method public void setProperty(androidx.constraintlayout.core.state.WidgetFrame!, float);
-  }
-
-  public static class SplineSet.CustomSpline extends androidx.constraintlayout.core.motion.utils.SplineSet {
-    ctor public SplineSet.CustomSpline(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomVar!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomVariable!);
-    method public void setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float);
-  }
-
-  public class SpringStopEngine implements androidx.constraintlayout.core.motion.utils.StopEngine {
-    ctor public SpringStopEngine();
-    method public String! debug(String!, float);
-    method public float getAcceleration();
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-    method public void springConfig(float, float, float, float, float, float, float, int);
-  }
-
-  public class StepCurve extends androidx.constraintlayout.core.motion.utils.Easing {
-  }
-
-  public interface StopEngine {
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-  }
-
-  public class StopLogicEngine implements androidx.constraintlayout.core.motion.utils.StopEngine {
-    ctor public StopLogicEngine();
-    method public void config(float, float, float, float, float, float);
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-  }
-
-  public static class StopLogicEngine.Decelerate implements androidx.constraintlayout.core.motion.utils.StopEngine {
-    ctor public StopLogicEngine.Decelerate();
-    method public void config(float, float, float);
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-  }
-
-  public abstract class TimeCycleSplineSet {
-    ctor public TimeCycleSplineSet();
-    method protected float calcWave(float);
-    method public androidx.constraintlayout.core.motion.utils.CurveFit! getCurveFit();
-    method public void setPoint(int, float, float, int, float);
-    method protected void setStartTime(long);
-    method public void setType(String!);
-    method public void setup(int);
-    field protected static final int CURVE_OFFSET = 2; // 0x2
-    field protected static final int CURVE_PERIOD = 1; // 0x1
-    field protected static final int CURVE_VALUE = 0; // 0x0
-    field protected float[]! mCache;
-    field protected boolean mContinue;
-    field protected int mCount;
-    field protected androidx.constraintlayout.core.motion.utils.CurveFit! mCurveFit;
-    field protected float mLastCycle;
-    field protected long mLastTime;
-    field protected int[]! mTimePoints;
-    field protected String! mType;
-    field protected float[]![]! mValues;
-    field protected int mWaveShape;
-    field protected static float sVal2PI;
-  }
-
-  public static class TimeCycleSplineSet.CustomSet extends androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet {
-    ctor public TimeCycleSplineSet.CustomSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomArray!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomAttribute!, float, int, float);
-    method public boolean setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  public static class TimeCycleSplineSet.CustomVarSet extends androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet {
-    ctor public TimeCycleSplineSet.CustomVarSet(String!, androidx.constraintlayout.core.motion.utils.KeyFrameArray.CustomVar!);
-    method public void setPoint(int, androidx.constraintlayout.core.motion.CustomVariable!, float, int, float);
-    method public boolean setProperty(androidx.constraintlayout.core.motion.MotionWidget!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  protected static class TimeCycleSplineSet.Sort {
-    ctor protected TimeCycleSplineSet.Sort();
-  }
-
-  public class TypedBundle {
-    ctor public TypedBundle();
-    method public void add(int, boolean);
-    method public void add(int, float);
-    method public void add(int, int);
-    method public void add(int, String!);
-    method public void addIfNotNull(int, String!);
-    method public void applyDelta(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void applyDelta(androidx.constraintlayout.core.motion.utils.TypedValues!);
-    method public void clear();
-    method public int getInteger(int);
-  }
-
-  public interface TypedValues {
-    method public int getId(String!);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    field public static final int BOOLEAN_MASK = 1; // 0x1
-    field public static final int FLOAT_MASK = 4; // 0x4
-    field public static final int INT_MASK = 2; // 0x2
-    field public static final int STRING_MASK = 8; // 0x8
-    field public static final String S_CUSTOM = "CUSTOM";
-    field public static final int TYPE_FRAME_POSITION = 100; // 0x64
-    field public static final int TYPE_TARGET = 101; // 0x65
-  }
-
-  public static interface TypedValues.AttributesType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyAttributes";
-    field public static final String S_ALPHA = "alpha";
-    field public static final String S_CURVE_FIT = "curveFit";
-    field public static final String S_CUSTOM = "CUSTOM";
-    field public static final String S_EASING = "easing";
-    field public static final String S_ELEVATION = "elevation";
-    field public static final String S_FRAME = "frame";
-    field public static final String S_PATH_ROTATE = "pathRotate";
-    field public static final String S_PIVOT_TARGET = "pivotTarget";
-    field public static final String S_PIVOT_X = "pivotX";
-    field public static final String S_PIVOT_Y = "pivotY";
-    field public static final String S_PROGRESS = "progress";
-    field public static final String S_ROTATION_X = "rotationX";
-    field public static final String S_ROTATION_Y = "rotationY";
-    field public static final String S_ROTATION_Z = "rotationZ";
-    field public static final String S_SCALE_X = "scaleX";
-    field public static final String S_SCALE_Y = "scaleY";
-    field public static final String S_TARGET = "target";
-    field public static final String S_TRANSLATION_X = "translationX";
-    field public static final String S_TRANSLATION_Y = "translationY";
-    field public static final String S_TRANSLATION_Z = "translationZ";
-    field public static final String S_VISIBILITY = "visibility";
-    field public static final int TYPE_ALPHA = 303; // 0x12f
-    field public static final int TYPE_CURVE_FIT = 301; // 0x12d
-    field public static final int TYPE_EASING = 317; // 0x13d
-    field public static final int TYPE_ELEVATION = 307; // 0x133
-    field public static final int TYPE_PATH_ROTATE = 316; // 0x13c
-    field public static final int TYPE_PIVOT_TARGET = 318; // 0x13e
-    field public static final int TYPE_PIVOT_X = 313; // 0x139
-    field public static final int TYPE_PIVOT_Y = 314; // 0x13a
-    field public static final int TYPE_PROGRESS = 315; // 0x13b
-    field public static final int TYPE_ROTATION_X = 308; // 0x134
-    field public static final int TYPE_ROTATION_Y = 309; // 0x135
-    field public static final int TYPE_ROTATION_Z = 310; // 0x136
-    field public static final int TYPE_SCALE_X = 311; // 0x137
-    field public static final int TYPE_SCALE_Y = 312; // 0x138
-    field public static final int TYPE_TRANSLATION_X = 304; // 0x130
-    field public static final int TYPE_TRANSLATION_Y = 305; // 0x131
-    field public static final int TYPE_TRANSLATION_Z = 306; // 0x132
-    field public static final int TYPE_VISIBILITY = 302; // 0x12e
-  }
-
-  public static interface TypedValues.Custom {
-    method public static int getId(String!);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "Custom";
-    field public static final String S_BOOLEAN = "boolean";
-    field public static final String S_COLOR = "color";
-    field public static final String S_DIMENSION = "dimension";
-    field public static final String S_FLOAT = "float";
-    field public static final String S_INT = "integer";
-    field public static final String S_REFERENCE = "reference";
-    field public static final String S_STRING = "string";
-    field public static final int TYPE_BOOLEAN = 904; // 0x388
-    field public static final int TYPE_COLOR = 902; // 0x386
-    field public static final int TYPE_DIMENSION = 905; // 0x389
-    field public static final int TYPE_FLOAT = 901; // 0x385
-    field public static final int TYPE_INT = 900; // 0x384
-    field public static final int TYPE_REFERENCE = 906; // 0x38a
-    field public static final int TYPE_STRING = 903; // 0x387
-  }
-
-  public static interface TypedValues.CycleType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyCycle";
-    field public static final String S_ALPHA = "alpha";
-    field public static final String S_CURVE_FIT = "curveFit";
-    field public static final String S_CUSTOM_WAVE_SHAPE = "customWave";
-    field public static final String S_EASING = "easing";
-    field public static final String S_ELEVATION = "elevation";
-    field public static final String S_PATH_ROTATE = "pathRotate";
-    field public static final String S_PIVOT_X = "pivotX";
-    field public static final String S_PIVOT_Y = "pivotY";
-    field public static final String S_PROGRESS = "progress";
-    field public static final String S_ROTATION_X = "rotationX";
-    field public static final String S_ROTATION_Y = "rotationY";
-    field public static final String S_ROTATION_Z = "rotationZ";
-    field public static final String S_SCALE_X = "scaleX";
-    field public static final String S_SCALE_Y = "scaleY";
-    field public static final String S_TRANSLATION_X = "translationX";
-    field public static final String S_TRANSLATION_Y = "translationY";
-    field public static final String S_TRANSLATION_Z = "translationZ";
-    field public static final String S_VISIBILITY = "visibility";
-    field public static final String S_WAVE_OFFSET = "offset";
-    field public static final String S_WAVE_PERIOD = "period";
-    field public static final String S_WAVE_PHASE = "phase";
-    field public static final String S_WAVE_SHAPE = "waveShape";
-    field public static final int TYPE_ALPHA = 403; // 0x193
-    field public static final int TYPE_CURVE_FIT = 401; // 0x191
-    field public static final int TYPE_CUSTOM_WAVE_SHAPE = 422; // 0x1a6
-    field public static final int TYPE_EASING = 420; // 0x1a4
-    field public static final int TYPE_ELEVATION = 307; // 0x133
-    field public static final int TYPE_PATH_ROTATE = 416; // 0x1a0
-    field public static final int TYPE_PIVOT_X = 313; // 0x139
-    field public static final int TYPE_PIVOT_Y = 314; // 0x13a
-    field public static final int TYPE_PROGRESS = 315; // 0x13b
-    field public static final int TYPE_ROTATION_X = 308; // 0x134
-    field public static final int TYPE_ROTATION_Y = 309; // 0x135
-    field public static final int TYPE_ROTATION_Z = 310; // 0x136
-    field public static final int TYPE_SCALE_X = 311; // 0x137
-    field public static final int TYPE_SCALE_Y = 312; // 0x138
-    field public static final int TYPE_TRANSLATION_X = 304; // 0x130
-    field public static final int TYPE_TRANSLATION_Y = 305; // 0x131
-    field public static final int TYPE_TRANSLATION_Z = 306; // 0x132
-    field public static final int TYPE_VISIBILITY = 402; // 0x192
-    field public static final int TYPE_WAVE_OFFSET = 424; // 0x1a8
-    field public static final int TYPE_WAVE_PERIOD = 423; // 0x1a7
-    field public static final int TYPE_WAVE_PHASE = 425; // 0x1a9
-    field public static final int TYPE_WAVE_SHAPE = 421; // 0x1a5
-  }
-
-  public static interface TypedValues.MotionScene {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "MotionScene";
-    field public static final String S_DEFAULT_DURATION = "defaultDuration";
-    field public static final String S_LAYOUT_DURING_TRANSITION = "layoutDuringTransition";
-    field public static final int TYPE_DEFAULT_DURATION = 600; // 0x258
-    field public static final int TYPE_LAYOUT_DURING_TRANSITION = 601; // 0x259
-  }
-
-  public static interface TypedValues.MotionType {
-    method public static int getId(String!);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "Motion";
-    field public static final String S_ANIMATE_CIRCLEANGLE_TO = "AnimateCircleAngleTo";
-    field public static final String S_ANIMATE_RELATIVE_TO = "AnimateRelativeTo";
-    field public static final String S_DRAW_PATH = "DrawPath";
-    field public static final String S_EASING = "TransitionEasing";
-    field public static final String S_PATHMOTION_ARC = "PathMotionArc";
-    field public static final String S_PATH_ROTATE = "PathRotate";
-    field public static final String S_POLAR_RELATIVETO = "PolarRelativeTo";
-    field public static final String S_QUANTIZE_INTERPOLATOR = "QuantizeInterpolator";
-    field public static final String S_QUANTIZE_INTERPOLATOR_ID = "QuantizeInterpolatorID";
-    field public static final String S_QUANTIZE_INTERPOLATOR_TYPE = "QuantizeInterpolatorType";
-    field public static final String S_QUANTIZE_MOTIONSTEPS = "QuantizeMotionSteps";
-    field public static final String S_QUANTIZE_MOTION_PHASE = "QuantizeMotionPhase";
-    field public static final String S_STAGGER = "Stagger";
-    field public static final int TYPE_ANIMATE_CIRCLEANGLE_TO = 606; // 0x25e
-    field public static final int TYPE_ANIMATE_RELATIVE_TO = 605; // 0x25d
-    field public static final int TYPE_DRAW_PATH = 608; // 0x260
-    field public static final int TYPE_EASING = 603; // 0x25b
-    field public static final int TYPE_PATHMOTION_ARC = 607; // 0x25f
-    field public static final int TYPE_PATH_ROTATE = 601; // 0x259
-    field public static final int TYPE_POLAR_RELATIVETO = 609; // 0x261
-    field public static final int TYPE_QUANTIZE_INTERPOLATOR = 604; // 0x25c
-    field public static final int TYPE_QUANTIZE_INTERPOLATOR_ID = 612; // 0x264
-    field public static final int TYPE_QUANTIZE_INTERPOLATOR_TYPE = 611; // 0x263
-    field public static final int TYPE_QUANTIZE_MOTIONSTEPS = 610; // 0x262
-    field public static final int TYPE_QUANTIZE_MOTION_PHASE = 602; // 0x25a
-    field public static final int TYPE_STAGGER = 600; // 0x258
-  }
-
-  public static interface TypedValues.OnSwipe {
-    field public static final String AUTOCOMPLETE_MODE = "autocompletemode";
-    field public static final String![]! AUTOCOMPLETE_MODE_ENUM;
-    field public static final String DRAG_DIRECTION = "dragdirection";
-    field public static final String DRAG_SCALE = "dragscale";
-    field public static final String DRAG_THRESHOLD = "dragthreshold";
-    field public static final String LIMIT_BOUNDS_TO = "limitboundsto";
-    field public static final String MAX_ACCELERATION = "maxacceleration";
-    field public static final String MAX_VELOCITY = "maxvelocity";
-    field public static final String MOVE_WHEN_SCROLLAT_TOP = "movewhenscrollattop";
-    field public static final String NESTED_SCROLL_FLAGS = "nestedscrollflags";
-    field public static final String![]! NESTED_SCROLL_FLAGS_ENUM;
-    field public static final String ON_TOUCH_UP = "ontouchup";
-    field public static final String![]! ON_TOUCH_UP_ENUM;
-    field public static final String ROTATION_CENTER_ID = "rotationcenterid";
-    field public static final String SPRINGS_TOP_THRESHOLD = "springstopthreshold";
-    field public static final String SPRING_BOUNDARY = "springboundary";
-    field public static final String![]! SPRING_BOUNDARY_ENUM;
-    field public static final String SPRING_DAMPING = "springdamping";
-    field public static final String SPRING_MASS = "springmass";
-    field public static final String SPRING_STIFFNESS = "springstiffness";
-    field public static final String TOUCH_ANCHOR_ID = "touchanchorid";
-    field public static final String TOUCH_ANCHOR_SIDE = "touchanchorside";
-    field public static final String TOUCH_REGION_ID = "touchregionid";
-  }
-
-  public static interface TypedValues.PositionType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyPosition";
-    field public static final String S_DRAWPATH = "drawPath";
-    field public static final String S_PERCENT_HEIGHT = "percentHeight";
-    field public static final String S_PERCENT_WIDTH = "percentWidth";
-    field public static final String S_PERCENT_X = "percentX";
-    field public static final String S_PERCENT_Y = "percentY";
-    field public static final String S_SIZE_PERCENT = "sizePercent";
-    field public static final String S_TRANSITION_EASING = "transitionEasing";
-    field public static final int TYPE_CURVE_FIT = 508; // 0x1fc
-    field public static final int TYPE_DRAWPATH = 502; // 0x1f6
-    field public static final int TYPE_PATH_MOTION_ARC = 509; // 0x1fd
-    field public static final int TYPE_PERCENT_HEIGHT = 504; // 0x1f8
-    field public static final int TYPE_PERCENT_WIDTH = 503; // 0x1f7
-    field public static final int TYPE_PERCENT_X = 506; // 0x1fa
-    field public static final int TYPE_PERCENT_Y = 507; // 0x1fb
-    field public static final int TYPE_POSITION_TYPE = 510; // 0x1fe
-    field public static final int TYPE_SIZE_PERCENT = 505; // 0x1f9
-    field public static final int TYPE_TRANSITION_EASING = 501; // 0x1f5
-  }
-
-  public static interface TypedValues.TransitionType {
-    method public static int getId(String!);
-    method public static int getType(int);
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "Transitions";
-    field public static final String S_AUTO_TRANSITION = "autoTransition";
-    field public static final String S_DURATION = "duration";
-    field public static final String S_FROM = "from";
-    field public static final String S_INTERPOLATOR = "motionInterpolator";
-    field public static final String S_PATH_MOTION_ARC = "pathMotionArc";
-    field public static final String S_STAGGERED = "staggered";
-    field public static final String S_TO = "to";
-    field public static final String S_TRANSITION_FLAGS = "transitionFlags";
-    field public static final int TYPE_AUTO_TRANSITION = 704; // 0x2c0
-    field public static final int TYPE_DURATION = 700; // 0x2bc
-    field public static final int TYPE_FROM = 701; // 0x2bd
-    field public static final int TYPE_INTERPOLATOR = 705; // 0x2c1
-    field public static final int TYPE_PATH_MOTION_ARC = 509; // 0x1fd
-    field public static final int TYPE_STAGGERED = 706; // 0x2c2
-    field public static final int TYPE_TO = 702; // 0x2be
-    field public static final int TYPE_TRANSITION_FLAGS = 707; // 0x2c3
-  }
-
-  public static interface TypedValues.TriggerType {
-    method public static int getId(String!);
-    field public static final String CROSS = "CROSS";
-    field public static final String![]! KEY_WORDS;
-    field public static final String NAME = "KeyTrigger";
-    field public static final String NEGATIVE_CROSS = "negativeCross";
-    field public static final String POSITIVE_CROSS = "positiveCross";
-    field public static final String POST_LAYOUT = "postLayout";
-    field public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
-    field public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
-    field public static final String TRIGGER_ID = "triggerID";
-    field public static final String TRIGGER_RECEIVER = "triggerReceiver";
-    field public static final String TRIGGER_SLACK = "triggerSlack";
-    field public static final int TYPE_CROSS = 312; // 0x138
-    field public static final int TYPE_NEGATIVE_CROSS = 310; // 0x136
-    field public static final int TYPE_POSITIVE_CROSS = 309; // 0x135
-    field public static final int TYPE_POST_LAYOUT = 304; // 0x130
-    field public static final int TYPE_TRIGGER_COLLISION_ID = 307; // 0x133
-    field public static final int TYPE_TRIGGER_COLLISION_VIEW = 306; // 0x132
-    field public static final int TYPE_TRIGGER_ID = 308; // 0x134
-    field public static final int TYPE_TRIGGER_RECEIVER = 311; // 0x137
-    field public static final int TYPE_TRIGGER_SLACK = 305; // 0x131
-    field public static final int TYPE_VIEW_TRANSITION_ON_CROSS = 301; // 0x12d
-    field public static final int TYPE_VIEW_TRANSITION_ON_NEGATIVE_CROSS = 303; // 0x12f
-    field public static final int TYPE_VIEW_TRANSITION_ON_POSITIVE_CROSS = 302; // 0x12e
-    field public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
-    field public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
-    field public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
-  }
-
-  public class Utils {
-    ctor public Utils();
-    method public int getInterpolatedColor(float[]!);
-    method public static void log(String!);
-    method public static void log(String!, String!);
-    method public static void logStack(String!, int);
-    method public static void loge(String!, String!);
-    method public static int rgbaTocColor(float, float, float, float);
-    method public static void setDebugHandle(androidx.constraintlayout.core.motion.utils.Utils.DebugHandle!);
-    method public static void socketSend(String!);
-  }
-
-  public static interface Utils.DebugHandle {
-    method public void message(String!);
-  }
-
-  public class VelocityMatrix {
-    ctor public VelocityMatrix();
-    method public void applyTransform(float, float, int, int, float[]!);
-    method public void clear();
-    method public void setRotationVelocity(androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, float);
-    method public void setRotationVelocity(androidx.constraintlayout.core.motion.utils.SplineSet!, float);
-    method public void setScaleVelocity(androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, float);
-    method public void setScaleVelocity(androidx.constraintlayout.core.motion.utils.SplineSet!, androidx.constraintlayout.core.motion.utils.SplineSet!, float);
-    method public void setTranslationVelocity(androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, androidx.constraintlayout.core.motion.utils.KeyCycleOscillator!, float);
-    method public void setTranslationVelocity(androidx.constraintlayout.core.motion.utils.SplineSet!, androidx.constraintlayout.core.motion.utils.SplineSet!, float);
-  }
-
-  public class ViewState {
-    ctor public ViewState();
-    method public void getState(androidx.constraintlayout.core.motion.MotionWidget!);
-    method public int height();
-    method public int width();
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public float rotation;
-    field public int top;
-  }
-
-}
-
-package androidx.constraintlayout.core.parser {
-
-  public class CLArray extends androidx.constraintlayout.core.parser.CLContainer {
-    ctor public CLArray(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-  }
-
-  public class CLContainer extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLContainer(char[]!);
-    method public void add(androidx.constraintlayout.core.parser.CLElement!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public void clear();
-    method public androidx.constraintlayout.core.parser.CLContainer clone();
-    method public androidx.constraintlayout.core.parser.CLElement! get(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLElement! get(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLArray! getArray(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLArray! getArray(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLArray! getArrayOrCreate(String!);
-    method public androidx.constraintlayout.core.parser.CLArray! getArrayOrNull(String!);
-    method public boolean getBoolean(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public boolean getBoolean(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public float getFloat(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public float getFloat(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public float getFloatOrNaN(String!);
-    method public int getInt(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public int getInt(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLObject! getObject(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLObject! getObject(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLObject! getObjectOrNull(String!);
-    method public androidx.constraintlayout.core.parser.CLElement! getOrNull(int);
-    method public androidx.constraintlayout.core.parser.CLElement! getOrNull(String!);
-    method public String! getString(int) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public String! getString(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public String! getStringOrNull(int);
-    method public String! getStringOrNull(String!);
-    method public boolean has(String!);
-    method public java.util.ArrayList<java.lang.String!>! names();
-    method public void put(String!, androidx.constraintlayout.core.parser.CLElement!);
-    method public void putNumber(String!, float);
-    method public void putString(String!, String!);
-    method public void remove(String!);
-    method public int size();
-  }
-
-  public class CLElement implements java.lang.Cloneable {
-    ctor public CLElement(char[]!);
-    method protected void addIndent(StringBuilder!, int);
-    method public androidx.constraintlayout.core.parser.CLElement clone();
-    method public String! content();
-    method public androidx.constraintlayout.core.parser.CLElement! getContainer();
-    method protected String! getDebugName();
-    method public long getEnd();
-    method public float getFloat();
-    method public int getInt();
-    method public int getLine();
-    method public long getStart();
-    method protected String! getStrClass();
-    method public boolean hasContent();
-    method public boolean isDone();
-    method public boolean isStarted();
-    method public boolean notStarted();
-    method public void setContainer(androidx.constraintlayout.core.parser.CLContainer!);
-    method public void setEnd(long);
-    method public void setLine(int);
-    method public void setStart(long);
-    method protected String! toFormattedJSON(int, int);
-    method protected String! toJSON();
-    field protected androidx.constraintlayout.core.parser.CLContainer! mContainer;
-    field protected long mEnd;
-    field protected long mStart;
-    field protected static int sBaseIndent;
-    field protected static int sMaxLine;
-  }
-
-  public class CLKey extends androidx.constraintlayout.core.parser.CLContainer {
-    ctor public CLKey(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(String!, androidx.constraintlayout.core.parser.CLElement!);
-    method public String! getName();
-    method public androidx.constraintlayout.core.parser.CLElement! getValue();
-    method public void set(androidx.constraintlayout.core.parser.CLElement!);
-  }
-
-  public class CLNumber extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLNumber(char[]!);
-    ctor public CLNumber(float);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public boolean isInt();
-    method public void putValue(float);
-  }
-
-  public class CLObject extends androidx.constraintlayout.core.parser.CLContainer implements java.lang.Iterable<androidx.constraintlayout.core.parser.CLKey!> {
-    ctor public CLObject(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLObject! allocate(char[]!);
-    method public androidx.constraintlayout.core.parser.CLObject clone();
-    method public java.util.Iterator<androidx.constraintlayout.core.parser.CLKey!>! iterator();
-    method public String! toFormattedJSON();
-    method public String! toFormattedJSON(int, int);
-    method public String! toJSON();
-  }
-
-  public class CLParser {
-    ctor public CLParser(String!);
-    method public androidx.constraintlayout.core.parser.CLObject! parse() throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static androidx.constraintlayout.core.parser.CLObject! parse(String!) throws androidx.constraintlayout.core.parser.CLParsingException;
-  }
-
-  public class CLParsingException extends java.lang.Exception {
-    ctor public CLParsingException(String!, androidx.constraintlayout.core.parser.CLElement!);
-    method public String! reason();
-  }
-
-  public class CLString extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLString(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLString from(String);
-  }
-
-  public class CLToken extends androidx.constraintlayout.core.parser.CLElement {
-    ctor public CLToken(char[]!);
-    method public static androidx.constraintlayout.core.parser.CLElement! allocate(char[]!);
-    method public boolean getBoolean() throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.parser.CLToken.Type! getType();
-    method public boolean isNull() throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public boolean validate(char, long);
-  }
-
-}
-
-package androidx.constraintlayout.core.state {
-
-  public class ConstraintReference implements androidx.constraintlayout.core.state.Reference {
-    ctor public ConstraintReference(androidx.constraintlayout.core.state.State!);
-    method public void addCustomColor(String!, int);
-    method public void addCustomFloat(String!, float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! alpha(float);
-    method public void apply();
-    method public void applyWidgetConstraints();
-    method public androidx.constraintlayout.core.state.ConstraintReference! baseline();
-    method public androidx.constraintlayout.core.state.ConstraintReference! baselineToBaseline(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! baselineToBottom(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! baselineToTop(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! bias(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! bottom();
-    method public androidx.constraintlayout.core.state.ConstraintReference! bottomToBottom(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! bottomToTop(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! centerHorizontally(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! centerVertically(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! circularConstraint(Object!, float, float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! clear();
-    method public androidx.constraintlayout.core.state.ConstraintReference! clearAll();
-    method public androidx.constraintlayout.core.state.ConstraintReference! clearHorizontal();
-    method public androidx.constraintlayout.core.state.ConstraintReference! clearVertical();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! createConstraintWidget();
-    method public androidx.constraintlayout.core.state.ConstraintReference! end();
-    method public androidx.constraintlayout.core.state.ConstraintReference! endToEnd(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! endToStart(Object!);
-    method public float getAlpha();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public androidx.constraintlayout.core.state.helpers.Facade! getFacade();
-    method public androidx.constraintlayout.core.state.Dimension! getHeight();
-    method public int getHorizontalChainStyle();
-    method public float getHorizontalChainWeight();
-    method public Object! getKey();
-    method public float getPivotX();
-    method public float getPivotY();
-    method public float getRotationX();
-    method public float getRotationY();
-    method public float getRotationZ();
-    method public float getScaleX();
-    method public float getScaleY();
-    method public String! getTag();
-    method public float getTranslationX();
-    method public float getTranslationY();
-    method public float getTranslationZ();
-    method public int getVerticalChainStyle(int);
-    method public float getVerticalChainWeight();
-    method public Object! getView();
-    method public androidx.constraintlayout.core.state.Dimension! getWidth();
-    method public androidx.constraintlayout.core.state.ConstraintReference! height(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! horizontalBias(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! left();
-    method public androidx.constraintlayout.core.state.ConstraintReference! leftToLeft(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! leftToRight(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! margin(int);
-    method public androidx.constraintlayout.core.state.ConstraintReference! margin(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! marginGone(int);
-    method public androidx.constraintlayout.core.state.ConstraintReference! marginGone(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! pivotX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! pivotY(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! right();
-    method public androidx.constraintlayout.core.state.ConstraintReference! rightToLeft(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rightToRight(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rotationX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rotationY(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! rotationZ(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! scaleX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! scaleY(float);
-    method public void setConstraintWidget(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setFacade(androidx.constraintlayout.core.state.helpers.Facade!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! setHeight(androidx.constraintlayout.core.state.Dimension!);
-    method public void setHorizontalChainStyle(int);
-    method public void setHorizontalChainWeight(float);
-    method public void setKey(Object!);
-    method public void setTag(String!);
-    method public void setVerticalChainStyle(int);
-    method public void setVerticalChainWeight(float);
-    method public void setView(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! setWidth(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! start();
-    method public androidx.constraintlayout.core.state.ConstraintReference! startToEnd(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! startToStart(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! top();
-    method public androidx.constraintlayout.core.state.ConstraintReference! topToBottom(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! topToTop(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! translationX(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! translationY(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! translationZ(float);
-    method public void validate() throws java.lang.Exception;
-    method public androidx.constraintlayout.core.state.ConstraintReference! verticalBias(float);
-    method public androidx.constraintlayout.core.state.ConstraintReference! visibility(int);
-    method public androidx.constraintlayout.core.state.ConstraintReference! width(androidx.constraintlayout.core.state.Dimension!);
-    field protected Object! mBottomToBottom;
-    field protected Object! mBottomToTop;
-    field protected Object! mEndToEnd;
-    field protected Object! mEndToStart;
-    field protected float mHorizontalBias;
-    field protected Object! mLeftToLeft;
-    field protected Object! mLeftToRight;
-    field protected int mMarginBottom;
-    field protected int mMarginBottomGone;
-    field protected int mMarginEnd;
-    field protected int mMarginEndGone;
-    field protected int mMarginLeft;
-    field protected int mMarginLeftGone;
-    field protected int mMarginRight;
-    field protected int mMarginRightGone;
-    field protected int mMarginStart;
-    field protected int mMarginStartGone;
-    field protected int mMarginTop;
-    field protected int mMarginTopGone;
-    field protected Object! mRightToLeft;
-    field protected Object! mRightToRight;
-    field protected Object! mStartToEnd;
-    field protected Object! mStartToStart;
-    field protected Object! mTopToBottom;
-    field protected Object! mTopToTop;
-    field protected float mVerticalBias;
-  }
-
-  public static interface ConstraintReference.ConstraintReferenceFactory {
-    method public androidx.constraintlayout.core.state.ConstraintReference! create(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class ConstraintSetParser {
-    ctor public ConstraintSetParser();
-    method public static void parseDesignElementsJSON(String!, java.util.ArrayList<androidx.constraintlayout.core.state.ConstraintSetParser.DesignElement!>!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static void parseJSON(String!, androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.state.ConstraintSetParser.LayoutVariables!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static void parseJSON(String!, androidx.constraintlayout.core.state.Transition!, int);
-    method public static void parseMotionSceneJSON(androidx.constraintlayout.core.state.CoreMotionScene!, String!);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static void populateState(androidx.constraintlayout.core.parser.CLObject, androidx.constraintlayout.core.state.State, androidx.constraintlayout.core.state.ConstraintSetParser.LayoutVariables) throws androidx.constraintlayout.core.parser.CLParsingException;
-  }
-
-  public static class ConstraintSetParser.DesignElement {
-    method public String! getId();
-    method public java.util.HashMap<java.lang.String!,java.lang.String!>! getParams();
-    method public String! getType();
-  }
-
-  public static class ConstraintSetParser.LayoutVariables {
-    ctor public ConstraintSetParser.LayoutVariables();
-    method public void putOverride(String!, float);
-  }
-
-  public enum ConstraintSetParser.MotionLayoutDebugFlags {
-    enum_constant public static final androidx.constraintlayout.core.state.ConstraintSetParser.MotionLayoutDebugFlags NONE;
-    enum_constant public static final androidx.constraintlayout.core.state.ConstraintSetParser.MotionLayoutDebugFlags SHOW_ALL;
-    enum_constant public static final androidx.constraintlayout.core.state.ConstraintSetParser.MotionLayoutDebugFlags UNKNOWN;
-  }
-
-  public interface CoreMotionScene {
-    method public String! getConstraintSet(int);
-    method public String! getConstraintSet(String!);
-    method public String! getTransition(String!);
-    method public void setConstraintSetContent(String!, String!);
-    method public void setDebugName(String!);
-    method public void setTransitionContent(String!, String!);
-  }
-
-  public interface CorePixelDp {
-    method public float toPixels(float);
-  }
-
-  public class Dimension {
-    method public void apply(androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-    method public static androidx.constraintlayout.core.state.Dimension! createFixed(int);
-    method public static androidx.constraintlayout.core.state.Dimension! createFixed(Object!);
-    method public static androidx.constraintlayout.core.state.Dimension! createParent();
-    method public static androidx.constraintlayout.core.state.Dimension! createPercent(Object!, float);
-    method public static androidx.constraintlayout.core.state.Dimension! createRatio(String!);
-    method public static androidx.constraintlayout.core.state.Dimension! createSpread();
-    method public static androidx.constraintlayout.core.state.Dimension! createSuggested(int);
-    method public static androidx.constraintlayout.core.state.Dimension! createSuggested(Object!);
-    method public static androidx.constraintlayout.core.state.Dimension! createWrap();
-    method public boolean equalsFixedValue(int);
-    method public androidx.constraintlayout.core.state.Dimension! fixed(int);
-    method public androidx.constraintlayout.core.state.Dimension! fixed(Object!);
-    method public androidx.constraintlayout.core.state.Dimension! max(int);
-    method public androidx.constraintlayout.core.state.Dimension! max(Object!);
-    method public androidx.constraintlayout.core.state.Dimension! min(int);
-    method public androidx.constraintlayout.core.state.Dimension! min(Object!);
-    method public androidx.constraintlayout.core.state.Dimension! percent(Object!, float);
-    method public androidx.constraintlayout.core.state.Dimension! ratio(String!);
-    method public androidx.constraintlayout.core.state.Dimension! suggested(int);
-    method public androidx.constraintlayout.core.state.Dimension! suggested(Object!);
-    field public static final Object! FIXED_DIMENSION;
-    field public static final Object! PARENT_DIMENSION;
-    field public static final Object! PERCENT_DIMENSION;
-    field public static final Object! RATIO_DIMENSION;
-    field public static final Object! SPREAD_DIMENSION;
-    field public static final Object! WRAP_DIMENSION;
-  }
-
-  public enum Dimension.Type {
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type FIXED;
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type MATCH_CONSTRAINT;
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type MATCH_PARENT;
-    enum_constant public static final androidx.constraintlayout.core.state.Dimension.Type WRAP;
-  }
-
-  public class HelperReference extends androidx.constraintlayout.core.state.ConstraintReference implements androidx.constraintlayout.core.state.helpers.Facade {
-    ctor public HelperReference(androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.state.State.Helper!);
-    method public androidx.constraintlayout.core.state.HelperReference! add(java.lang.Object!...!);
-    method public void applyBase();
-    method public androidx.constraintlayout.core.widgets.HelperWidget! getHelperWidget();
-    method public androidx.constraintlayout.core.state.State.Helper! getType();
-    method public void setHelperWidget(androidx.constraintlayout.core.widgets.HelperWidget!);
-    field protected final androidx.constraintlayout.core.state.State! mHelperState;
-    field protected java.util.ArrayList<java.lang.Object!>! mReferences;
-  }
-
-  public interface Interpolator {
-    method public float getInterpolation(float);
-  }
-
-  public interface Reference {
-    method public void apply();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public androidx.constraintlayout.core.state.helpers.Facade! getFacade();
-    method public Object! getKey();
-    method public void setConstraintWidget(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setKey(Object!);
-  }
-
-  public class Registry {
-    ctor public Registry();
-    method public String! currentContent(String!);
-    method public String! currentLayoutInformation(String!);
-    method public static androidx.constraintlayout.core.state.Registry! getInstance();
-    method public long getLastModified(String!);
-    method public java.util.Set<java.lang.String!>! getLayoutList();
-    method public void register(String!, androidx.constraintlayout.core.state.RegistryCallback!);
-    method public void setDrawDebug(String!, int);
-    method public void setLayoutInformationMode(String!, int);
-    method public void unregister(String!, androidx.constraintlayout.core.state.RegistryCallback!);
-    method public void updateContent(String!, String!);
-    method public void updateDimensions(String!, int, int);
-    method public void updateProgress(String!, float);
-  }
-
-  public interface RegistryCallback {
-    method public String! currentLayoutInformation();
-    method public String! currentMotionScene();
-    method public long getLastModified();
-    method public void onDimensions(int, int);
-    method public void onNewMotionScene(String!);
-    method public void onProgress(float);
-    method public void setDrawDebug(int);
-    method public void setLayoutInformationMode(int);
-  }
-
-  public class State {
-    ctor public State();
-    method public void apply(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    method public androidx.constraintlayout.core.state.helpers.BarrierReference! barrier(Object!, androidx.constraintlayout.core.state.State.Direction!);
-    method public void baselineNeededFor(Object!);
-    method public androidx.constraintlayout.core.state.helpers.AlignHorizontallyReference! centerHorizontally(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.AlignVerticallyReference! centerVertically(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! constraints(Object!);
-    method public int convertDimension(Object!);
-    method public androidx.constraintlayout.core.state.ConstraintReference! createConstraintReference(Object!);
-    method public void directMapping();
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getFlow(Object!, boolean);
-    method public androidx.constraintlayout.core.state.helpers.GridReference getGrid(Object, String);
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getHorizontalFlow();
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getHorizontalFlow(java.lang.Object!...!);
-    method public java.util.ArrayList<java.lang.String!>! getIdsForTag(String!);
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getVerticalFlow();
-    method public androidx.constraintlayout.core.state.helpers.FlowReference! getVerticalFlow(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! guideline(Object!, int);
-    method public androidx.constraintlayout.core.state.State! height(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.HelperReference! helper(Object!, androidx.constraintlayout.core.state.State.Helper!);
-    method public androidx.constraintlayout.core.state.helpers.HorizontalChainReference! horizontalChain();
-    method public androidx.constraintlayout.core.state.helpers.HorizontalChainReference! horizontalChain(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! horizontalGuideline(Object!);
-    method public boolean isBaselineNeeded(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method @Deprecated public boolean isLtr();
-    method public boolean isRtl();
-    method public void map(Object!, Object!);
-    method public void reset();
-    method public boolean sameFixedHeight(int);
-    method public boolean sameFixedWidth(int);
-    method public void setDpToPixel(androidx.constraintlayout.core.state.CorePixelDp!);
-    method public androidx.constraintlayout.core.state.State! setHeight(androidx.constraintlayout.core.state.Dimension!);
-    method @Deprecated public void setLtr(boolean);
-    method public void setRtl(boolean);
-    method public void setTag(String!, String!);
-    method public androidx.constraintlayout.core.state.State! setWidth(androidx.constraintlayout.core.state.Dimension!);
-    method public androidx.constraintlayout.core.state.helpers.VerticalChainReference! verticalChain();
-    method public androidx.constraintlayout.core.state.helpers.VerticalChainReference! verticalChain(java.lang.Object!...!);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! verticalGuideline(Object!);
-    method public androidx.constraintlayout.core.state.State! width(androidx.constraintlayout.core.state.Dimension!);
-    field public static final Integer PARENT;
-    field protected java.util.HashMap<java.lang.Object!,androidx.constraintlayout.core.state.HelperReference!>! mHelperReferences;
-    field public final androidx.constraintlayout.core.state.ConstraintReference! mParent;
-    field protected java.util.HashMap<java.lang.Object!,androidx.constraintlayout.core.state.Reference!>! mReferences;
-  }
-
-  public enum State.Chain {
-    method public static androidx.constraintlayout.core.state.State.Chain! getChainByString(String!);
-    method public static int getValueByString(String!);
-    enum_constant public static final androidx.constraintlayout.core.state.State.Chain PACKED;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Chain SPREAD;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Chain SPREAD_INSIDE;
-    field public static java.util.Map<java.lang.String!,androidx.constraintlayout.core.state.State.Chain!>! chainMap;
-    field public static java.util.Map<java.lang.String!,java.lang.Integer!>! valueMap;
-  }
-
-  public enum State.Constraint {
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BASELINE_TO_BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BASELINE_TO_BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BASELINE_TO_TOP;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BOTTOM_TO_BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BOTTOM_TO_BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint BOTTOM_TO_TOP;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint CENTER_HORIZONTALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint CENTER_VERTICALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint CIRCULAR_CONSTRAINT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint END_TO_END;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint END_TO_START;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint LEFT_TO_LEFT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint LEFT_TO_RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint RIGHT_TO_LEFT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint RIGHT_TO_RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint START_TO_END;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint START_TO_START;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint TOP_TO_BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint TOP_TO_BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Constraint TOP_TO_TOP;
-  }
-
-  public enum State.Direction {
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction END;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction LEFT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction START;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Direction TOP;
-  }
-
-  public enum State.Helper {
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper ALIGN_HORIZONTALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper ALIGN_VERTICALLY;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper BARRIER;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper COLUMN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper FLOW;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper GRID;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper HORIZONTAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper HORIZONTAL_FLOW;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper LAYER;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper ROW;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper VERTICAL_CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Helper VERTICAL_FLOW;
-  }
-
-  public enum State.Wrap {
-    method public static androidx.constraintlayout.core.state.State.Wrap! getChainByString(String!);
-    method public static int getValueByString(String!);
-    enum_constant public static final androidx.constraintlayout.core.state.State.Wrap ALIGNED;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Wrap CHAIN;
-    enum_constant public static final androidx.constraintlayout.core.state.State.Wrap NONE;
-    field public static java.util.Map<java.lang.String!,java.lang.Integer!>! valueMap;
-    field public static java.util.Map<java.lang.String!,androidx.constraintlayout.core.state.State.Wrap!>! wrapMap;
-  }
-
-  public class Transition implements androidx.constraintlayout.core.motion.utils.TypedValues {
-    ctor public Transition(androidx.constraintlayout.core.state.CorePixelDp);
-    method public void addCustomColor(int, String!, String!, int);
-    method public void addCustomFloat(int, String!, String!, float);
-    method public void addKeyAttribute(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void addKeyAttribute(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!, androidx.constraintlayout.core.motion.CustomVariable![]!);
-    method public void addKeyCycle(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void addKeyPosition(String!, androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void addKeyPosition(String!, int, int, float, float);
-    method public void calcStagger();
-    method public void clear();
-    method public boolean contains(String!);
-    method public float dragToProgress(float, int, int, float, float);
-    method public void fillKeyPositions(androidx.constraintlayout.core.state.WidgetFrame!, float[]!, float[]!, float[]!);
-    method public androidx.constraintlayout.core.state.Transition.KeyPosition! findNextPosition(String!, int);
-    method public androidx.constraintlayout.core.state.Transition.KeyPosition! findPreviousPosition(String!, int);
-    method public int getAutoTransition();
-    method public androidx.constraintlayout.core.state.WidgetFrame! getEnd(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getEnd(String!);
-    method public int getId(String!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getInterpolated(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getInterpolated(String!);
-    method public int getInterpolatedHeight();
-    method public int getInterpolatedWidth();
-    method public androidx.constraintlayout.core.state.Interpolator! getInterpolator();
-    method public static androidx.constraintlayout.core.state.Interpolator! getInterpolator(int, String!);
-    method public int getKeyFrames(String!, float[]!, int[]!, int[]!);
-    method public androidx.constraintlayout.core.motion.Motion! getMotion(String!);
-    method public int getNumberKeyPositions(androidx.constraintlayout.core.state.WidgetFrame!);
-    method public float[]! getPath(String!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getStart(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public androidx.constraintlayout.core.state.WidgetFrame! getStart(String!);
-    method public float getTouchUpProgress(long);
-    method public androidx.constraintlayout.core.state.Transition.WidgetState! getWidgetState(String!, androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-    method public boolean hasOnSwipe();
-    method public boolean hasPositionKeyframes();
-    method public void interpolate(int, int, float);
-    method public boolean isEmpty();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public boolean isFirstDownAccepted(float, float);
-    method public boolean isTouchNotDone(float);
-    method public void setTouchUp(float, long, float, float);
-    method public void setTransitionProperties(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public boolean setValue(int, boolean);
-    method public boolean setValue(int, float);
-    method public boolean setValue(int, int);
-    method public boolean setValue(int, String!);
-    method public void updateFrom(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int);
-    field public static final int END = 1; // 0x1
-    field public static final int INTERPOLATED = 2; // 0x2
-    field public static final int START = 0; // 0x0
-  }
-
-  public static class Transition.WidgetState {
-    ctor public Transition.WidgetState();
-    method public androidx.constraintlayout.core.state.WidgetFrame! getFrame(int);
-    method public void interpolate(int, int, float, androidx.constraintlayout.core.state.Transition!);
-    method public void setKeyAttribute(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void setKeyAttribute(androidx.constraintlayout.core.motion.utils.TypedBundle!, androidx.constraintlayout.core.motion.CustomVariable![]!);
-    method public void setKeyCycle(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void setKeyPosition(androidx.constraintlayout.core.motion.utils.TypedBundle!);
-    method public void setPathRelative(androidx.constraintlayout.core.state.Transition.WidgetState!);
-    method public void update(androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-  }
-
-  public class TransitionParser {
-    ctor public TransitionParser();
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static void parse(androidx.constraintlayout.core.parser.CLObject, androidx.constraintlayout.core.state.Transition) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method @Deprecated public static void parse(androidx.constraintlayout.core.parser.CLObject!, androidx.constraintlayout.core.state.Transition!, androidx.constraintlayout.core.state.CorePixelDp!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public static void parseKeyFrames(androidx.constraintlayout.core.parser.CLObject!, androidx.constraintlayout.core.state.Transition!) throws androidx.constraintlayout.core.parser.CLParsingException;
-  }
-
-  public class WidgetFrame {
-    ctor public WidgetFrame();
-    ctor public WidgetFrame(androidx.constraintlayout.core.state.WidgetFrame!);
-    ctor public WidgetFrame(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void addCustomColor(String!, int);
-    method public void addCustomFloat(String!, float);
-    method public float centerX();
-    method public float centerY();
-    method public boolean containsCustom(String);
-    method public androidx.constraintlayout.core.motion.CustomVariable! getCustomAttribute(String!);
-    method public java.util.Set<java.lang.String!>! getCustomAttributeNames();
-    method public int getCustomColor(String!);
-    method public float getCustomFloat(String!);
-    method public String! getId();
-    method public androidx.constraintlayout.core.motion.utils.TypedBundle! getMotionProperties();
-    method public int height();
-    method public static void interpolate(int, int, androidx.constraintlayout.core.state.WidgetFrame!, androidx.constraintlayout.core.state.WidgetFrame!, androidx.constraintlayout.core.state.WidgetFrame!, androidx.constraintlayout.core.state.Transition!, float);
-    method public boolean isDefaultTransform();
-    method public StringBuilder! serialize(StringBuilder!);
-    method public StringBuilder! serialize(StringBuilder!, boolean);
-    method public void setCustomAttribute(String!, int, boolean);
-    method public void setCustomAttribute(String!, int, float);
-    method public void setCustomAttribute(String!, int, int);
-    method public void setCustomAttribute(String!, int, String!);
-    method public void setCustomValue(androidx.constraintlayout.core.motion.CustomAttribute!, float[]!);
-    method public boolean setValue(String!, androidx.constraintlayout.core.parser.CLElement!) throws androidx.constraintlayout.core.parser.CLParsingException;
-    method public androidx.constraintlayout.core.state.WidgetFrame! update();
-    method public androidx.constraintlayout.core.state.WidgetFrame! update(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void updateAttributes(androidx.constraintlayout.core.state.WidgetFrame!);
-    method public int width();
-    field public float alpha;
-    field public int bottom;
-    field public float interpolatedPos;
-    field public int left;
-    field public String! name;
-    field public static float phone_orientation;
-    field public float pivotX;
-    field public float pivotY;
-    field public int right;
-    field public float rotationX;
-    field public float rotationY;
-    field public float rotationZ;
-    field public float scaleX;
-    field public float scaleY;
-    field public int top;
-    field public float translationX;
-    field public float translationY;
-    field public float translationZ;
-    field public int visibility;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget! widget;
-  }
-
-}
-
-package androidx.constraintlayout.core.state.helpers {
-
-  public class AlignHorizontallyReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public AlignHorizontallyReference(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class AlignVerticallyReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public AlignVerticallyReference(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class BarrierReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public BarrierReference(androidx.constraintlayout.core.state.State!);
-    method public void setBarrierDirection(androidx.constraintlayout.core.state.State.Direction!);
-  }
-
-  public class ChainReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public ChainReference(androidx.constraintlayout.core.state.State, androidx.constraintlayout.core.state.State.Helper);
-    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public void addChainElement(Object, float, float, float, float, float);
-    method public void addChainElement(String, float, float, float);
-    method public androidx.constraintlayout.core.state.helpers.ChainReference bias(float);
-    method public float getBias();
-    method protected float getPostMargin(String);
-    method protected float getPreMargin(String);
-    method public androidx.constraintlayout.core.state.State.Chain getStyle();
-    method protected float getWeight(String);
-    method public androidx.constraintlayout.core.state.helpers.ChainReference style(androidx.constraintlayout.core.state.State.Chain);
-    field protected float mBias;
-    field @Deprecated protected java.util.HashMap<java.lang.String!,java.lang.Float!> mMapPostMargin;
-    field @Deprecated protected java.util.HashMap<java.lang.String!,java.lang.Float!> mMapPreMargin;
-    field @Deprecated protected java.util.HashMap<java.lang.String!,java.lang.Float!> mMapWeights;
-    field protected androidx.constraintlayout.core.state.State.Chain mStyle;
-  }
-
-  public interface Facade {
-    method public void apply();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-  }
-
-  public class FlowReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public FlowReference(androidx.constraintlayout.core.state.State!, androidx.constraintlayout.core.state.State.Helper!);
-    method public void addFlowElement(String!, float, float, float);
-    method public float getFirstHorizontalBias();
-    method public int getFirstHorizontalStyle();
-    method public float getFirstVerticalBias();
-    method public int getFirstVerticalStyle();
-    method public int getHorizontalAlign();
-    method public float getHorizontalBias();
-    method public int getHorizontalGap();
-    method public int getHorizontalStyle();
-    method public float getLastHorizontalBias();
-    method public int getLastHorizontalStyle();
-    method public float getLastVerticalBias();
-    method public int getLastVerticalStyle();
-    method public int getMaxElementsWrap();
-    method public int getOrientation();
-    method public int getPaddingBottom();
-    method public int getPaddingLeft();
-    method public int getPaddingRight();
-    method public int getPaddingTop();
-    method protected float getPostMargin(String!);
-    method protected float getPreMargin(String!);
-    method public int getVerticalAlign();
-    method public float getVerticalBias();
-    method public int getVerticalGap();
-    method public int getVerticalStyle();
-    method protected float getWeight(String!);
-    method public int getWrapMode();
-    method public void setFirstHorizontalBias(float);
-    method public void setFirstHorizontalStyle(int);
-    method public void setFirstVerticalBias(float);
-    method public void setFirstVerticalStyle(int);
-    method public void setHorizontalAlign(int);
-    method public void setHorizontalGap(int);
-    method public void setHorizontalStyle(int);
-    method public void setLastHorizontalBias(float);
-    method public void setLastHorizontalStyle(int);
-    method public void setLastVerticalBias(float);
-    method public void setLastVerticalStyle(int);
-    method public void setMaxElementsWrap(int);
-    method public void setOrientation(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingLeft(int);
-    method public void setPaddingRight(int);
-    method public void setPaddingTop(int);
-    method public void setVerticalAlign(int);
-    method public void setVerticalGap(int);
-    method public void setVerticalStyle(int);
-    method public void setWrapMode(int);
-    field protected float mFirstHorizontalBias;
-    field protected int mFirstHorizontalStyle;
-    field protected float mFirstVerticalBias;
-    field protected int mFirstVerticalStyle;
-    field protected androidx.constraintlayout.core.widgets.Flow! mFlow;
-    field protected int mHorizontalAlign;
-    field protected int mHorizontalGap;
-    field protected int mHorizontalStyle;
-    field protected float mLastHorizontalBias;
-    field protected int mLastHorizontalStyle;
-    field protected float mLastVerticalBias;
-    field protected int mLastVerticalStyle;
-    field protected java.util.HashMap<java.lang.String!,java.lang.Float!>! mMapPostMargin;
-    field protected java.util.HashMap<java.lang.String!,java.lang.Float!>! mMapPreMargin;
-    field protected java.util.HashMap<java.lang.String!,java.lang.Float!>! mMapWeights;
-    field protected int mMaxElementsWrap;
-    field protected int mOrientation;
-    field protected int mPaddingBottom;
-    field protected int mPaddingLeft;
-    field protected int mPaddingRight;
-    field protected int mPaddingTop;
-    field protected int mVerticalAlign;
-    field protected int mVerticalGap;
-    field protected int mVerticalStyle;
-    field protected int mWrapMode;
-  }
-
-  public class GridReference extends androidx.constraintlayout.core.state.HelperReference {
-    ctor public GridReference(androidx.constraintlayout.core.state.State, androidx.constraintlayout.core.state.State.Helper);
-    method public String? getColumnWeights();
-    method public int getColumnsSet();
-    method public int getFlags();
-    method public float getHorizontalGaps();
-    method public int getOrientation();
-    method public int getPaddingBottom();
-    method public int getPaddingEnd();
-    method public int getPaddingStart();
-    method public int getPaddingTop();
-    method public String? getRowWeights();
-    method public int getRowsSet();
-    method public String? getSkips();
-    method public String? getSpans();
-    method public float getVerticalGaps();
-    method public void setColumnWeights(String);
-    method public void setColumnsSet(int);
-    method public void setFlags(int);
-    method public void setFlags(String);
-    method public void setHorizontalGaps(float);
-    method public void setOrientation(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingEnd(int);
-    method public void setPaddingStart(int);
-    method public void setPaddingTop(int);
-    method public void setRowWeights(String);
-    method public void setRowsSet(int);
-    method public void setSkips(String);
-    method public void setSpans(String);
-    method public void setVerticalGaps(float);
-  }
-
-  public class GuidelineReference implements androidx.constraintlayout.core.state.helpers.Facade androidx.constraintlayout.core.state.Reference {
-    ctor public GuidelineReference(androidx.constraintlayout.core.state.State!);
-    method public void apply();
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! end(Object!);
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public androidx.constraintlayout.core.state.helpers.Facade! getFacade();
-    method public Object! getKey();
-    method public int getOrientation();
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! percent(float);
-    method public void setConstraintWidget(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setKey(Object!);
-    method public void setOrientation(int);
-    method public androidx.constraintlayout.core.state.helpers.GuidelineReference! start(Object!);
-  }
-
-  public class HorizontalChainReference extends androidx.constraintlayout.core.state.helpers.ChainReference {
-    ctor public HorizontalChainReference(androidx.constraintlayout.core.state.State!);
-  }
-
-  public class VerticalChainReference extends androidx.constraintlayout.core.state.helpers.ChainReference {
-    ctor public VerticalChainReference(androidx.constraintlayout.core.state.State!);
-  }
-
-}
-
-package androidx.constraintlayout.core.utils {
-
-  public class GridCore extends androidx.constraintlayout.core.widgets.VirtualLayout {
-    ctor public GridCore();
-    ctor public GridCore(int, int);
-    method public String? getColumnWeights();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidgetContainer? getContainer();
-    method public int getFlags();
-    method public float getHorizontalGaps();
-    method public int getOrientation();
-    method public String? getRowWeights();
-    method public float getVerticalGaps();
-    method public void setColumnWeights(String);
-    method public void setColumns(int);
-    method public void setContainer(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer);
-    method public void setFlags(int);
-    method public void setHorizontalGaps(float);
-    method public void setOrientation(int);
-    method public void setRowWeights(String);
-    method public void setRows(int);
-    method public void setSkips(String);
-    method public void setSpans(CharSequence);
-    method public void setVerticalGaps(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int SPANS_RESPECT_WIDGET_ORDER = 2; // 0x2
-    field public static final int SUB_GRID_BY_COL_ROW = 1; // 0x1
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public class GridEngine {
-    ctor public GridEngine();
-    ctor public GridEngine(int, int);
-    ctor public GridEngine(int, int, int);
-    method public int bottomOfWidget(int);
-    method public int leftOfWidget(int);
-    method public int rightOfWidget(int);
-    method public void setColumns(int);
-    method public void setNumWidgets(int);
-    method public void setOrientation(int);
-    method public void setRows(int);
-    method public void setSkips(String!);
-    method public void setSpans(CharSequence!);
-    method public void setup();
-    method public int topOfWidget(int);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-}
-
-package androidx.constraintlayout.core.widgets {
-
-  public class Barrier extends androidx.constraintlayout.core.widgets.HelperWidget {
-    ctor public Barrier();
-    ctor public Barrier(String!);
-    method public boolean allSolved();
-    method @Deprecated public boolean allowsGoneWidget();
-    method public boolean getAllowsGoneWidget();
-    method public int getBarrierType();
-    method public int getMargin();
-    method public int getOrientation();
-    method protected void markWidgets();
-    method public void setAllowsGoneWidget(boolean);
-    method public void setBarrierType(int);
-    method public void setMargin(int);
-    field public static final int BOTTOM = 3; // 0x3
-    field public static final int LEFT = 0; // 0x0
-    field public static final int RIGHT = 1; // 0x1
-    field public static final int TOP = 2; // 0x2
-  }
-
-  public class Chain {
-    ctor public Chain();
-    method public static void applyChainConstraints(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.LinearSystem!, java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>!, int);
-    field public static final boolean USE_CHAIN_OPTIMIZATION = false;
-  }
-
-  public class ChainHead {
-    ctor public ChainHead(androidx.constraintlayout.core.widgets.ConstraintWidget!, int, boolean);
-    method public void define();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getFirst();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getFirstMatchConstraintWidget();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getFirstVisibleWidget();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getHead();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getLast();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getLastMatchConstraintWidget();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getLastVisibleWidget();
-    method public float getTotalWeight();
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mFirst;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mFirstMatchConstraintWidget;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mFirstVisibleWidget;
-    field protected boolean mHasComplexMatchWeights;
-    field protected boolean mHasDefinedWeights;
-    field protected boolean mHasRatio;
-    field protected boolean mHasUndefinedWeights;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mHead;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mLast;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mLastMatchConstraintWidget;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget! mLastVisibleWidget;
-    field protected float mTotalWeight;
-    field protected java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>! mWeightedMatchConstraintsWidgets;
-    field protected int mWidgetsCount;
-    field protected int mWidgetsMatchCount;
-  }
-
-  public class ConstraintAnchor {
-    ctor public ConstraintAnchor(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!);
-    method public boolean connect(androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method public boolean connect(androidx.constraintlayout.core.widgets.ConstraintAnchor!, int, int, boolean);
-    method public void copyFrom(androidx.constraintlayout.core.widgets.ConstraintAnchor!, java.util.HashMap<androidx.constraintlayout.core.widgets.ConstraintWidget!,androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void findDependents(int, java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public java.util.HashSet<androidx.constraintlayout.core.widgets.ConstraintAnchor!>! getDependents();
-    method public int getFinalValue();
-    method public int getMargin();
-    method public final androidx.constraintlayout.core.widgets.ConstraintAnchor! getOpposite();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getOwner();
-    method public androidx.constraintlayout.core.SolverVariable! getSolverVariable();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor! getTarget();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor.Type! getType();
-    method public boolean hasCenteredDependents();
-    method public boolean hasDependents();
-    method public boolean hasFinalValue();
-    method public boolean isConnected();
-    method public boolean isConnectionAllowed(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public boolean isConnectionAllowed(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public boolean isSideAnchor();
-    method public boolean isSimilarDimensionConnection(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public boolean isValidConnection(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public boolean isVerticalAnchor();
-    method public void reset();
-    method public void resetFinalResolution();
-    method public void resetSolverVariable(androidx.constraintlayout.core.Cache!);
-    method public void setFinalValue(int);
-    method public void setGoneMargin(int);
-    method public void setMargin(int);
-    field public int mMargin;
-    field public final androidx.constraintlayout.core.widgets.ConstraintWidget! mOwner;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mTarget;
-    field public final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type! mType;
-  }
-
-  public enum ConstraintAnchor.Type {
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type BASELINE;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type BOTTOM;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type CENTER;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type CENTER_X;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type CENTER_Y;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type LEFT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type NONE;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type RIGHT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintAnchor.Type TOP;
-  }
-
-  public class ConstraintWidget {
-    ctor public ConstraintWidget();
-    ctor public ConstraintWidget(int, int);
-    ctor public ConstraintWidget(int, int, int, int);
-    ctor public ConstraintWidget(String!);
-    ctor public ConstraintWidget(String!, int, int);
-    ctor public ConstraintWidget(String!, int, int, int, int);
-    method public void addChildrenToSolverByDependency(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.LinearSystem!, java.util.HashSet<androidx.constraintlayout.core.widgets.ConstraintWidget!>!, int, boolean);
-    method public void addToSolver(androidx.constraintlayout.core.LinearSystem!, boolean);
-    method public boolean allowedInBarrier();
-    method public void connect(androidx.constraintlayout.core.widgets.ConstraintAnchor!, androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method public void connect(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!);
-    method public void connect(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, int);
-    method public void connectCircularConstraint(androidx.constraintlayout.core.widgets.ConstraintWidget!, float, int);
-    method public void copy(androidx.constraintlayout.core.widgets.ConstraintWidget!, java.util.HashMap<androidx.constraintlayout.core.widgets.ConstraintWidget!,androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void createObjectVariables(androidx.constraintlayout.core.LinearSystem!);
-    method public void ensureMeasureRequested();
-    method public void ensureWidgetRuns();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor! getAnchor(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!);
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintAnchor!>! getAnchors();
-    method public int getBaselineDistance();
-    method public float getBiasPercent(int);
-    method public int getBottom();
-    method public Object! getCompanionWidget();
-    method public int getContainerItemSkip();
-    method public String! getDebugName();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! getDimensionBehaviour(int);
-    method public float getDimensionRatio();
-    method public int getDimensionRatioSide();
-    method public boolean getHasBaseline();
-    method public int getHeight();
-    method public float getHorizontalBiasPercent();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getHorizontalChainControlWidget();
-    method public int getHorizontalChainStyle();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! getHorizontalDimensionBehaviour();
-    method public int getHorizontalMargin();
-    method public int getLastHorizontalMeasureSpec();
-    method public int getLastVerticalMeasureSpec();
-    method public int getLeft();
-    method public int getLength(int);
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public int getMinHeight();
-    method public int getMinWidth();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getNextChainMember(int);
-    method public int getOptimizerWrapHeight();
-    method public int getOptimizerWrapWidth();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getParent();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getPreviousChainMember(int);
-    method public int getRight();
-    method protected int getRootX();
-    method protected int getRootY();
-    method public androidx.constraintlayout.core.widgets.analyzer.WidgetRun! getRun(int);
-    method public void getSceneString(StringBuilder!);
-    method public int getTop();
-    method public String! getType();
-    method public float getVerticalBiasPercent();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getVerticalChainControlWidget();
-    method public int getVerticalChainStyle();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! getVerticalDimensionBehaviour();
-    method public int getVerticalMargin();
-    method public int getVisibility();
-    method public int getWidth();
-    method public int getWrapBehaviorInParent();
-    method public int getX();
-    method public int getY();
-    method public boolean hasBaseline();
-    method public boolean hasDanglingDimension(int);
-    method public boolean hasDependencies();
-    method public boolean hasDimensionOverride();
-    method public boolean hasResolvedTargets(int, int);
-    method public void immediateConnect(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, int, int);
-    method public boolean isAnimated();
-    method public boolean isHeightWrapContent();
-    method public boolean isHorizontalSolvingPassDone();
-    method public boolean isInBarrier(int);
-    method public boolean isInHorizontalChain();
-    method public boolean isInPlaceholder();
-    method public boolean isInVerticalChain();
-    method public boolean isInVirtualLayout();
-    method public boolean isMeasureRequested();
-    method public boolean isResolvedHorizontally();
-    method public boolean isResolvedVertically();
-    method public boolean isRoot();
-    method public boolean isSpreadHeight();
-    method public boolean isSpreadWidth();
-    method public boolean isVerticalSolvingPassDone();
-    method public boolean isWidthWrapContent();
-    method public void markHorizontalSolvingPassDone();
-    method public void markVerticalSolvingPassDone();
-    method public boolean oppositeDimensionDependsOn(int);
-    method public boolean oppositeDimensionsTied();
-    method public void reset();
-    method public void resetAllConstraints();
-    method public void resetAnchor(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public void resetAnchors();
-    method public void resetFinalResolution();
-    method public void resetSolverVariables(androidx.constraintlayout.core.Cache!);
-    method public void resetSolvingPassFlag();
-    method public StringBuilder! serialize(StringBuilder!);
-    method public void setAnimated(boolean);
-    method public void setBaselineDistance(int);
-    method public void setCompanionWidget(Object!);
-    method public void setContainerItemSkip(int);
-    method public void setDebugName(String!);
-    method public void setDebugSolverName(androidx.constraintlayout.core.LinearSystem!, String!);
-    method public void setDimension(int, int);
-    method public void setDimensionRatio(float, int);
-    method public void setDimensionRatio(String!);
-    method public void setFinalBaseline(int);
-    method public void setFinalFrame(int, int, int, int, int, int);
-    method public void setFinalHorizontal(int, int);
-    method public void setFinalLeft(int);
-    method public void setFinalTop(int);
-    method public void setFinalVertical(int, int);
-    method public void setFrame(int, int, int);
-    method public void setFrame(int, int, int, int);
-    method public void setGoneMargin(androidx.constraintlayout.core.widgets.ConstraintAnchor.Type!, int);
-    method public void setHasBaseline(boolean);
-    method public void setHeight(int);
-    method public void setHeightWrapContent(boolean);
-    method public void setHorizontalBiasPercent(float);
-    method public void setHorizontalChainStyle(int);
-    method public void setHorizontalDimension(int, int);
-    method public void setHorizontalDimensionBehaviour(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-    method public void setHorizontalMatchStyle(int, int, int, float);
-    method public void setHorizontalWeight(float);
-    method protected void setInBarrier(int, boolean);
-    method public void setInPlaceholder(boolean);
-    method public void setInVirtualLayout(boolean);
-    method public void setLastMeasureSpec(int, int);
-    method public void setLength(int, int);
-    method public void setMaxHeight(int);
-    method public void setMaxWidth(int);
-    method public void setMeasureRequested(boolean);
-    method public void setMinHeight(int);
-    method public void setMinWidth(int);
-    method public void setOffset(int, int);
-    method public void setOrigin(int, int);
-    method public void setParent(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void setType(String!);
-    method public void setVerticalBiasPercent(float);
-    method public void setVerticalChainStyle(int);
-    method public void setVerticalDimension(int, int);
-    method public void setVerticalDimensionBehaviour(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-    method public void setVerticalMatchStyle(int, int, int, float);
-    method public void setVerticalWeight(float);
-    method public void setVisibility(int);
-    method public void setWidth(int);
-    method public void setWidthWrapContent(boolean);
-    method public void setWrapBehaviorInParent(int);
-    method public void setX(int);
-    method public void setY(int);
-    method public void setupDimensionRatio(boolean, boolean, boolean, boolean);
-    method public void updateFromRuns(boolean, boolean);
-    method public void updateFromSolver(androidx.constraintlayout.core.LinearSystem!, boolean);
-    field public static final int ANCHOR_BASELINE = 4; // 0x4
-    field public static final int ANCHOR_BOTTOM = 3; // 0x3
-    field public static final int ANCHOR_LEFT = 0; // 0x0
-    field public static final int ANCHOR_RIGHT = 1; // 0x1
-    field public static final int ANCHOR_TOP = 2; // 0x2
-    field public static final int BOTH = 2; // 0x2
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static float DEFAULT_BIAS;
-    field protected static final int DIRECT = 2; // 0x2
-    field public static final int GONE = 8; // 0x8
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int INVISIBLE = 4; // 0x4
-    field public static final int MATCH_CONSTRAINT_PERCENT = 2; // 0x2
-    field public static final int MATCH_CONSTRAINT_RATIO = 3; // 0x3
-    field public static final int MATCH_CONSTRAINT_RATIO_RESOLVED = 4; // 0x4
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field protected static final int SOLVER = 1; // 0x1
-    field public static final int UNKNOWN = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int VISIBLE = 0; // 0x0
-    field public static final int WRAP_BEHAVIOR_HORIZONTAL_ONLY = 1; // 0x1
-    field public static final int WRAP_BEHAVIOR_INCLUDED = 0; // 0x0
-    field public static final int WRAP_BEHAVIOR_SKIPPED = 3; // 0x3
-    field public static final int WRAP_BEHAVIOR_VERTICAL_ONLY = 2; // 0x2
-    field public androidx.constraintlayout.core.state.WidgetFrame! frame;
-    field public androidx.constraintlayout.core.widgets.analyzer.ChainRun! horizontalChainRun;
-    field public int horizontalGroup;
-    field public boolean[]! isTerminalWidget;
-    field protected java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintAnchor!>! mAnchors;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mBaseline;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mBottom;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mCenter;
-    field public float mCircleConstraintAngle;
-    field public float mDimensionRatio;
-    field protected int mDimensionRatioSide;
-    field public int mHorizontalResolution;
-    field public androidx.constraintlayout.core.widgets.analyzer.HorizontalWidgetRun! mHorizontalRun;
-    field public boolean mIsHeightWrapContent;
-    field public boolean mIsWidthWrapContent;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mLeft;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor![]! mListAnchors;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour![]! mListDimensionBehaviors;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget![]! mListNextMatchConstraintsWidget;
-    field public int mMatchConstraintDefaultHeight;
-    field public int mMatchConstraintDefaultWidth;
-    field public int mMatchConstraintMaxHeight;
-    field public int mMatchConstraintMaxWidth;
-    field public int mMatchConstraintMinHeight;
-    field public int mMatchConstraintMinWidth;
-    field public float mMatchConstraintPercentHeight;
-    field public float mMatchConstraintPercentWidth;
-    field protected int mMinHeight;
-    field protected int mMinWidth;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget![]! mNextChainWidget;
-    field protected int mOffsetX;
-    field protected int mOffsetY;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget! mParent;
-    field public int[]! mResolvedMatchConstraintDefault;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mRight;
-    field public androidx.constraintlayout.core.widgets.ConstraintAnchor! mTop;
-    field public int mVerticalResolution;
-    field public androidx.constraintlayout.core.widgets.analyzer.VerticalWidgetRun! mVerticalRun;
-    field public float[]! mWeight;
-    field protected int mX;
-    field protected int mY;
-    field public boolean measured;
-    field public androidx.constraintlayout.core.widgets.analyzer.WidgetRun![]! run;
-    field public String! stringId;
-    field public androidx.constraintlayout.core.widgets.analyzer.ChainRun! verticalChainRun;
-    field public int verticalGroup;
-  }
-
-  public enum ConstraintWidget.DimensionBehaviour {
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour FIXED;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour MATCH_CONSTRAINT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour MATCH_PARENT;
-    enum_constant public static final androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour WRAP_CONTENT;
-  }
-
-  public class ConstraintWidgetContainer extends androidx.constraintlayout.core.widgets.WidgetContainer {
-    ctor public ConstraintWidgetContainer();
-    ctor public ConstraintWidgetContainer(int, int);
-    ctor public ConstraintWidgetContainer(int, int, int, int);
-    ctor public ConstraintWidgetContainer(String!, int, int);
-    method public boolean addChildrenToSolver(androidx.constraintlayout.core.LinearSystem!);
-    method public void addHorizontalWrapMaxVariable(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public void addHorizontalWrapMinVariable(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method public void defineTerminalWidgets();
-    method public boolean directMeasure(boolean);
-    method public boolean directMeasureSetup(boolean);
-    method public boolean directMeasureWithOrientation(boolean, int);
-    method public void fillMetrics(androidx.constraintlayout.core.Metrics!);
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.Guideline!>! getHorizontalGuidelines();
-    method public androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer! getMeasurer();
-    method public int getOptimizationLevel();
-    method public androidx.constraintlayout.core.LinearSystem! getSystem();
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.Guideline!>! getVerticalGuidelines();
-    method public boolean handlesInternalConstraints();
-    method public void invalidateGraph();
-    method public void invalidateMeasures();
-    method public boolean isHeightMeasuredTooSmall();
-    method public boolean isRtl();
-    method public boolean isWidthMeasuredTooSmall();
-    method public static boolean measure(int, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure!, int);
-    method public long measure(int, int, int, int, int, int, int, int, int);
-    method public boolean optimizeFor(int);
-    method public void setMeasurer(androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-    method public void setOptimizationLevel(int);
-    method public void setPadding(int, int, int, int);
-    method public void setPass(int);
-    method public void setRtl(boolean);
-    method public boolean updateChildrenFromSolver(androidx.constraintlayout.core.LinearSystem!, boolean[]!);
-    method public void updateHierarchy();
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyGraph! mDependencyGraph;
-    field public boolean mGroupsWrapOptimized;
-    field public int mHorizontalChainsSize;
-    field public boolean mHorizontalWrapOptimized;
-    field public androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure! mMeasure;
-    field protected androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer! mMeasurer;
-    field public androidx.constraintlayout.core.Metrics! mMetrics;
-    field public boolean mSkipSolver;
-    field protected androidx.constraintlayout.core.LinearSystem! mSystem;
-    field public int mVerticalChainsSize;
-    field public boolean mVerticalWrapOptimized;
-    field public int mWrapFixedHeight;
-    field public int mWrapFixedWidth;
-  }
-
-  public class Flow extends androidx.constraintlayout.core.widgets.VirtualLayout {
-    ctor public Flow();
-    method public float getMaxElementsWrap();
-    method public void setFirstHorizontalBias(float);
-    method public void setFirstHorizontalStyle(int);
-    method public void setFirstVerticalBias(float);
-    method public void setFirstVerticalStyle(int);
-    method public void setHorizontalAlign(int);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalGap(int);
-    method public void setHorizontalStyle(int);
-    method public void setLastHorizontalBias(float);
-    method public void setLastHorizontalStyle(int);
-    method public void setLastVerticalBias(float);
-    method public void setLastVerticalStyle(int);
-    method public void setMaxElementsWrap(int);
-    method public void setOrientation(int);
-    method public void setVerticalAlign(int);
-    method public void setVerticalBias(float);
-    method public void setVerticalGap(int);
-    method public void setVerticalStyle(int);
-    method public void setWrapMode(int);
-    field public static final int HORIZONTAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int HORIZONTAL_ALIGN_END = 1; // 0x1
-    field public static final int HORIZONTAL_ALIGN_START = 0; // 0x0
-    field public static final int VERTICAL_ALIGN_BASELINE = 3; // 0x3
-    field public static final int VERTICAL_ALIGN_BOTTOM = 1; // 0x1
-    field public static final int VERTICAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int VERTICAL_ALIGN_TOP = 0; // 0x0
-    field public static final int WRAP_ALIGNED = 2; // 0x2
-    field public static final int WRAP_CHAIN = 1; // 0x1
-    field public static final int WRAP_CHAIN_NEW = 3; // 0x3
-    field public static final int WRAP_NONE = 0; // 0x0
-  }
-
-  public class Guideline extends androidx.constraintlayout.core.widgets.ConstraintWidget {
-    ctor public Guideline();
-    method public void cyclePosition();
-    method public androidx.constraintlayout.core.widgets.ConstraintAnchor! getAnchor();
-    method public int getMinimumPosition();
-    method public int getOrientation();
-    method public int getRelativeBegin();
-    method public int getRelativeBehaviour();
-    method public int getRelativeEnd();
-    method public float getRelativePercent();
-    method public boolean isPercent();
-    method public void setFinalValue(int);
-    method public void setGuideBegin(int);
-    method public void setGuideEnd(int);
-    method public void setGuidePercent(float);
-    method public void setGuidePercent(int);
-    method public void setMinimumPosition(int);
-    method public void setOrientation(int);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int RELATIVE_BEGIN = 1; // 0x1
-    field public static final int RELATIVE_END = 2; // 0x2
-    field public static final int RELATIVE_PERCENT = 0; // 0x0
-    field public static final int RELATIVE_UNKNOWN = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field protected boolean mGuidelineUseRtl;
-    field protected int mRelativeBegin;
-    field protected int mRelativeEnd;
-    field protected float mRelativePercent;
-  }
-
-  public interface Helper {
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void removeAllIds();
-    method public void updateConstraints(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-  }
-
-  public class HelperWidget extends androidx.constraintlayout.core.widgets.ConstraintWidget implements androidx.constraintlayout.core.widgets.Helper {
-    ctor public HelperWidget();
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void addDependents(java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!, int, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public int findGroupInDependents(int);
-    method public void removeAllIds();
-    method public void updateConstraints(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget![]! mWidgets;
-    field public int mWidgetsCount;
-  }
-
-  public class Optimizer {
-    ctor public Optimizer();
-    method public static final boolean enabled(int, int);
-    field public static final int OPTIMIZATION_BARRIER = 2; // 0x2
-    field public static final int OPTIMIZATION_CACHE_MEASURES = 256; // 0x100
-    field public static final int OPTIMIZATION_CHAIN = 4; // 0x4
-    field public static final int OPTIMIZATION_DEPENDENCY_ORDERING = 512; // 0x200
-    field public static final int OPTIMIZATION_DIMENSIONS = 8; // 0x8
-    field public static final int OPTIMIZATION_DIRECT = 1; // 0x1
-    field public static final int OPTIMIZATION_GRAPH = 64; // 0x40
-    field public static final int OPTIMIZATION_GRAPH_WRAP = 128; // 0x80
-    field public static final int OPTIMIZATION_GROUPING = 1024; // 0x400
-    field public static final int OPTIMIZATION_GROUPS = 32; // 0x20
-    field public static final int OPTIMIZATION_NONE = 0; // 0x0
-    field public static final int OPTIMIZATION_RATIO = 16; // 0x10
-    field public static final int OPTIMIZATION_STANDARD = 257; // 0x101
-  }
-
-  public class Placeholder extends androidx.constraintlayout.core.widgets.VirtualLayout {
-    ctor public Placeholder();
-  }
-
-  public class Rectangle {
-    ctor public Rectangle();
-    method public boolean contains(int, int);
-    method public int getCenterX();
-    method public int getCenterY();
-    method public void setBounds(int, int, int, int);
-    field public int height;
-    field public int width;
-    field public int x;
-    field public int y;
-  }
-
-  public class VirtualLayout extends androidx.constraintlayout.core.widgets.HelperWidget {
-    ctor public VirtualLayout();
-    method public void applyRtl(boolean);
-    method public void captureWidgets();
-    method public boolean contains(java.util.HashSet<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public int getMeasuredHeight();
-    method public int getMeasuredWidth();
-    method public int getPaddingBottom();
-    method public int getPaddingLeft();
-    method public int getPaddingRight();
-    method public int getPaddingTop();
-    method protected void measure(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, int, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, int);
-    method public void measure(int, int, int, int);
-    method protected boolean measureChildren();
-    method public boolean needSolverPass();
-    method protected void needsCallbackFromSolver(boolean);
-    method public void setMeasure(int, int);
-    method public void setPadding(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingEnd(int);
-    method public void setPaddingLeft(int);
-    method public void setPaddingRight(int);
-    method public void setPaddingStart(int);
-    method public void setPaddingTop(int);
-    field protected androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure! mMeasure;
-  }
-
-  public class WidgetContainer extends androidx.constraintlayout.core.widgets.ConstraintWidget {
-    ctor public WidgetContainer();
-    ctor public WidgetContainer(int, int);
-    ctor public WidgetContainer(int, int, int, int);
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void add(androidx.constraintlayout.core.widgets.ConstraintWidget!...!);
-    method public java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>! getChildren();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidgetContainer! getRootConstraintContainer();
-    method public void layout();
-    method public void remove(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void removeAllChildren();
-    field public java.util.ArrayList<androidx.constraintlayout.core.widgets.ConstraintWidget!>! mChildren;
-  }
-
-}
-
-package androidx.constraintlayout.core.widgets.analyzer {
-
-  public class BasicMeasure {
-    ctor public BasicMeasure(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    method public long solverMeasure(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int, int, int, int, int, int, int, int, int);
-    method public void updateHierarchy(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    field public static final int AT_MOST = -2147483648; // 0x80000000
-    field public static final int EXACTLY = 1073741824; // 0x40000000
-    field public static final int FIXED = -3; // 0xfffffffd
-    field public static final int MATCH_PARENT = -1; // 0xffffffff
-    field public static final int UNSPECIFIED = 0; // 0x0
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public static class BasicMeasure.Measure {
-    ctor public BasicMeasure.Measure();
-    field public static int SELF_DIMENSIONS;
-    field public static int TRY_GIVEN_DIMENSIONS;
-    field public static int USE_GIVEN_DIMENSIONS;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! horizontalBehavior;
-    field public int horizontalDimension;
-    field public int measureStrategy;
-    field public int measuredBaseline;
-    field public boolean measuredHasBaseline;
-    field public int measuredHeight;
-    field public boolean measuredNeedsSolverPass;
-    field public int measuredWidth;
-    field public androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! verticalBehavior;
-    field public int verticalDimension;
-  }
-
-  public static interface BasicMeasure.Measurer {
-    method public void didMeasures();
-    method public void measure(androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measure!);
-  }
-
-  public class ChainRun extends androidx.constraintlayout.core.widgets.analyzer.WidgetRun {
-    ctor public ChainRun(androidx.constraintlayout.core.widgets.ConstraintWidget!, int);
-    method public void applyToWidget();
-  }
-
-  public interface Dependency {
-    method public void update(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-  }
-
-  public class DependencyGraph {
-    ctor public DependencyGraph(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!);
-    method public void buildGraph();
-    method public void buildGraph(java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetRun!>!);
-    method public void defineTerminalWidgets(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-    method public boolean directMeasure(boolean);
-    method public boolean directMeasureSetup(boolean);
-    method public boolean directMeasureWithOrientation(boolean, int);
-    method public void invalidateGraph();
-    method public void invalidateMeasures();
-    method public void measureWidgets();
-    method public void setMeasurer(androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-  }
-
-  public class DependencyNode implements androidx.constraintlayout.core.widgets.analyzer.Dependency {
-    ctor public DependencyNode(androidx.constraintlayout.core.widgets.analyzer.WidgetRun!);
-    method public void addDependency(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method public void clear();
-    method public String! name();
-    method public void resolve(int);
-    method public void update(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    field public boolean delegateToWidgetRun;
-    field public boolean readyToSolve;
-    field public boolean resolved;
-    field public androidx.constraintlayout.core.widgets.analyzer.Dependency! updateDelegate;
-    field public int value;
-  }
-
-  public class Direct {
-    ctor public Direct();
-    method public static String! ls(int);
-    method public static boolean solveChain(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.LinearSystem!, int, int, androidx.constraintlayout.core.widgets.ChainHead!, boolean, boolean, boolean);
-    method public static void solvingPass(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-  }
-
-  public class Grouping {
-    ctor public Grouping();
-    method public static androidx.constraintlayout.core.widgets.analyzer.WidgetGroup! findDependents(androidx.constraintlayout.core.widgets.ConstraintWidget!, int, java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public static boolean simpleSolvingPass(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.Measurer!);
-    method public static boolean validInGroup(androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!, androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour!);
-  }
-
-  public class HorizontalWidgetRun extends androidx.constraintlayout.core.widgets.analyzer.WidgetRun {
-    ctor public HorizontalWidgetRun(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void applyToWidget();
-  }
-
-  public class VerticalWidgetRun extends androidx.constraintlayout.core.widgets.analyzer.WidgetRun {
-    ctor public VerticalWidgetRun(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void applyToWidget();
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyNode! baseline;
-  }
-
-  public class WidgetGroup {
-    ctor public WidgetGroup(int);
-    method public boolean add(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method public void apply();
-    method public void cleanup(java.util.ArrayList<androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!>!);
-    method public void clear();
-    method public int getId();
-    method public int getOrientation();
-    method public boolean intersectWith(androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public boolean isAuthoritative();
-    method public int measureWrap(androidx.constraintlayout.core.LinearSystem!, int);
-    method public void moveTo(int, androidx.constraintlayout.core.widgets.analyzer.WidgetGroup!);
-    method public void setAuthoritative(boolean);
-    method public void setOrientation(int);
-    method public int size();
-  }
-
-  public abstract class WidgetRun implements androidx.constraintlayout.core.widgets.analyzer.Dependency {
-    ctor public WidgetRun(androidx.constraintlayout.core.widgets.ConstraintWidget!);
-    method protected final void addTarget(androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, int);
-    method protected final void addTarget(androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, androidx.constraintlayout.core.widgets.analyzer.DependencyNode!, int, androidx.constraintlayout.core.widgets.analyzer.DimensionDependency!);
-    method protected final int getLimitedDimension(int, int);
-    method protected final androidx.constraintlayout.core.widgets.analyzer.DependencyNode! getTarget(androidx.constraintlayout.core.widgets.ConstraintAnchor!);
-    method protected final androidx.constraintlayout.core.widgets.analyzer.DependencyNode! getTarget(androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method public long getWrapDimension();
-    method public boolean isCenterConnection();
-    method public boolean isDimensionResolved();
-    method public boolean isResolved();
-    method public void update(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method protected void updateRunCenter(androidx.constraintlayout.core.widgets.analyzer.Dependency!, androidx.constraintlayout.core.widgets.ConstraintAnchor!, androidx.constraintlayout.core.widgets.ConstraintAnchor!, int);
-    method protected void updateRunEnd(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method protected void updateRunStart(androidx.constraintlayout.core.widgets.analyzer.Dependency!);
-    method public long wrapSize(int);
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyNode! end;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour! mDimensionBehavior;
-    field protected androidx.constraintlayout.core.widgets.analyzer.WidgetRun.RunType! mRunType;
-    field public int matchConstraintsType;
-    field public int orientation;
-    field public androidx.constraintlayout.core.widgets.analyzer.DependencyNode! start;
-  }
-
-}
-
diff --git a/constraintlayout/constraintlayout/api/2.2.0-beta01.txt b/constraintlayout/constraintlayout/api/2.2.0-beta01.txt
deleted file mode 100644
index 2d187a8..0000000
--- a/constraintlayout/constraintlayout/api/2.2.0-beta01.txt
+++ /dev/null
@@ -1,1714 +0,0 @@
-// Signature format: 4.0
-package androidx.constraintlayout.helper.widget {
-
-  public class Carousel extends androidx.constraintlayout.motion.widget.MotionHelper {
-    ctor public Carousel(android.content.Context!);
-    ctor public Carousel(android.content.Context!, android.util.AttributeSet!);
-    ctor public Carousel(android.content.Context!, android.util.AttributeSet!, int);
-    method public int getCount();
-    method public int getCurrentIndex();
-    method public boolean isInfinite();
-    method public void jumpToIndex(int);
-    method public void refresh();
-    method public void setAdapter(androidx.constraintlayout.helper.widget.Carousel.Adapter!);
-    method public void setInfinite(boolean);
-    method public void transitionToIndex(int, int);
-    field public static final int TOUCH_UP_CARRY_ON = 2; // 0x2
-    field public static final int TOUCH_UP_IMMEDIATE_STOP = 1; // 0x1
-  }
-
-  public static interface Carousel.Adapter {
-    method public int count();
-    method public void onNewItem(int);
-    method public void populate(android.view.View!, int);
-  }
-
-  public class CircularFlow extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public CircularFlow(android.content.Context!);
-    ctor public CircularFlow(android.content.Context!, android.util.AttributeSet!);
-    ctor public CircularFlow(android.content.Context!, android.util.AttributeSet!, int);
-    method public void addViewToCircularFlow(android.view.View!, int, float);
-    method public float[]! getAngles();
-    method public int[]! getRadius();
-    method public boolean isUpdatable(android.view.View!);
-    method public void setDefaultAngle(float);
-    method public void setDefaultRadius(int);
-    method public void updateAngle(android.view.View!, float);
-    method public void updateRadius(android.view.View!, int);
-    method public void updateReference(android.view.View!, int, float);
-  }
-
-  public class Flow extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public Flow(android.content.Context!);
-    ctor public Flow(android.content.Context!, android.util.AttributeSet!);
-    ctor public Flow(android.content.Context!, android.util.AttributeSet!, int);
-    method public void setFirstHorizontalBias(float);
-    method public void setFirstHorizontalStyle(int);
-    method public void setFirstVerticalBias(float);
-    method public void setFirstVerticalStyle(int);
-    method public void setHorizontalAlign(int);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalGap(int);
-    method public void setHorizontalStyle(int);
-    method public void setLastHorizontalBias(float);
-    method public void setLastHorizontalStyle(int);
-    method public void setLastVerticalBias(float);
-    method public void setLastVerticalStyle(int);
-    method public void setMaxElementsWrap(int);
-    method public void setOrientation(int);
-    method public void setPadding(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingLeft(int);
-    method public void setPaddingRight(int);
-    method public void setPaddingTop(int);
-    method public void setVerticalAlign(int);
-    method public void setVerticalBias(float);
-    method public void setVerticalGap(int);
-    method public void setVerticalStyle(int);
-    method public void setWrapMode(int);
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int HORIZONTAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int HORIZONTAL_ALIGN_END = 1; // 0x1
-    field public static final int HORIZONTAL_ALIGN_START = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int VERTICAL_ALIGN_BASELINE = 3; // 0x3
-    field public static final int VERTICAL_ALIGN_BOTTOM = 1; // 0x1
-    field public static final int VERTICAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int VERTICAL_ALIGN_TOP = 0; // 0x0
-    field public static final int WRAP_ALIGNED = 2; // 0x2
-    field public static final int WRAP_CHAIN = 1; // 0x1
-    field public static final int WRAP_NONE = 0; // 0x0
-  }
-
-  public class Grid extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public Grid(android.content.Context!);
-    ctor public Grid(android.content.Context!, android.util.AttributeSet!);
-    ctor public Grid(android.content.Context!, android.util.AttributeSet!, int);
-    method public String! getColumnWeights();
-    method public int getColumns();
-    method public float getHorizontalGaps();
-    method public int getOrientation();
-    method public String! getRowWeights();
-    method public int getRows();
-    method public String! getSkips();
-    method public String! getSpans();
-    method public float getVerticalGaps();
-    method public void setColumnWeights(String!);
-    method public void setColumns(int);
-    method public void setHorizontalGaps(float);
-    method public void setOrientation(int);
-    method public void setRowWeights(String!);
-    method public void setRows(int);
-    method public void setSkips(String!);
-    method public void setSpans(CharSequence!);
-    method public void setVerticalGaps(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public class Layer extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public Layer(android.content.Context!);
-    ctor public Layer(android.content.Context!, android.util.AttributeSet!);
-    ctor public Layer(android.content.Context!, android.util.AttributeSet!, int);
-    method protected void calcCenters();
-    field protected float mComputedCenterX;
-    field protected float mComputedCenterY;
-    field protected float mComputedMaxX;
-    field protected float mComputedMaxY;
-    field protected float mComputedMinX;
-    field protected float mComputedMinY;
-  }
-
-  public class MotionEffect extends androidx.constraintlayout.motion.widget.MotionHelper {
-    ctor public MotionEffect(android.content.Context!);
-    ctor public MotionEffect(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionEffect(android.content.Context!, android.util.AttributeSet!, int);
-    field public static final int AUTO = -1; // 0xffffffff
-    field public static final int EAST = 2; // 0x2
-    field public static final int NORTH = 0; // 0x0
-    field public static final int SOUTH = 1; // 0x1
-    field public static final String TAG = "FadeMove";
-    field public static final int WEST = 3; // 0x3
-  }
-
-  public class MotionPlaceholder extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public MotionPlaceholder(android.content.Context!);
-    ctor public MotionPlaceholder(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionPlaceholder(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public MotionPlaceholder(android.content.Context!, android.util.AttributeSet!, int, int);
-  }
-
-}
-
-package androidx.constraintlayout.motion.utils {
-
-  public class CustomSupport {
-    ctor public CustomSupport();
-    method public static void setInterpolatedValue(androidx.constraintlayout.widget.ConstraintAttribute!, android.view.View!, float[]!);
-  }
-
-  public class StopLogic extends androidx.constraintlayout.motion.widget.MotionInterpolator {
-    ctor public StopLogic();
-    method public void config(float, float, float, float, float, float);
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-    method public void springConfig(float, float, float, float, float, float, float, int);
-  }
-
-  public abstract class ViewOscillator extends androidx.constraintlayout.core.motion.utils.KeyCycleOscillator {
-    ctor public ViewOscillator();
-    method public static androidx.constraintlayout.motion.utils.ViewOscillator! makeSpline(String!);
-    method public abstract void setProperty(android.view.View!, float);
-  }
-
-  public static class ViewOscillator.PathRotateSet extends androidx.constraintlayout.motion.utils.ViewOscillator {
-    ctor public ViewOscillator.PathRotateSet();
-    method public void setPathRotate(android.view.View!, float, double, double);
-    method public void setProperty(android.view.View!, float);
-  }
-
-  public abstract class ViewSpline extends androidx.constraintlayout.core.motion.utils.SplineSet {
-    ctor public ViewSpline();
-    method public static androidx.constraintlayout.motion.utils.ViewSpline! makeCustomSpline(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public static androidx.constraintlayout.motion.utils.ViewSpline! makeSpline(String!);
-    method public abstract void setProperty(android.view.View!, float);
-  }
-
-  public static class ViewSpline.CustomSet extends androidx.constraintlayout.motion.utils.ViewSpline {
-    ctor public ViewSpline.CustomSet(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public void setPoint(int, androidx.constraintlayout.widget.ConstraintAttribute!);
-    method public void setProperty(android.view.View!, float);
-  }
-
-  public static class ViewSpline.PathRotate extends androidx.constraintlayout.motion.utils.ViewSpline {
-    ctor public ViewSpline.PathRotate();
-    method public void setPathRotate(android.view.View!, float, double, double);
-    method public void setProperty(android.view.View!, float);
-  }
-
-  public class ViewState {
-    ctor public ViewState();
-    method public void getState(android.view.View!);
-    method public int height();
-    method public int width();
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public float rotation;
-    field public int top;
-  }
-
-  public abstract class ViewTimeCycle extends androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet {
-    ctor public ViewTimeCycle();
-    method public float get(float, long, android.view.View!, androidx.constraintlayout.core.motion.utils.KeyCache!);
-    method public static androidx.constraintlayout.motion.utils.ViewTimeCycle! makeCustomSpline(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public static androidx.constraintlayout.motion.utils.ViewTimeCycle! makeSpline(String!, long);
-    method public abstract boolean setProperty(android.view.View!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  public static class ViewTimeCycle.CustomSet extends androidx.constraintlayout.motion.utils.ViewTimeCycle {
-    ctor public ViewTimeCycle.CustomSet(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public void setPoint(int, androidx.constraintlayout.widget.ConstraintAttribute!, float, int, float);
-    method public boolean setProperty(android.view.View!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  public static class ViewTimeCycle.PathRotate extends androidx.constraintlayout.motion.utils.ViewTimeCycle {
-    ctor public ViewTimeCycle.PathRotate();
-    method public boolean setPathRotate(android.view.View!, androidx.constraintlayout.core.motion.utils.KeyCache!, float, long, double, double);
-    method public boolean setProperty(android.view.View!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-}
-
-package androidx.constraintlayout.motion.widget {
-
-  public interface Animatable {
-    method public float getProgress();
-    method public void setProgress(float);
-  }
-
-  public interface CustomFloatAttributes {
-    method public float get(String!);
-    method public String![]! getListOfAttributes();
-    method public void set(String!, float);
-  }
-
-  public class Debug {
-    ctor public Debug();
-    method public static void dumpLayoutParams(android.view.ViewGroup!, String!);
-    method public static void dumpLayoutParams(android.view.ViewGroup.LayoutParams!, String!);
-    method public static void dumpPoc(Object!);
-    method public static String! getActionType(android.view.MotionEvent!);
-    method public static String! getCallFrom(int);
-    method public static String! getLoc();
-    method public static String! getLocation();
-    method public static String! getLocation2();
-    method public static String! getName(android.content.Context!, int);
-    method public static String! getName(android.content.Context!, int[]!);
-    method public static String! getName(android.view.View!);
-    method public static String! getState(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public static String! getState(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public static void logStack(String!, String!, int);
-    method public static void printStack(String!, int);
-  }
-
-  public class DesignTool {
-    ctor public DesignTool(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public int designAccess(int, String!, Object!, float[]!, int, float[]!, int);
-    method public void disableAutoTransition(boolean);
-    method public void dumpConstraintSet(String!);
-    method public int getAnimationKeyFrames(Object!, float[]!);
-    method public int getAnimationPath(Object!, float[]!, int);
-    method public void getAnimationRectangles(Object!, float[]!);
-    method public String! getEndState();
-    method public int getKeyFrameInfo(Object!, int, int[]!);
-    method public float getKeyFramePosition(Object!, int, float, float);
-    method public int getKeyFramePositions(Object!, int[]!, float[]!);
-    method public Object! getKeyframe(int, int, int);
-    method public Object! getKeyframe(Object!, int, int);
-    method public Object! getKeyframeAtLocation(Object!, float, float);
-    method public Boolean! getPositionKeyframe(Object!, Object!, float, float, String![]!, float[]!);
-    method public float getProgress();
-    method public String! getStartState();
-    method public String! getState();
-    method public long getTransitionTimeMs();
-    method public boolean isInTransition();
-    method public void setAttributes(int, String!, Object!, Object!);
-    method public void setKeyFrame(Object!, int, String!, Object!);
-    method public boolean setKeyFramePosition(Object!, int, int, float, float);
-    method public void setKeyframe(Object!, String!, Object!);
-    method public void setState(String!);
-    method public void setToolPosition(float);
-    method public void setTransition(String!, String!);
-    method public void setViewDebug(Object!, int);
-  }
-
-  public interface FloatLayout {
-    method public void layout(float, float, float, float);
-  }
-
-  public abstract class Key {
-    ctor public Key();
-    method public abstract void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public abstract androidx.constraintlayout.motion.widget.Key! clone();
-    method public androidx.constraintlayout.motion.widget.Key! copy(androidx.constraintlayout.motion.widget.Key!);
-    method public int getFramePosition();
-    method public void setFramePosition(int);
-    method public void setInterpolation(java.util.HashMap<java.lang.String!,java.lang.Integer!>!);
-    method public abstract void setValue(String!, Object!);
-    method public androidx.constraintlayout.motion.widget.Key! setViewId(int);
-    field public static final String ALPHA = "alpha";
-    field public static final String CURVEFIT = "curveFit";
-    field public static final String CUSTOM = "CUSTOM";
-    field public static final String ELEVATION = "elevation";
-    field public static final String MOTIONPROGRESS = "motionProgress";
-    field public static final String PIVOT_X = "transformPivotX";
-    field public static final String PIVOT_Y = "transformPivotY";
-    field public static final String PROGRESS = "progress";
-    field public static final String ROTATION = "rotation";
-    field public static final String ROTATION_X = "rotationX";
-    field public static final String ROTATION_Y = "rotationY";
-    field public static final String SCALE_X = "scaleX";
-    field public static final String SCALE_Y = "scaleY";
-    field public static final String TRANSITIONEASING = "transitionEasing";
-    field public static final String TRANSITION_PATH_ROTATE = "transitionPathRotate";
-    field public static final String TRANSLATION_X = "translationX";
-    field public static final String TRANSLATION_Y = "translationY";
-    field public static final String TRANSLATION_Z = "translationZ";
-    field public static int UNSET;
-    field public static final String VISIBILITY = "visibility";
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_PHASE = "wavePhase";
-    field public static final String WAVE_VARIES_BY = "waveVariesBy";
-    field protected int mType;
-  }
-
-  public class KeyAttributes extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyAttributes();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final int KEY_TYPE = 1; // 0x1
-  }
-
-  public class KeyCycle extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyCycle();
-    method public void addCycleValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewOscillator!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public float getValue(String!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final int KEY_TYPE = 4; // 0x4
-    field public static final int SHAPE_BOUNCE = 6; // 0x6
-    field public static final int SHAPE_COS_WAVE = 5; // 0x5
-    field public static final int SHAPE_REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SHAPE_SAW_WAVE = 3; // 0x3
-    field public static final int SHAPE_SIN_WAVE = 0; // 0x0
-    field public static final int SHAPE_SQUARE_WAVE = 1; // 0x1
-    field public static final int SHAPE_TRIANGLE_WAVE = 2; // 0x2
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_PHASE = "wavePhase";
-    field public static final String WAVE_SHAPE = "waveShape";
-  }
-
-  public class KeyFrames {
-    ctor public KeyFrames();
-    ctor public KeyFrames(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public void addAllFrames(androidx.constraintlayout.motion.widget.MotionController!);
-    method public void addFrames(androidx.constraintlayout.motion.widget.MotionController!);
-    method public void addKey(androidx.constraintlayout.motion.widget.Key!);
-    method public java.util.ArrayList<androidx.constraintlayout.motion.widget.Key!>! getKeyFramesForView(int);
-    method public java.util.Set<java.lang.Integer!>! getKeys();
-    field public static final int UNSET = -1; // 0xffffffff
-  }
-
-  public class KeyPosition extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyPosition();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public boolean intersects(int, int, android.graphics.RectF!, android.graphics.RectF!, float, float);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void positionAttributes(android.view.View!, android.graphics.RectF!, android.graphics.RectF!, float, float, String![]!, float[]!);
-    method public void setType(int);
-    method public void setValue(String!, Object!);
-    field public static final String DRAWPATH = "drawPath";
-    field public static final String PERCENT_HEIGHT = "percentHeight";
-    field public static final String PERCENT_WIDTH = "percentWidth";
-    field public static final String PERCENT_X = "percentX";
-    field public static final String PERCENT_Y = "percentY";
-    field public static final String SIZE_PERCENT = "sizePercent";
-    field public static final String TRANSITION_EASING = "transitionEasing";
-    field public static final int TYPE_AXIS = 3; // 0x3
-    field public static final int TYPE_CARTESIAN = 0; // 0x0
-    field public static final int TYPE_PATH = 1; // 0x1
-    field public static final int TYPE_SCREEN = 2; // 0x2
-  }
-
-  public class KeyTimeCycle extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyTimeCycle();
-    method public void addTimeValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewTimeCycle!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final int KEY_TYPE = 3; // 0x3
-    field public static final int SHAPE_BOUNCE = 6; // 0x6
-    field public static final int SHAPE_COS_WAVE = 5; // 0x5
-    field public static final int SHAPE_REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SHAPE_SAW_WAVE = 3; // 0x3
-    field public static final int SHAPE_SIN_WAVE = 0; // 0x0
-    field public static final int SHAPE_SQUARE_WAVE = 1; // 0x1
-    field public static final int SHAPE_TRIANGLE_WAVE = 2; // 0x2
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_SHAPE = "waveShape";
-  }
-
-  public class KeyTrigger extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyTrigger();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void conditionallyFire(float, android.view.View!);
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final String CROSS = "CROSS";
-    field public static final int KEY_TYPE = 5; // 0x5
-    field public static final String NEGATIVE_CROSS = "negativeCross";
-    field public static final String POSITIVE_CROSS = "positiveCross";
-    field public static final String POST_LAYOUT = "postLayout";
-    field public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
-    field public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
-    field public static final String TRIGGER_ID = "triggerID";
-    field public static final String TRIGGER_RECEIVER = "triggerReceiver";
-    field public static final String TRIGGER_SLACK = "triggerSlack";
-    field public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
-    field public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
-    field public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
-  }
-
-  public class MotionController {
-    method public void addKey(androidx.constraintlayout.motion.widget.Key!);
-    method public int getAnimateRelativeTo();
-    method public void getCenter(double, float[]!, float[]!);
-    method public float getCenterX();
-    method public float getCenterY();
-    method public int getDrawPath();
-    method public float getFinalHeight();
-    method public float getFinalWidth();
-    method public float getFinalX();
-    method public float getFinalY();
-    method public int getKeyFrameInfo(int, int[]!);
-    method public int getKeyFramePositions(int[]!, float[]!);
-    method public float getStartHeight();
-    method public float getStartWidth();
-    method public float getStartX();
-    method public float getStartY();
-    method public int getTransformPivotTarget();
-    method public android.view.View! getView();
-    method public void remeasure();
-    method public void setDrawPath(int);
-    method public void setPathMotionArc(int);
-    method public void setStartState(androidx.constraintlayout.motion.utils.ViewState!, android.view.View!, int, int, int);
-    method public void setTransformPivotTarget(int);
-    method public void setView(android.view.View!);
-    method public void setup(int, int, float, long);
-    method public void setupRelative(androidx.constraintlayout.motion.widget.MotionController!);
-    field public static final int DRAW_PATH_AS_CONFIGURED = 4; // 0x4
-    field public static final int DRAW_PATH_BASIC = 1; // 0x1
-    field public static final int DRAW_PATH_CARTESIAN = 3; // 0x3
-    field public static final int DRAW_PATH_NONE = 0; // 0x0
-    field public static final int DRAW_PATH_RECTANGLE = 5; // 0x5
-    field public static final int DRAW_PATH_RELATIVE = 2; // 0x2
-    field public static final int DRAW_PATH_SCREEN = 6; // 0x6
-    field public static final int HORIZONTAL_PATH_X = 2; // 0x2
-    field public static final int HORIZONTAL_PATH_Y = 3; // 0x3
-    field public static final int PATH_PERCENT = 0; // 0x0
-    field public static final int PATH_PERPENDICULAR = 1; // 0x1
-    field public static final int ROTATION_LEFT = 2; // 0x2
-    field public static final int ROTATION_RIGHT = 1; // 0x1
-    field public static final int VERTICAL_PATH_X = 4; // 0x4
-    field public static final int VERTICAL_PATH_Y = 5; // 0x5
-  }
-
-  public class MotionHelper extends androidx.constraintlayout.widget.ConstraintHelper implements androidx.constraintlayout.motion.widget.MotionHelperInterface {
-    ctor public MotionHelper(android.content.Context!);
-    ctor public MotionHelper(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionHelper(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getProgress();
-    method public boolean isDecorator();
-    method public boolean isUseOnHide();
-    method public boolean isUsedOnShow();
-    method public void onFinishedMotionScene(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void onPostDraw(android.graphics.Canvas!);
-    method public void onPreDraw(android.graphics.Canvas!);
-    method public void onPreSetup(androidx.constraintlayout.motion.widget.MotionLayout!, java.util.HashMap<android.view.View!,androidx.constraintlayout.motion.widget.MotionController!>!);
-    method public void onTransitionChange(androidx.constraintlayout.motion.widget.MotionLayout!, int, int, float);
-    method public void onTransitionCompleted(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void onTransitionStarted(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public void onTransitionTrigger(androidx.constraintlayout.motion.widget.MotionLayout!, int, boolean, float);
-    method public void setProgress(android.view.View!, float);
-    method public void setProgress(float);
-    field protected android.view.View![]! views;
-  }
-
-  public interface MotionHelperInterface extends androidx.constraintlayout.motion.widget.Animatable androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener {
-    method public boolean isDecorator();
-    method public boolean isUseOnHide();
-    method public boolean isUsedOnShow();
-    method public void onFinishedMotionScene(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void onPostDraw(android.graphics.Canvas!);
-    method public void onPreDraw(android.graphics.Canvas!);
-    method public void onPreSetup(androidx.constraintlayout.motion.widget.MotionLayout!, java.util.HashMap<android.view.View!,androidx.constraintlayout.motion.widget.MotionController!>!);
-  }
-
-  public abstract class MotionInterpolator implements android.view.animation.Interpolator {
-    ctor public MotionInterpolator();
-    method public abstract float getVelocity();
-  }
-
-  public class MotionLayout extends androidx.constraintlayout.widget.ConstraintLayout implements androidx.core.view.NestedScrollingParent3 {
-    ctor public MotionLayout(android.content.Context);
-    ctor public MotionLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public MotionLayout(android.content.Context, android.util.AttributeSet?, int);
-    method public void addTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method public boolean applyViewTransition(int, androidx.constraintlayout.motion.widget.MotionController!);
-    method public androidx.constraintlayout.widget.ConstraintSet! cloneConstraintSet(int);
-    method public void enableTransition(int, boolean);
-    method public void enableViewTransition(int, boolean);
-    method protected void fireTransitionCompleted();
-    method public void fireTrigger(int, boolean, float);
-    method public androidx.constraintlayout.widget.ConstraintSet! getConstraintSet(int);
-    method @IdRes public int[]! getConstraintSetIds();
-    method public int getCurrentState();
-    method public java.util.ArrayList<androidx.constraintlayout.motion.widget.MotionScene.Transition!>! getDefinedTransitions();
-    method public androidx.constraintlayout.motion.widget.DesignTool! getDesignTool();
-    method public int getEndState();
-    method public int[]! getMatchingConstraintSetIds(java.lang.String!...!);
-    method protected long getNanoTime();
-    method public float getProgress();
-    method public androidx.constraintlayout.motion.widget.MotionScene! getScene();
-    method public int getStartState();
-    method public float getTargetPosition();
-    method public androidx.constraintlayout.motion.widget.MotionScene.Transition! getTransition(int);
-    method public android.os.Bundle! getTransitionState();
-    method public long getTransitionTimeMs();
-    method public float getVelocity();
-    method public void getViewVelocity(android.view.View!, float, float, float[]!, int);
-    method public boolean isDelayedApplicationOfInitialState();
-    method public boolean isInRotation();
-    method public boolean isInteractionEnabled();
-    method public boolean isViewTransitionEnabled(int);
-    method public void jumpToState(int);
-    method protected androidx.constraintlayout.motion.widget.MotionLayout.MotionTracker! obtainVelocityTracker();
-    method public void onNestedPreScroll(android.view.View, int, int, int[], int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]!);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View, int);
-    method @Deprecated public void rebuildMotion();
-    method public void rebuildScene();
-    method public boolean removeTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method public void rotateTo(int, int);
-    method public void scheduleTransitionTo(int);
-    method public void setDebugMode(int);
-    method public void setDelayedApplicationOfInitialState(boolean);
-    method public void setInteractionEnabled(boolean);
-    method public void setInterpolatedProgress(float);
-    method public void setOnHide(float);
-    method public void setOnShow(float);
-    method public void setProgress(float);
-    method public void setProgress(float, float);
-    method public void setScene(androidx.constraintlayout.motion.widget.MotionScene!);
-    method protected void setTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public void setTransition(int);
-    method public void setTransition(int, int);
-    method public void setTransitionDuration(int);
-    method public void setTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method public void setTransitionState(android.os.Bundle!);
-    method public void touchAnimateTo(int, float, float);
-    method public void touchSpringTo(float, float);
-    method public void transitionToEnd();
-    method public void transitionToEnd(Runnable!);
-    method public void transitionToStart();
-    method public void transitionToStart(Runnable!);
-    method public void transitionToState(int);
-    method public void transitionToState(int, int);
-    method public void transitionToState(int, int, int);
-    method public void transitionToState(int, int, int, int);
-    method public void updateState();
-    method public void updateState(int, androidx.constraintlayout.widget.ConstraintSet!);
-    method public void updateStateAnimate(int, androidx.constraintlayout.widget.ConstraintSet!, int);
-    method public void viewTransition(int, android.view.View!...!);
-    field public static final int DEBUG_SHOW_NONE = 0; // 0x0
-    field public static final int DEBUG_SHOW_PATH = 2; // 0x2
-    field public static final int DEBUG_SHOW_PROGRESS = 1; // 0x1
-    field public static boolean IS_IN_EDIT_MODE;
-    field public static final int TOUCH_UP_COMPLETE = 0; // 0x0
-    field public static final int TOUCH_UP_COMPLETE_TO_END = 2; // 0x2
-    field public static final int TOUCH_UP_COMPLETE_TO_START = 1; // 0x1
-    field public static final int TOUCH_UP_DECELERATE = 4; // 0x4
-    field public static final int TOUCH_UP_DECELERATE_AND_COMPLETE = 5; // 0x5
-    field public static final int TOUCH_UP_NEVER_TO_END = 7; // 0x7
-    field public static final int TOUCH_UP_NEVER_TO_START = 6; // 0x6
-    field public static final int TOUCH_UP_STOP = 3; // 0x3
-    field public static final int VELOCITY_LAYOUT = 1; // 0x1
-    field public static final int VELOCITY_POST_LAYOUT = 0; // 0x0
-    field public static final int VELOCITY_STATIC_LAYOUT = 3; // 0x3
-    field public static final int VELOCITY_STATIC_POST_LAYOUT = 2; // 0x2
-    field protected boolean mMeasureDuringTransition;
-  }
-
-  protected static interface MotionLayout.MotionTracker {
-    method public void addMovement(android.view.MotionEvent!);
-    method public void clear();
-    method public void computeCurrentVelocity(int);
-    method public void computeCurrentVelocity(int, float);
-    method public float getXVelocity();
-    method public float getXVelocity(int);
-    method public float getYVelocity();
-    method public float getYVelocity(int);
-    method public void recycle();
-  }
-
-  public static interface MotionLayout.TransitionListener {
-    method public void onTransitionChange(androidx.constraintlayout.motion.widget.MotionLayout!, int, int, float);
-    method public void onTransitionCompleted(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void onTransitionStarted(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public void onTransitionTrigger(androidx.constraintlayout.motion.widget.MotionLayout!, int, boolean, float);
-  }
-
-  public class MotionScene {
-    ctor public MotionScene(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void addOnClickListeners(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void addTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public boolean applyViewTransition(int, androidx.constraintlayout.motion.widget.MotionController!);
-    method public androidx.constraintlayout.motion.widget.MotionScene.Transition! bestTransitionFor(int, float, float, android.view.MotionEvent!);
-    method public void disableAutoTransition(boolean);
-    method public void enableViewTransition(int, boolean);
-    method public int gatPathMotionArc();
-    method public androidx.constraintlayout.widget.ConstraintSet! getConstraintSet(android.content.Context!, String!);
-    method public int[]! getConstraintSetIds();
-    method public java.util.ArrayList<androidx.constraintlayout.motion.widget.MotionScene.Transition!>! getDefinedTransitions();
-    method public int getDuration();
-    method public android.view.animation.Interpolator! getInterpolator();
-    method public void getKeyFrames(androidx.constraintlayout.motion.widget.MotionController!);
-    method public int[]! getMatchingStateLabels(java.lang.String!...!);
-    method public float getPathPercent(android.view.View!, int);
-    method public float getStaggered();
-    method public androidx.constraintlayout.motion.widget.MotionScene.Transition! getTransitionById(int);
-    method public java.util.List<androidx.constraintlayout.motion.widget.MotionScene.Transition!>! getTransitionsWithState(int);
-    method public boolean isViewTransitionEnabled(int);
-    method public int lookUpConstraintId(String!);
-    method public String! lookUpConstraintName(int);
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void removeTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public void setConstraintSet(int, androidx.constraintlayout.widget.ConstraintSet!);
-    method public void setDuration(int);
-    method public void setKeyframe(android.view.View!, int, String!, Object!);
-    method public void setRtl(boolean);
-    method public void setTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public static String! stripID(String!);
-    method public boolean validateLayout(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void viewTransition(int, android.view.View!...!);
-    field public static final int LAYOUT_CALL_MEASURE = 2; // 0x2
-    field public static final int LAYOUT_HONOR_REQUEST = 1; // 0x1
-    field public static final int LAYOUT_IGNORE_REQUEST = 0; // 0x0
-    field public static final int UNSET = -1; // 0xffffffff
-  }
-
-  public static class MotionScene.Transition {
-    ctor public MotionScene.Transition(int, androidx.constraintlayout.motion.widget.MotionScene!, int, int);
-    method public void addKeyFrame(androidx.constraintlayout.motion.widget.KeyFrames!);
-    method public void addOnClick(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public void addOnClick(int, int);
-    method public String! debugString(android.content.Context!);
-    method public int getAutoTransition();
-    method public int getDuration();
-    method public int getEndConstraintSetId();
-    method public int getId();
-    method public java.util.List<androidx.constraintlayout.motion.widget.KeyFrames!>! getKeyFrameList();
-    method public int getLayoutDuringTransition();
-    method public java.util.List<androidx.constraintlayout.motion.widget.MotionScene.Transition.TransitionOnClick!>! getOnClickList();
-    method public int getPathMotionArc();
-    method public float getStagger();
-    method public int getStartConstraintSetId();
-    method public androidx.constraintlayout.motion.widget.TouchResponse! getTouchResponse();
-    method public boolean isEnabled();
-    method public boolean isTransitionFlag(int);
-    method public void removeOnClick(int);
-    method public void setAutoTransition(int);
-    method public void setDuration(int);
-    method public void setEnabled(boolean);
-    method public void setInterpolatorInfo(int, String!, int);
-    method public void setLayoutDuringTransition(int);
-    method public void setOnSwipe(androidx.constraintlayout.motion.widget.OnSwipe!);
-    method public void setOnTouchUp(int);
-    method public void setPathMotionArc(int);
-    method public void setStagger(float);
-    method public void setTransitionFlag(int);
-    field public static final int AUTO_ANIMATE_TO_END = 4; // 0x4
-    field public static final int AUTO_ANIMATE_TO_START = 3; // 0x3
-    field public static final int AUTO_JUMP_TO_END = 2; // 0x2
-    field public static final int AUTO_JUMP_TO_START = 1; // 0x1
-    field public static final int AUTO_NONE = 0; // 0x0
-    field public static final int INTERPOLATE_ANTICIPATE = 6; // 0x6
-    field public static final int INTERPOLATE_BOUNCE = 4; // 0x4
-    field public static final int INTERPOLATE_EASE_IN = 1; // 0x1
-    field public static final int INTERPOLATE_EASE_IN_OUT = 0; // 0x0
-    field public static final int INTERPOLATE_EASE_OUT = 2; // 0x2
-    field public static final int INTERPOLATE_LINEAR = 3; // 0x3
-    field public static final int INTERPOLATE_OVERSHOOT = 5; // 0x5
-    field public static final int INTERPOLATE_REFERENCE_ID = -2; // 0xfffffffe
-    field public static final int INTERPOLATE_SPLINE_STRING = -1; // 0xffffffff
-  }
-
-  public static class MotionScene.Transition.TransitionOnClick implements android.view.View.OnClickListener {
-    ctor public MotionScene.Transition.TransitionOnClick(android.content.Context!, androidx.constraintlayout.motion.widget.MotionScene.Transition!, org.xmlpull.v1.XmlPullParser!);
-    ctor public MotionScene.Transition.TransitionOnClick(androidx.constraintlayout.motion.widget.MotionScene.Transition!, int, int);
-    method public void addOnClickListeners(androidx.constraintlayout.motion.widget.MotionLayout!, int, androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public void onClick(android.view.View!);
-    method public void removeOnClickListeners(androidx.constraintlayout.motion.widget.MotionLayout!);
-    field public static final int ANIM_TOGGLE = 17; // 0x11
-    field public static final int ANIM_TO_END = 1; // 0x1
-    field public static final int ANIM_TO_START = 16; // 0x10
-    field public static final int JUMP_TO_END = 256; // 0x100
-    field public static final int JUMP_TO_START = 4096; // 0x1000
-  }
-
-  public class OnSwipe {
-    ctor public OnSwipe();
-    method public int getAutoCompleteMode();
-    method public int getDragDirection();
-    method public float getDragScale();
-    method public float getDragThreshold();
-    method public int getLimitBoundsTo();
-    method public float getMaxAcceleration();
-    method public float getMaxVelocity();
-    method public boolean getMoveWhenScrollAtTop();
-    method public int getNestedScrollFlags();
-    method public int getOnTouchUp();
-    method public int getRotationCenterId();
-    method public int getSpringBoundary();
-    method public float getSpringDamping();
-    method public float getSpringMass();
-    method public float getSpringStiffness();
-    method public float getSpringStopThreshold();
-    method public int getTouchAnchorId();
-    method public int getTouchAnchorSide();
-    method public int getTouchRegionId();
-    method public void setAutoCompleteMode(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setDragDirection(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setDragScale(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setDragThreshold(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setLimitBoundsTo(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setMaxAcceleration(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setMaxVelocity(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setMoveWhenScrollAtTop(boolean);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setNestedScrollFlags(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setOnTouchUp(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setRotateCenter(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringBoundary(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringDamping(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringMass(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringStiffness(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringStopThreshold(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setTouchAnchorId(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setTouchAnchorSide(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setTouchRegionId(int);
-    field public static final int COMPLETE_MODE_CONTINUOUS_VELOCITY = 0; // 0x0
-    field public static final int COMPLETE_MODE_SPRING = 1; // 0x1
-    field public static final int DRAG_ANTICLOCKWISE = 7; // 0x7
-    field public static final int DRAG_CLOCKWISE = 6; // 0x6
-    field public static final int DRAG_DOWN = 1; // 0x1
-    field public static final int DRAG_END = 5; // 0x5
-    field public static final int DRAG_LEFT = 2; // 0x2
-    field public static final int DRAG_RIGHT = 3; // 0x3
-    field public static final int DRAG_START = 4; // 0x4
-    field public static final int DRAG_UP = 0; // 0x0
-    field public static final int FLAG_DISABLE_POST_SCROLL = 1; // 0x1
-    field public static final int FLAG_DISABLE_SCROLL = 2; // 0x2
-    field public static final int ON_UP_AUTOCOMPLETE = 0; // 0x0
-    field public static final int ON_UP_AUTOCOMPLETE_TO_END = 2; // 0x2
-    field public static final int ON_UP_AUTOCOMPLETE_TO_START = 1; // 0x1
-    field public static final int ON_UP_DECELERATE = 4; // 0x4
-    field public static final int ON_UP_DECELERATE_AND_COMPLETE = 5; // 0x5
-    field public static final int ON_UP_NEVER_TO_END = 7; // 0x7
-    field public static final int ON_UP_NEVER_TO_START = 6; // 0x6
-    field public static final int ON_UP_STOP = 3; // 0x3
-    field public static final int SIDE_BOTTOM = 3; // 0x3
-    field public static final int SIDE_END = 6; // 0x6
-    field public static final int SIDE_LEFT = 1; // 0x1
-    field public static final int SIDE_MIDDLE = 4; // 0x4
-    field public static final int SIDE_RIGHT = 2; // 0x2
-    field public static final int SIDE_START = 5; // 0x5
-    field public static final int SIDE_TOP = 0; // 0x0
-    field public static final int SPRING_BOUNDARY_BOUNCEBOTH = 3; // 0x3
-    field public static final int SPRING_BOUNDARY_BOUNCEEND = 2; // 0x2
-    field public static final int SPRING_BOUNDARY_BOUNCESTART = 1; // 0x1
-    field public static final int SPRING_BOUNDARY_OVERSHOOT = 0; // 0x0
-  }
-
-  public abstract class TransitionAdapter implements androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener {
-    ctor public TransitionAdapter();
-    method public void onTransitionChange(androidx.constraintlayout.motion.widget.MotionLayout!, int, int, float);
-    method public void onTransitionCompleted(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void onTransitionStarted(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public void onTransitionTrigger(androidx.constraintlayout.motion.widget.MotionLayout!, int, boolean, float);
-  }
-
-  public class TransitionBuilder {
-    ctor public TransitionBuilder();
-    method public static androidx.constraintlayout.motion.widget.MotionScene.Transition! buildTransition(androidx.constraintlayout.motion.widget.MotionScene!, int, int, androidx.constraintlayout.widget.ConstraintSet!, int, androidx.constraintlayout.widget.ConstraintSet!);
-    method public static void validate(androidx.constraintlayout.motion.widget.MotionLayout!);
-  }
-
-  public class ViewTransition {
-    method public int getSharedValue();
-    method public int getSharedValueCurrent();
-    method public int getSharedValueID();
-    method public int getStateTransition();
-    method public void setSharedValue(int);
-    method public void setSharedValueCurrent(int);
-    method public void setSharedValueID(int);
-    method public void setStateTransition(int);
-    field public static final String CONSTRAINT_OVERRIDE = "ConstraintOverride";
-    field public static final String CUSTOM_ATTRIBUTE = "CustomAttribute";
-    field public static final String CUSTOM_METHOD = "CustomMethod";
-    field public static final String KEY_FRAME_SET_TAG = "KeyFrameSet";
-    field public static final int ONSTATE_ACTION_DOWN = 1; // 0x1
-    field public static final int ONSTATE_ACTION_DOWN_UP = 3; // 0x3
-    field public static final int ONSTATE_ACTION_UP = 2; // 0x2
-    field public static final int ONSTATE_SHARED_VALUE_SET = 4; // 0x4
-    field public static final int ONSTATE_SHARED_VALUE_UNSET = 5; // 0x5
-    field public static final String VIEW_TRANSITION_TAG = "ViewTransition";
-  }
-
-  public class ViewTransitionController {
-    ctor public ViewTransitionController(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void add(androidx.constraintlayout.motion.widget.ViewTransition!);
-  }
-
-}
-
-package androidx.constraintlayout.utils.widget {
-
-  public class ImageFilterButton extends androidx.appcompat.widget.AppCompatImageButton {
-    ctor public ImageFilterButton(android.content.Context!);
-    ctor public ImageFilterButton(android.content.Context!, android.util.AttributeSet!);
-    ctor public ImageFilterButton(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getContrast();
-    method public float getCrossfade();
-    method public float getImagePanX();
-    method public float getImagePanY();
-    method public float getImageRotate();
-    method public float getImageZoom();
-    method public float getRound();
-    method public float getRoundPercent();
-    method public float getSaturation();
-    method public float getWarmth();
-    method public void setAltImageResource(int);
-    method public void setBrightness(float);
-    method public void setContrast(float);
-    method public void setCrossfade(float);
-    method public void setImagePanX(float);
-    method public void setImagePanY(float);
-    method public void setImageRotate(float);
-    method public void setImageZoom(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-    method public void setSaturation(float);
-    method public void setWarmth(float);
-  }
-
-  public class ImageFilterView extends androidx.appcompat.widget.AppCompatImageView {
-    ctor public ImageFilterView(android.content.Context!);
-    ctor public ImageFilterView(android.content.Context!, android.util.AttributeSet!);
-    ctor public ImageFilterView(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getBrightness();
-    method public float getContrast();
-    method public float getCrossfade();
-    method public float getImagePanX();
-    method public float getImagePanY();
-    method public float getImageRotate();
-    method public float getImageZoom();
-    method public float getRound();
-    method public float getRoundPercent();
-    method public float getSaturation();
-    method public float getWarmth();
-    method public void setAltImageDrawable(android.graphics.drawable.Drawable!);
-    method public void setAltImageResource(int);
-    method public void setBrightness(float);
-    method public void setContrast(float);
-    method public void setCrossfade(float);
-    method public void setImagePanX(float);
-    method public void setImagePanY(float);
-    method public void setImageRotate(float);
-    method public void setImageZoom(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-    method public void setSaturation(float);
-    method public void setWarmth(float);
-  }
-
-  public class MockView extends android.view.View {
-    ctor public MockView(android.content.Context!);
-    ctor public MockView(android.content.Context!, android.util.AttributeSet!);
-    ctor public MockView(android.content.Context!, android.util.AttributeSet!, int);
-    method public void onDraw(android.graphics.Canvas);
-    field protected String! mText;
-  }
-
-  public class MotionButton extends androidx.appcompat.widget.AppCompatButton {
-    ctor public MotionButton(android.content.Context!);
-    ctor public MotionButton(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionButton(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getRound();
-    method public float getRoundPercent();
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-  }
-
-  public class MotionLabel extends android.view.View implements androidx.constraintlayout.motion.widget.FloatLayout {
-    ctor public MotionLabel(android.content.Context!);
-    ctor public MotionLabel(android.content.Context!, android.util.AttributeSet?);
-    ctor public MotionLabel(android.content.Context!, android.util.AttributeSet?, int);
-    method public float getRound();
-    method public float getRoundPercent();
-    method public float getScaleFromTextSize();
-    method public float getTextBackgroundPanX();
-    method public float getTextBackgroundPanY();
-    method public float getTextBackgroundRotate();
-    method public float getTextBackgroundZoom();
-    method public int getTextOutlineColor();
-    method public float getTextPanX();
-    method public float getTextPanY();
-    method public float getTextureHeight();
-    method public float getTextureWidth();
-    method public android.graphics.Typeface! getTypeface();
-    method public void layout(float, float, float, float);
-    method public void setGravity(int);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-    method public void setScaleFromTextSize(float);
-    method public void setText(CharSequence!);
-    method public void setTextBackgroundPanX(float);
-    method public void setTextBackgroundPanY(float);
-    method public void setTextBackgroundRotate(float);
-    method public void setTextBackgroundZoom(float);
-    method public void setTextFillColor(int);
-    method public void setTextOutlineColor(int);
-    method public void setTextOutlineThickness(float);
-    method public void setTextPanX(float);
-    method public void setTextPanY(float);
-    method public void setTextSize(float);
-    method public void setTextureHeight(float);
-    method public void setTextureWidth(float);
-    method public void setTypeface(android.graphics.Typeface!);
-  }
-
-  public class MotionTelltales extends androidx.constraintlayout.utils.widget.MockView {
-    ctor public MotionTelltales(android.content.Context!);
-    ctor public MotionTelltales(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionTelltales(android.content.Context!, android.util.AttributeSet!, int);
-    method public void setText(CharSequence!);
-  }
-
-}
-
-package androidx.constraintlayout.widget {
-
-  public class Barrier extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public Barrier(android.content.Context!);
-    ctor public Barrier(android.content.Context!, android.util.AttributeSet!);
-    ctor public Barrier(android.content.Context!, android.util.AttributeSet!, int);
-    method @Deprecated public boolean allowsGoneWidget();
-    method public boolean getAllowsGoneWidget();
-    method public int getMargin();
-    method public int getType();
-    method public void setAllowsGoneWidget(boolean);
-    method public void setDpMargin(int);
-    method public void setMargin(int);
-    method public void setType(int);
-    field public static final int BOTTOM = 3; // 0x3
-    field public static final int END = 6; // 0x6
-    field public static final int LEFT = 0; // 0x0
-    field public static final int RIGHT = 1; // 0x1
-    field public static final int START = 5; // 0x5
-    field public static final int TOP = 2; // 0x2
-  }
-
-  public class ConstraintAttribute {
-    ctor public ConstraintAttribute(androidx.constraintlayout.widget.ConstraintAttribute!, Object!);
-    ctor public ConstraintAttribute(String!, androidx.constraintlayout.widget.ConstraintAttribute.AttributeType!);
-    ctor public ConstraintAttribute(String!, androidx.constraintlayout.widget.ConstraintAttribute.AttributeType!, Object!, boolean);
-    method public void applyCustom(android.view.View!);
-    method public boolean diff(androidx.constraintlayout.widget.ConstraintAttribute!);
-    method public static java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>! extractAttributes(java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>!, android.view.View!);
-    method public int getColorValue();
-    method public float getFloatValue();
-    method public int getIntegerValue();
-    method public String! getName();
-    method public String! getStringValue();
-    method public androidx.constraintlayout.widget.ConstraintAttribute.AttributeType! getType();
-    method public float getValueToInterpolate();
-    method public void getValuesToInterpolate(float[]!);
-    method public boolean isBooleanValue();
-    method public boolean isContinuous();
-    method public boolean isMethod();
-    method public int numberOfInterpolatedValues();
-    method public static void parse(android.content.Context!, org.xmlpull.v1.XmlPullParser!, java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public static void setAttributes(android.view.View!, java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public void setColorValue(int);
-    method public void setFloatValue(float);
-    method public void setIntValue(int);
-    method public void setStringValue(String!);
-    method public void setValue(float[]!);
-    method public void setValue(Object!);
-  }
-
-  public enum ConstraintAttribute.AttributeType {
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType BOOLEAN_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType COLOR_DRAWABLE_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType COLOR_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType DIMENSION_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType FLOAT_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType INT_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType REFERENCE_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType STRING_TYPE;
-  }
-
-  public abstract class ConstraintHelper extends android.view.View {
-    ctor public ConstraintHelper(android.content.Context!);
-    ctor public ConstraintHelper(android.content.Context!, android.util.AttributeSet!);
-    ctor public ConstraintHelper(android.content.Context!, android.util.AttributeSet!, int);
-    method public void addView(android.view.View!);
-    method public void applyHelperParams();
-    method protected void applyLayoutFeatures();
-    method protected void applyLayoutFeatures(androidx.constraintlayout.widget.ConstraintLayout!);
-    method protected void applyLayoutFeaturesInConstraintSet(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public boolean containsId(int);
-    method public int[]! getReferencedIds();
-    method protected android.view.View![]! getViews(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public int indexFromId(int);
-    method protected void init(android.util.AttributeSet!);
-    method public static boolean isChildOfHelper(android.view.View!);
-    method public void loadParameters(androidx.constraintlayout.widget.ConstraintSet.Constraint!, androidx.constraintlayout.core.widgets.HelperWidget!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void onDraw(android.graphics.Canvas);
-    method public int removeView(android.view.View!);
-    method public void resolveRtl(androidx.constraintlayout.core.widgets.ConstraintWidget!, boolean);
-    method protected void setIds(String!);
-    method protected void setReferenceTags(String!);
-    method public void setReferencedIds(int[]!);
-    method public void updatePostConstraints(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePostLayout(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePostMeasure(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePreDraw(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePreLayout(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.widgets.Helper!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void updatePreLayout(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void validateParams();
-    field protected static final String CHILD_TAG = "CONSTRAINT_LAYOUT_HELPER_CHILD";
-    field protected int mCount;
-    field protected androidx.constraintlayout.core.widgets.Helper! mHelperWidget;
-    field protected int[]! mIds;
-    field protected java.util.HashMap<java.lang.Integer!,java.lang.String!>! mMap;
-    field protected String! mReferenceIds;
-    field protected String! mReferenceTags;
-    field protected boolean mUseViewMeasure;
-    field protected android.content.Context! myContext;
-  }
-
-  public class ConstraintLayout extends android.view.ViewGroup {
-    ctor public ConstraintLayout(android.content.Context);
-    ctor public ConstraintLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public ConstraintLayout(android.content.Context, android.util.AttributeSet?, int);
-    ctor public ConstraintLayout(android.content.Context, android.util.AttributeSet?, int, int);
-    method public void addValueModifier(androidx.constraintlayout.widget.ConstraintLayout.ValueModifier!);
-    method protected void applyConstraintsFromLayoutParams(boolean, android.view.View!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method protected boolean dynamicUpdateConstraints(int, int);
-    method public void fillMetrics(androidx.constraintlayout.core.Metrics!);
-    method protected androidx.constraintlayout.widget.ConstraintLayout.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.constraintlayout.widget.ConstraintLayout.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method public Object! getDesignInformation(int, Object!);
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public int getMinHeight();
-    method public int getMinWidth();
-    method public int getOptimizationLevel();
-    method public String! getSceneString();
-    method public static androidx.constraintlayout.widget.SharedValues! getSharedValues();
-    method public android.view.View! getViewById(int);
-    method public final androidx.constraintlayout.core.widgets.ConstraintWidget! getViewWidget(android.view.View!);
-    method protected boolean isRtl();
-    method public void loadLayoutDescription(int);
-    method protected void parseLayoutDescription(int);
-    method protected void resolveMeasuredDimension(int, int, int, int, boolean, boolean);
-    method protected void resolveSystem(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int, int, int);
-    method public void setConstraintSet(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void setDesignInformation(int, Object!, Object!);
-    method public void setMaxHeight(int);
-    method public void setMaxWidth(int);
-    method public void setMinHeight(int);
-    method public void setMinWidth(int);
-    method public void setOnConstraintsChanged(androidx.constraintlayout.widget.ConstraintsChangedListener!);
-    method public void setOptimizationLevel(int);
-    method protected void setSelfDimensionBehaviour(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int, int, int, int);
-    method public void setState(int, int, int);
-    field public static final int DESIGN_INFO_ID = 0; // 0x0
-    field public static final String VERSION = "ConstraintLayout-2.2.0-alpha04";
-    field protected androidx.constraintlayout.widget.ConstraintLayoutStates! mConstraintLayoutSpec;
-    field protected boolean mDirtyHierarchy;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidgetContainer! mLayoutWidget;
-  }
-
-  public static class ConstraintLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ConstraintLayout.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public ConstraintLayout.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public ConstraintLayout.LayoutParams(int, int);
-    method public String! getConstraintTag();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public void reset();
-    method public void setWidgetDebugName(String!);
-    method public void validate();
-    field public static final int BASELINE = 5; // 0x5
-    field public static final int BOTTOM = 4; // 0x4
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static final int CIRCLE = 8; // 0x8
-    field public static final int END = 7; // 0x7
-    field public static final int GONE_UNSET = -2147483648; // 0x80000000
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int LEFT = 1; // 0x1
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_PERCENT = 2; // 0x2
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int RIGHT = 2; // 0x2
-    field public static final int START = 6; // 0x6
-    field public static final int TOP = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int WRAP_BEHAVIOR_HORIZONTAL_ONLY = 1; // 0x1
-    field public static final int WRAP_BEHAVIOR_INCLUDED = 0; // 0x0
-    field public static final int WRAP_BEHAVIOR_SKIPPED = 3; // 0x3
-    field public static final int WRAP_BEHAVIOR_VERTICAL_ONLY = 2; // 0x2
-    field public int baselineMargin;
-    field public int baselineToBaseline;
-    field public int baselineToBottom;
-    field public int baselineToTop;
-    field public int bottomToBottom;
-    field public int bottomToTop;
-    field public float circleAngle;
-    field public int circleConstraint;
-    field public int circleRadius;
-    field public boolean constrainedHeight;
-    field public boolean constrainedWidth;
-    field public String! constraintTag;
-    field public String! dimensionRatio;
-    field public int editorAbsoluteX;
-    field public int editorAbsoluteY;
-    field public int endToEnd;
-    field public int endToStart;
-    field public int goneBaselineMargin;
-    field public int goneBottomMargin;
-    field public int goneEndMargin;
-    field public int goneLeftMargin;
-    field public int goneRightMargin;
-    field public int goneStartMargin;
-    field public int goneTopMargin;
-    field public int guideBegin;
-    field public int guideEnd;
-    field public float guidePercent;
-    field public boolean guidelineUseRtl;
-    field public boolean helped;
-    field public float horizontalBias;
-    field public int horizontalChainStyle;
-    field public float horizontalWeight;
-    field public int leftToLeft;
-    field public int leftToRight;
-    field public int matchConstraintDefaultHeight;
-    field public int matchConstraintDefaultWidth;
-    field public int matchConstraintMaxHeight;
-    field public int matchConstraintMaxWidth;
-    field public int matchConstraintMinHeight;
-    field public int matchConstraintMinWidth;
-    field public float matchConstraintPercentHeight;
-    field public float matchConstraintPercentWidth;
-    field public int orientation;
-    field public int rightToLeft;
-    field public int rightToRight;
-    field public int startToEnd;
-    field public int startToStart;
-    field public int topToBottom;
-    field public int topToTop;
-    field public float verticalBias;
-    field public int verticalChainStyle;
-    field public float verticalWeight;
-    field public int wrapBehaviorInParent;
-  }
-
-  public static interface ConstraintLayout.ValueModifier {
-    method public boolean update(int, int, int, android.view.View!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!);
-  }
-
-  public class ConstraintLayoutStates {
-    method public boolean needsToChange(int, float, float);
-    method public void setOnConstraintsChanged(androidx.constraintlayout.widget.ConstraintsChangedListener!);
-    method public void updateConstraints(int, float, float);
-    field public static final String TAG = "ConstraintLayoutStates";
-  }
-
-  public class ConstraintLayoutStatistics {
-    ctor public ConstraintLayoutStatistics(androidx.constraintlayout.widget.ConstraintLayout!);
-    ctor public ConstraintLayoutStatistics(androidx.constraintlayout.widget.ConstraintLayoutStatistics!);
-    method public void attach(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public androidx.constraintlayout.widget.ConstraintLayoutStatistics! clone();
-    method public void detach();
-    method public long getValue(int);
-    method public void logSummary(String!);
-    method public void logSummary(String!, androidx.constraintlayout.widget.ConstraintLayoutStatistics!);
-    method public void reset();
-    field public static final int DURATION_OF_CHILD_MEASURES = 5; // 0x5
-    field public static final int DURATION_OF_LAYOUT = 7; // 0x7
-    field public static final int DURATION_OF_MEASURES = 6; // 0x6
-    field public static final int NUMBER_OF_CHILD_MEASURES = 4; // 0x4
-    field public static final int NUMBER_OF_CHILD_VIEWS = 3; // 0x3
-    field public static final int NUMBER_OF_EQUATIONS = 9; // 0x9
-    field public static final int NUMBER_OF_LAYOUTS = 1; // 0x1
-    field public static final int NUMBER_OF_ON_MEASURES = 2; // 0x2
-    field public static final int NUMBER_OF_SIMPLE_EQUATIONS = 10; // 0xa
-    field public static final int NUMBER_OF_VARIABLES = 8; // 0x8
-  }
-
-  public class ConstraintProperties {
-    ctor public ConstraintProperties(android.view.View!);
-    method public androidx.constraintlayout.widget.ConstraintProperties! addToHorizontalChain(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! addToHorizontalChainRTL(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! addToVerticalChain(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! alpha(float);
-    method public void apply();
-    method public androidx.constraintlayout.widget.ConstraintProperties! center(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontally(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontally(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontallyRtl(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontallyRtl(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerVertically(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerVertically(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! connect(int, int, int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainDefaultHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainDefaultWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMaxHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMaxWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMinHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMinWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! dimensionRatio(String!);
-    method public androidx.constraintlayout.widget.ConstraintProperties! elevation(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! goneMargin(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! horizontalBias(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! horizontalChainStyle(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! horizontalWeight(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! margin(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! removeConstraints(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! removeFromHorizontalChain();
-    method public androidx.constraintlayout.widget.ConstraintProperties! removeFromVerticalChain();
-    method public androidx.constraintlayout.widget.ConstraintProperties! rotation(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! rotationX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! rotationY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! scaleX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! scaleY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! transformPivot(float, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! transformPivotX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! transformPivotY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translation(float, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translationX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translationY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translationZ(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! verticalBias(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! verticalChainStyle(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! verticalWeight(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! visibility(int);
-    field public static final int BASELINE = 5; // 0x5
-    field public static final int BOTTOM = 4; // 0x4
-    field public static final int END = 7; // 0x7
-    field public static final int LEFT = 1; // 0x1
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int RIGHT = 2; // 0x2
-    field public static final int START = 6; // 0x6
-    field public static final int TOP = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public class ConstraintSet {
-    ctor public ConstraintSet();
-    method public void addColorAttributes(java.lang.String!...!);
-    method public void addFloatAttributes(java.lang.String!...!);
-    method public void addIntAttributes(java.lang.String!...!);
-    method public void addStringAttributes(java.lang.String!...!);
-    method public void addToHorizontalChain(int, int, int);
-    method public void addToHorizontalChainRTL(int, int, int);
-    method public void addToVerticalChain(int, int, int);
-    method public void applyCustomAttributes(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void applyDeltaFrom(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void applyTo(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void applyToHelper(androidx.constraintlayout.widget.ConstraintHelper!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void applyToLayoutParams(int, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!);
-    method public void applyToWithoutCustom(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public static androidx.constraintlayout.widget.ConstraintSet.Constraint! buildDelta(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public void center(int, int, int, int, int, int, int, float);
-    method public void centerHorizontally(int, int);
-    method public void centerHorizontally(int, int, int, int, int, int, int, float);
-    method public void centerHorizontallyRtl(int, int);
-    method public void centerHorizontallyRtl(int, int, int, int, int, int, int, float);
-    method public void centerVertically(int, int);
-    method public void centerVertically(int, int, int, int, int, int, int, float);
-    method public void clear(int);
-    method public void clear(int, int);
-    method public void clone(android.content.Context!, int);
-    method public void clone(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void clone(androidx.constraintlayout.widget.Constraints!);
-    method public void clone(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void connect(int, int, int, int);
-    method public void connect(int, int, int, int, int);
-    method public void constrainCircle(int, int, int, float);
-    method public void constrainDefaultHeight(int, int);
-    method public void constrainDefaultWidth(int, int);
-    method public void constrainHeight(int, int);
-    method public void constrainMaxHeight(int, int);
-    method public void constrainMaxWidth(int, int);
-    method public void constrainMinHeight(int, int);
-    method public void constrainMinWidth(int, int);
-    method public void constrainPercentHeight(int, float);
-    method public void constrainPercentWidth(int, float);
-    method public void constrainWidth(int, int);
-    method public void constrainedHeight(int, boolean);
-    method public void constrainedWidth(int, boolean);
-    method public void create(int, int);
-    method public void createBarrier(int, int, int, int...!);
-    method public void createHorizontalChain(int, int, int, int, int[]!, float[]!, int);
-    method public void createHorizontalChainRtl(int, int, int, int, int[]!, float[]!, int);
-    method public void createVerticalChain(int, int, int, int, int[]!, float[]!, int);
-    method public void dump(androidx.constraintlayout.motion.widget.MotionScene!, int...!);
-    method public boolean getApplyElevation(int);
-    method public androidx.constraintlayout.widget.ConstraintSet.Constraint! getConstraint(int);
-    method public java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>! getCustomAttributeSet();
-    method public int getHeight(int);
-    method public int[]! getKnownIds();
-    method public androidx.constraintlayout.widget.ConstraintSet.Constraint! getParameters(int);
-    method public int[]! getReferencedIds(int);
-    method public String![]! getStateLabels();
-    method public int getVisibility(int);
-    method public int getVisibilityMode(int);
-    method public int getWidth(int);
-    method public boolean isForceId();
-    method public boolean isValidateOnParse();
-    method public void load(android.content.Context!, int);
-    method public void load(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public boolean matchesLabels(java.lang.String!...!);
-    method public void parseColorAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void parseFloatAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void parseIntAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void parseStringAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void readFallback(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void readFallback(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void removeAttribute(String!);
-    method public void removeFromHorizontalChain(int);
-    method public void removeFromVerticalChain(int);
-    method public void setAlpha(int, float);
-    method public void setApplyElevation(int, boolean);
-    method public void setBarrierType(int, int);
-    method public void setColorValue(int, String!, int);
-    method public void setDimensionRatio(int, String!);
-    method public void setEditorAbsoluteX(int, int);
-    method public void setEditorAbsoluteY(int, int);
-    method public void setElevation(int, float);
-    method public void setFloatValue(int, String!, float);
-    method public void setForceId(boolean);
-    method public void setGoneMargin(int, int, int);
-    method public void setGuidelineBegin(int, int);
-    method public void setGuidelineEnd(int, int);
-    method public void setGuidelinePercent(int, float);
-    method public void setHorizontalBias(int, float);
-    method public void setHorizontalChainStyle(int, int);
-    method public void setHorizontalWeight(int, float);
-    method public void setIntValue(int, String!, int);
-    method public void setLayoutWrapBehavior(int, int);
-    method public void setMargin(int, int, int);
-    method public void setReferencedIds(int, int...!);
-    method public void setRotation(int, float);
-    method public void setRotationX(int, float);
-    method public void setRotationY(int, float);
-    method public void setScaleX(int, float);
-    method public void setScaleY(int, float);
-    method public void setStateLabels(String!);
-    method public void setStateLabelsList(java.lang.String!...!);
-    method public void setStringValue(int, String!, String!);
-    method public void setTransformPivot(int, float, float);
-    method public void setTransformPivotX(int, float);
-    method public void setTransformPivotY(int, float);
-    method public void setTranslation(int, float, float);
-    method public void setTranslationX(int, float);
-    method public void setTranslationY(int, float);
-    method public void setTranslationZ(int, float);
-    method public void setValidateOnParse(boolean);
-    method public void setVerticalBias(int, float);
-    method public void setVerticalChainStyle(int, int);
-    method public void setVerticalWeight(int, float);
-    method public void setVisibility(int, int);
-    method public void setVisibilityMode(int, int);
-    method public void writeState(java.io.Writer!, androidx.constraintlayout.widget.ConstraintLayout!, int) throws java.io.IOException;
-    field public static final int BASELINE = 5; // 0x5
-    field public static final int BOTTOM = 4; // 0x4
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static final int CIRCLE_REFERENCE = 8; // 0x8
-    field public static final int END = 7; // 0x7
-    field public static final int GONE = 8; // 0x8
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int HORIZONTAL_GUIDELINE = 0; // 0x0
-    field public static final int INVISIBLE = 4; // 0x4
-    field public static final int LEFT = 1; // 0x1
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_PERCENT = 2; // 0x2
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int RIGHT = 2; // 0x2
-    field public static final int ROTATE_LEFT_OF_PORTRATE = 4; // 0x4
-    field public static final int ROTATE_NONE = 0; // 0x0
-    field public static final int ROTATE_PORTRATE_OF_LEFT = 2; // 0x2
-    field public static final int ROTATE_PORTRATE_OF_RIGHT = 1; // 0x1
-    field public static final int ROTATE_RIGHT_OF_PORTRATE = 3; // 0x3
-    field public static final int START = 6; // 0x6
-    field public static final int TOP = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int VERTICAL_GUIDELINE = 1; // 0x1
-    field public static final int VISIBILITY_MODE_IGNORE = 1; // 0x1
-    field public static final int VISIBILITY_MODE_NORMAL = 0; // 0x0
-    field public static final int VISIBLE = 0; // 0x0
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-    field public String! derivedState;
-    field public String! mIdString;
-    field public int mRotate;
-  }
-
-  public static class ConstraintSet.Constraint {
-    ctor public ConstraintSet.Constraint();
-    method public void applyDelta(androidx.constraintlayout.widget.ConstraintSet.Constraint!);
-    method public void applyTo(androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!);
-    method public androidx.constraintlayout.widget.ConstraintSet.Constraint! clone();
-    method public void printDelta(String!);
-    field public final androidx.constraintlayout.widget.ConstraintSet.Layout! layout;
-    field public java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>! mCustomConstraints;
-    field public final androidx.constraintlayout.widget.ConstraintSet.Motion! motion;
-    field public final androidx.constraintlayout.widget.ConstraintSet.PropertySet! propertySet;
-    field public final androidx.constraintlayout.widget.ConstraintSet.Transform! transform;
-  }
-
-  public static class ConstraintSet.Layout {
-    ctor public ConstraintSet.Layout();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.Layout!);
-    method public void dump(androidx.constraintlayout.motion.widget.MotionScene!, StringBuilder!);
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int UNSET_GONE_MARGIN = -2147483648; // 0x80000000
-    field public int baselineMargin;
-    field public int baselineToBaseline;
-    field public int baselineToBottom;
-    field public int baselineToTop;
-    field public int bottomMargin;
-    field public int bottomToBottom;
-    field public int bottomToTop;
-    field public float circleAngle;
-    field public int circleConstraint;
-    field public int circleRadius;
-    field public boolean constrainedHeight;
-    field public boolean constrainedWidth;
-    field public String! dimensionRatio;
-    field public int editorAbsoluteX;
-    field public int editorAbsoluteY;
-    field public int endMargin;
-    field public int endToEnd;
-    field public int endToStart;
-    field public int goneBaselineMargin;
-    field public int goneBottomMargin;
-    field public int goneEndMargin;
-    field public int goneLeftMargin;
-    field public int goneRightMargin;
-    field public int goneStartMargin;
-    field public int goneTopMargin;
-    field public int guideBegin;
-    field public int guideEnd;
-    field public float guidePercent;
-    field public boolean guidelineUseRtl;
-    field public int heightDefault;
-    field public int heightMax;
-    field public int heightMin;
-    field public float heightPercent;
-    field public float horizontalBias;
-    field public int horizontalChainStyle;
-    field public float horizontalWeight;
-    field public int leftMargin;
-    field public int leftToLeft;
-    field public int leftToRight;
-    field public boolean mApply;
-    field public boolean mBarrierAllowsGoneWidgets;
-    field public int mBarrierDirection;
-    field public int mBarrierMargin;
-    field public String! mConstraintTag;
-    field public int mHeight;
-    field public int mHelperType;
-    field public boolean mIsGuideline;
-    field public boolean mOverride;
-    field public String! mReferenceIdString;
-    field public int[]! mReferenceIds;
-    field public int mWidth;
-    field public int mWrapBehavior;
-    field public int orientation;
-    field public int rightMargin;
-    field public int rightToLeft;
-    field public int rightToRight;
-    field public int startMargin;
-    field public int startToEnd;
-    field public int startToStart;
-    field public int topMargin;
-    field public int topToBottom;
-    field public int topToTop;
-    field public float verticalBias;
-    field public int verticalChainStyle;
-    field public float verticalWeight;
-    field public int widthDefault;
-    field public int widthMax;
-    field public int widthMin;
-    field public float widthPercent;
-  }
-
-  public static class ConstraintSet.Motion {
-    ctor public ConstraintSet.Motion();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.Motion!);
-    field public int mAnimateCircleAngleTo;
-    field public int mAnimateRelativeTo;
-    field public boolean mApply;
-    field public int mDrawPath;
-    field public float mMotionStagger;
-    field public int mPathMotionArc;
-    field public float mPathRotate;
-    field public int mPolarRelativeTo;
-    field public int mQuantizeInterpolatorID;
-    field public String! mQuantizeInterpolatorString;
-    field public int mQuantizeInterpolatorType;
-    field public float mQuantizeMotionPhase;
-    field public int mQuantizeMotionSteps;
-    field public String! mTransitionEasing;
-  }
-
-  public static class ConstraintSet.PropertySet {
-    ctor public ConstraintSet.PropertySet();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.PropertySet!);
-    field public float alpha;
-    field public boolean mApply;
-    field public float mProgress;
-    field public int mVisibilityMode;
-    field public int visibility;
-  }
-
-  public static class ConstraintSet.Transform {
-    ctor public ConstraintSet.Transform();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.Transform!);
-    field public boolean applyElevation;
-    field public float elevation;
-    field public boolean mApply;
-    field public float rotation;
-    field public float rotationX;
-    field public float rotationY;
-    field public float scaleX;
-    field public float scaleY;
-    field public int transformPivotTarget;
-    field public float transformPivotX;
-    field public float transformPivotY;
-    field public float translationX;
-    field public float translationY;
-    field public float translationZ;
-  }
-
-  public class Constraints extends android.view.ViewGroup {
-    ctor public Constraints(android.content.Context!);
-    ctor public Constraints(android.content.Context!, android.util.AttributeSet!);
-    ctor public Constraints(android.content.Context!, android.util.AttributeSet!, int);
-    method protected androidx.constraintlayout.widget.Constraints.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.constraintlayout.widget.Constraints.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method public androidx.constraintlayout.widget.ConstraintSet! getConstraintSet();
-    field public static final String TAG = "Constraints";
-  }
-
-  public static class Constraints.LayoutParams extends androidx.constraintlayout.widget.ConstraintLayout.LayoutParams {
-    ctor public Constraints.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public Constraints.LayoutParams(androidx.constraintlayout.widget.Constraints.LayoutParams!);
-    ctor public Constraints.LayoutParams(int, int);
-    field public float alpha;
-    field public boolean applyElevation;
-    field public float elevation;
-    field public float rotation;
-    field public float rotationX;
-    field public float rotationY;
-    field public float scaleX;
-    field public float scaleY;
-    field public float transformPivotX;
-    field public float transformPivotY;
-    field public float translationX;
-    field public float translationY;
-    field public float translationZ;
-  }
-
-  public abstract class ConstraintsChangedListener {
-    ctor public ConstraintsChangedListener();
-    method public void postLayoutChange(int, int);
-    method public void preLayoutChange(int, int);
-  }
-
-  public class Group extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public Group(android.content.Context!);
-    ctor public Group(android.content.Context!, android.util.AttributeSet!);
-    ctor public Group(android.content.Context!, android.util.AttributeSet!, int);
-    method public void onAttachedToWindow();
-  }
-
-  public class Guideline extends android.view.View {
-    ctor public Guideline(android.content.Context!);
-    ctor public Guideline(android.content.Context!, android.util.AttributeSet!);
-    ctor public Guideline(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public Guideline(android.content.Context!, android.util.AttributeSet!, int, int);
-    method public void setFilterRedundantCalls(boolean);
-    method public void setGuidelineBegin(int);
-    method public void setGuidelineEnd(int);
-    method public void setGuidelinePercent(float);
-  }
-
-  public class Placeholder extends android.view.View {
-    ctor public Placeholder(android.content.Context!);
-    ctor public Placeholder(android.content.Context!, android.util.AttributeSet!);
-    ctor public Placeholder(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public Placeholder(android.content.Context!, android.util.AttributeSet!, int, int);
-    method public android.view.View! getContent();
-    method public int getEmptyVisibility();
-    method public void onDraw(android.graphics.Canvas);
-    method public void setContentId(int);
-    method public void setEmptyVisibility(int);
-    method public void updatePostMeasure(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePreLayout(androidx.constraintlayout.widget.ConstraintLayout!);
-  }
-
-  public class ReactiveGuide extends android.view.View implements androidx.constraintlayout.widget.SharedValues.SharedValuesListener {
-    ctor public ReactiveGuide(android.content.Context!);
-    ctor public ReactiveGuide(android.content.Context!, android.util.AttributeSet!);
-    ctor public ReactiveGuide(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public ReactiveGuide(android.content.Context!, android.util.AttributeSet!, int, int);
-    method public int getApplyToConstraintSetId();
-    method public int getAttributeId();
-    method public boolean isAnimatingChange();
-    method public void onNewValue(int, int, int);
-    method public void setAnimateChange(boolean);
-    method public void setApplyToConstraintSetId(int);
-    method public void setAttributeId(int);
-    method public void setGuidelineBegin(int);
-    method public void setGuidelineEnd(int);
-    method public void setGuidelinePercent(float);
-  }
-
-  public class SharedValues {
-    ctor public SharedValues();
-    method public void addListener(int, androidx.constraintlayout.widget.SharedValues.SharedValuesListener!);
-    method public void clearListeners();
-    method public void fireNewValue(int, int);
-    method public int getValue(int);
-    method public void removeListener(androidx.constraintlayout.widget.SharedValues.SharedValuesListener!);
-    method public void removeListener(int, androidx.constraintlayout.widget.SharedValues.SharedValuesListener!);
-    field public static final int UNSET = -1; // 0xffffffff
-  }
-
-  public static interface SharedValues.SharedValuesListener {
-    method public void onNewValue(int, int, int);
-  }
-
-  public class StateSet {
-    ctor public StateSet(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public int convertToConstraintSet(int, int, float, float);
-    method public boolean needsToChange(int, float, float);
-    method public void setOnConstraintsChanged(androidx.constraintlayout.widget.ConstraintsChangedListener!);
-    method public int stateGetConstraintID(int, int, int);
-    method public int updateConstraints(int, int, float, float);
-    field public static final String TAG = "ConstraintLayoutStates";
-  }
-
-  public abstract class VirtualLayout extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public VirtualLayout(android.content.Context!);
-    ctor public VirtualLayout(android.content.Context!, android.util.AttributeSet!);
-    ctor public VirtualLayout(android.content.Context!, android.util.AttributeSet!, int);
-    method public void onAttachedToWindow();
-    method public void onMeasure(androidx.constraintlayout.core.widgets.VirtualLayout!, int, int);
-  }
-
-}
-
diff --git a/constraintlayout/constraintlayout/api/restricted_2.2.0-beta01.txt b/constraintlayout/constraintlayout/api/restricted_2.2.0-beta01.txt
deleted file mode 100644
index 2d187a8..0000000
--- a/constraintlayout/constraintlayout/api/restricted_2.2.0-beta01.txt
+++ /dev/null
@@ -1,1714 +0,0 @@
-// Signature format: 4.0
-package androidx.constraintlayout.helper.widget {
-
-  public class Carousel extends androidx.constraintlayout.motion.widget.MotionHelper {
-    ctor public Carousel(android.content.Context!);
-    ctor public Carousel(android.content.Context!, android.util.AttributeSet!);
-    ctor public Carousel(android.content.Context!, android.util.AttributeSet!, int);
-    method public int getCount();
-    method public int getCurrentIndex();
-    method public boolean isInfinite();
-    method public void jumpToIndex(int);
-    method public void refresh();
-    method public void setAdapter(androidx.constraintlayout.helper.widget.Carousel.Adapter!);
-    method public void setInfinite(boolean);
-    method public void transitionToIndex(int, int);
-    field public static final int TOUCH_UP_CARRY_ON = 2; // 0x2
-    field public static final int TOUCH_UP_IMMEDIATE_STOP = 1; // 0x1
-  }
-
-  public static interface Carousel.Adapter {
-    method public int count();
-    method public void onNewItem(int);
-    method public void populate(android.view.View!, int);
-  }
-
-  public class CircularFlow extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public CircularFlow(android.content.Context!);
-    ctor public CircularFlow(android.content.Context!, android.util.AttributeSet!);
-    ctor public CircularFlow(android.content.Context!, android.util.AttributeSet!, int);
-    method public void addViewToCircularFlow(android.view.View!, int, float);
-    method public float[]! getAngles();
-    method public int[]! getRadius();
-    method public boolean isUpdatable(android.view.View!);
-    method public void setDefaultAngle(float);
-    method public void setDefaultRadius(int);
-    method public void updateAngle(android.view.View!, float);
-    method public void updateRadius(android.view.View!, int);
-    method public void updateReference(android.view.View!, int, float);
-  }
-
-  public class Flow extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public Flow(android.content.Context!);
-    ctor public Flow(android.content.Context!, android.util.AttributeSet!);
-    ctor public Flow(android.content.Context!, android.util.AttributeSet!, int);
-    method public void setFirstHorizontalBias(float);
-    method public void setFirstHorizontalStyle(int);
-    method public void setFirstVerticalBias(float);
-    method public void setFirstVerticalStyle(int);
-    method public void setHorizontalAlign(int);
-    method public void setHorizontalBias(float);
-    method public void setHorizontalGap(int);
-    method public void setHorizontalStyle(int);
-    method public void setLastHorizontalBias(float);
-    method public void setLastHorizontalStyle(int);
-    method public void setLastVerticalBias(float);
-    method public void setLastVerticalStyle(int);
-    method public void setMaxElementsWrap(int);
-    method public void setOrientation(int);
-    method public void setPadding(int);
-    method public void setPaddingBottom(int);
-    method public void setPaddingLeft(int);
-    method public void setPaddingRight(int);
-    method public void setPaddingTop(int);
-    method public void setVerticalAlign(int);
-    method public void setVerticalBias(float);
-    method public void setVerticalGap(int);
-    method public void setVerticalStyle(int);
-    method public void setWrapMode(int);
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int HORIZONTAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int HORIZONTAL_ALIGN_END = 1; // 0x1
-    field public static final int HORIZONTAL_ALIGN_START = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int VERTICAL_ALIGN_BASELINE = 3; // 0x3
-    field public static final int VERTICAL_ALIGN_BOTTOM = 1; // 0x1
-    field public static final int VERTICAL_ALIGN_CENTER = 2; // 0x2
-    field public static final int VERTICAL_ALIGN_TOP = 0; // 0x0
-    field public static final int WRAP_ALIGNED = 2; // 0x2
-    field public static final int WRAP_CHAIN = 1; // 0x1
-    field public static final int WRAP_NONE = 0; // 0x0
-  }
-
-  public class Grid extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public Grid(android.content.Context!);
-    ctor public Grid(android.content.Context!, android.util.AttributeSet!);
-    ctor public Grid(android.content.Context!, android.util.AttributeSet!, int);
-    method public String! getColumnWeights();
-    method public int getColumns();
-    method public float getHorizontalGaps();
-    method public int getOrientation();
-    method public String! getRowWeights();
-    method public int getRows();
-    method public String! getSkips();
-    method public String! getSpans();
-    method public float getVerticalGaps();
-    method public void setColumnWeights(String!);
-    method public void setColumns(int);
-    method public void setHorizontalGaps(float);
-    method public void setOrientation(int);
-    method public void setRowWeights(String!);
-    method public void setRows(int);
-    method public void setSkips(String!);
-    method public void setSpans(CharSequence!);
-    method public void setVerticalGaps(float);
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int VERTICAL = 1; // 0x1
-  }
-
-  public class Layer extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public Layer(android.content.Context!);
-    ctor public Layer(android.content.Context!, android.util.AttributeSet!);
-    ctor public Layer(android.content.Context!, android.util.AttributeSet!, int);
-    method protected void calcCenters();
-    field protected float mComputedCenterX;
-    field protected float mComputedCenterY;
-    field protected float mComputedMaxX;
-    field protected float mComputedMaxY;
-    field protected float mComputedMinX;
-    field protected float mComputedMinY;
-  }
-
-  public class MotionEffect extends androidx.constraintlayout.motion.widget.MotionHelper {
-    ctor public MotionEffect(android.content.Context!);
-    ctor public MotionEffect(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionEffect(android.content.Context!, android.util.AttributeSet!, int);
-    field public static final int AUTO = -1; // 0xffffffff
-    field public static final int EAST = 2; // 0x2
-    field public static final int NORTH = 0; // 0x0
-    field public static final int SOUTH = 1; // 0x1
-    field public static final String TAG = "FadeMove";
-    field public static final int WEST = 3; // 0x3
-  }
-
-  public class MotionPlaceholder extends androidx.constraintlayout.widget.VirtualLayout {
-    ctor public MotionPlaceholder(android.content.Context!);
-    ctor public MotionPlaceholder(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionPlaceholder(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public MotionPlaceholder(android.content.Context!, android.util.AttributeSet!, int, int);
-  }
-
-}
-
-package androidx.constraintlayout.motion.utils {
-
-  public class CustomSupport {
-    ctor public CustomSupport();
-    method public static void setInterpolatedValue(androidx.constraintlayout.widget.ConstraintAttribute!, android.view.View!, float[]!);
-  }
-
-  public class StopLogic extends androidx.constraintlayout.motion.widget.MotionInterpolator {
-    ctor public StopLogic();
-    method public void config(float, float, float, float, float, float);
-    method public String! debug(String!, float);
-    method public float getInterpolation(float);
-    method public float getVelocity();
-    method public float getVelocity(float);
-    method public boolean isStopped();
-    method public void springConfig(float, float, float, float, float, float, float, int);
-  }
-
-  public abstract class ViewOscillator extends androidx.constraintlayout.core.motion.utils.KeyCycleOscillator {
-    ctor public ViewOscillator();
-    method public static androidx.constraintlayout.motion.utils.ViewOscillator! makeSpline(String!);
-    method public abstract void setProperty(android.view.View!, float);
-  }
-
-  public static class ViewOscillator.PathRotateSet extends androidx.constraintlayout.motion.utils.ViewOscillator {
-    ctor public ViewOscillator.PathRotateSet();
-    method public void setPathRotate(android.view.View!, float, double, double);
-    method public void setProperty(android.view.View!, float);
-  }
-
-  public abstract class ViewSpline extends androidx.constraintlayout.core.motion.utils.SplineSet {
-    ctor public ViewSpline();
-    method public static androidx.constraintlayout.motion.utils.ViewSpline! makeCustomSpline(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public static androidx.constraintlayout.motion.utils.ViewSpline! makeSpline(String!);
-    method public abstract void setProperty(android.view.View!, float);
-  }
-
-  public static class ViewSpline.CustomSet extends androidx.constraintlayout.motion.utils.ViewSpline {
-    ctor public ViewSpline.CustomSet(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public void setPoint(int, androidx.constraintlayout.widget.ConstraintAttribute!);
-    method public void setProperty(android.view.View!, float);
-  }
-
-  public static class ViewSpline.PathRotate extends androidx.constraintlayout.motion.utils.ViewSpline {
-    ctor public ViewSpline.PathRotate();
-    method public void setPathRotate(android.view.View!, float, double, double);
-    method public void setProperty(android.view.View!, float);
-  }
-
-  public class ViewState {
-    ctor public ViewState();
-    method public void getState(android.view.View!);
-    method public int height();
-    method public int width();
-    field public int bottom;
-    field public int left;
-    field public int right;
-    field public float rotation;
-    field public int top;
-  }
-
-  public abstract class ViewTimeCycle extends androidx.constraintlayout.core.motion.utils.TimeCycleSplineSet {
-    ctor public ViewTimeCycle();
-    method public float get(float, long, android.view.View!, androidx.constraintlayout.core.motion.utils.KeyCache!);
-    method public static androidx.constraintlayout.motion.utils.ViewTimeCycle! makeCustomSpline(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public static androidx.constraintlayout.motion.utils.ViewTimeCycle! makeSpline(String!, long);
-    method public abstract boolean setProperty(android.view.View!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  public static class ViewTimeCycle.CustomSet extends androidx.constraintlayout.motion.utils.ViewTimeCycle {
-    ctor public ViewTimeCycle.CustomSet(String!, android.util.SparseArray<androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public void setPoint(int, androidx.constraintlayout.widget.ConstraintAttribute!, float, int, float);
-    method public boolean setProperty(android.view.View!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-  public static class ViewTimeCycle.PathRotate extends androidx.constraintlayout.motion.utils.ViewTimeCycle {
-    ctor public ViewTimeCycle.PathRotate();
-    method public boolean setPathRotate(android.view.View!, androidx.constraintlayout.core.motion.utils.KeyCache!, float, long, double, double);
-    method public boolean setProperty(android.view.View!, float, long, androidx.constraintlayout.core.motion.utils.KeyCache!);
-  }
-
-}
-
-package androidx.constraintlayout.motion.widget {
-
-  public interface Animatable {
-    method public float getProgress();
-    method public void setProgress(float);
-  }
-
-  public interface CustomFloatAttributes {
-    method public float get(String!);
-    method public String![]! getListOfAttributes();
-    method public void set(String!, float);
-  }
-
-  public class Debug {
-    ctor public Debug();
-    method public static void dumpLayoutParams(android.view.ViewGroup!, String!);
-    method public static void dumpLayoutParams(android.view.ViewGroup.LayoutParams!, String!);
-    method public static void dumpPoc(Object!);
-    method public static String! getActionType(android.view.MotionEvent!);
-    method public static String! getCallFrom(int);
-    method public static String! getLoc();
-    method public static String! getLocation();
-    method public static String! getLocation2();
-    method public static String! getName(android.content.Context!, int);
-    method public static String! getName(android.content.Context!, int[]!);
-    method public static String! getName(android.view.View!);
-    method public static String! getState(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public static String! getState(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public static void logStack(String!, String!, int);
-    method public static void printStack(String!, int);
-  }
-
-  public class DesignTool {
-    ctor public DesignTool(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public int designAccess(int, String!, Object!, float[]!, int, float[]!, int);
-    method public void disableAutoTransition(boolean);
-    method public void dumpConstraintSet(String!);
-    method public int getAnimationKeyFrames(Object!, float[]!);
-    method public int getAnimationPath(Object!, float[]!, int);
-    method public void getAnimationRectangles(Object!, float[]!);
-    method public String! getEndState();
-    method public int getKeyFrameInfo(Object!, int, int[]!);
-    method public float getKeyFramePosition(Object!, int, float, float);
-    method public int getKeyFramePositions(Object!, int[]!, float[]!);
-    method public Object! getKeyframe(int, int, int);
-    method public Object! getKeyframe(Object!, int, int);
-    method public Object! getKeyframeAtLocation(Object!, float, float);
-    method public Boolean! getPositionKeyframe(Object!, Object!, float, float, String![]!, float[]!);
-    method public float getProgress();
-    method public String! getStartState();
-    method public String! getState();
-    method public long getTransitionTimeMs();
-    method public boolean isInTransition();
-    method public void setAttributes(int, String!, Object!, Object!);
-    method public void setKeyFrame(Object!, int, String!, Object!);
-    method public boolean setKeyFramePosition(Object!, int, int, float, float);
-    method public void setKeyframe(Object!, String!, Object!);
-    method public void setState(String!);
-    method public void setToolPosition(float);
-    method public void setTransition(String!, String!);
-    method public void setViewDebug(Object!, int);
-  }
-
-  public interface FloatLayout {
-    method public void layout(float, float, float, float);
-  }
-
-  public abstract class Key {
-    ctor public Key();
-    method public abstract void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public abstract androidx.constraintlayout.motion.widget.Key! clone();
-    method public androidx.constraintlayout.motion.widget.Key! copy(androidx.constraintlayout.motion.widget.Key!);
-    method public int getFramePosition();
-    method public void setFramePosition(int);
-    method public void setInterpolation(java.util.HashMap<java.lang.String!,java.lang.Integer!>!);
-    method public abstract void setValue(String!, Object!);
-    method public androidx.constraintlayout.motion.widget.Key! setViewId(int);
-    field public static final String ALPHA = "alpha";
-    field public static final String CURVEFIT = "curveFit";
-    field public static final String CUSTOM = "CUSTOM";
-    field public static final String ELEVATION = "elevation";
-    field public static final String MOTIONPROGRESS = "motionProgress";
-    field public static final String PIVOT_X = "transformPivotX";
-    field public static final String PIVOT_Y = "transformPivotY";
-    field public static final String PROGRESS = "progress";
-    field public static final String ROTATION = "rotation";
-    field public static final String ROTATION_X = "rotationX";
-    field public static final String ROTATION_Y = "rotationY";
-    field public static final String SCALE_X = "scaleX";
-    field public static final String SCALE_Y = "scaleY";
-    field public static final String TRANSITIONEASING = "transitionEasing";
-    field public static final String TRANSITION_PATH_ROTATE = "transitionPathRotate";
-    field public static final String TRANSLATION_X = "translationX";
-    field public static final String TRANSLATION_Y = "translationY";
-    field public static final String TRANSLATION_Z = "translationZ";
-    field public static int UNSET;
-    field public static final String VISIBILITY = "visibility";
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_PHASE = "wavePhase";
-    field public static final String WAVE_VARIES_BY = "waveVariesBy";
-    field protected int mType;
-  }
-
-  public class KeyAttributes extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyAttributes();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final int KEY_TYPE = 1; // 0x1
-  }
-
-  public class KeyCycle extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyCycle();
-    method public void addCycleValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewOscillator!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public float getValue(String!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final int KEY_TYPE = 4; // 0x4
-    field public static final int SHAPE_BOUNCE = 6; // 0x6
-    field public static final int SHAPE_COS_WAVE = 5; // 0x5
-    field public static final int SHAPE_REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SHAPE_SAW_WAVE = 3; // 0x3
-    field public static final int SHAPE_SIN_WAVE = 0; // 0x0
-    field public static final int SHAPE_SQUARE_WAVE = 1; // 0x1
-    field public static final int SHAPE_TRIANGLE_WAVE = 2; // 0x2
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_PHASE = "wavePhase";
-    field public static final String WAVE_SHAPE = "waveShape";
-  }
-
-  public class KeyFrames {
-    ctor public KeyFrames();
-    ctor public KeyFrames(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public void addAllFrames(androidx.constraintlayout.motion.widget.MotionController!);
-    method public void addFrames(androidx.constraintlayout.motion.widget.MotionController!);
-    method public void addKey(androidx.constraintlayout.motion.widget.Key!);
-    method public java.util.ArrayList<androidx.constraintlayout.motion.widget.Key!>! getKeyFramesForView(int);
-    method public java.util.Set<java.lang.Integer!>! getKeys();
-    field public static final int UNSET = -1; // 0xffffffff
-  }
-
-  public class KeyPosition extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyPosition();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public boolean intersects(int, int, android.graphics.RectF!, android.graphics.RectF!, float, float);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void positionAttributes(android.view.View!, android.graphics.RectF!, android.graphics.RectF!, float, float, String![]!, float[]!);
-    method public void setType(int);
-    method public void setValue(String!, Object!);
-    field public static final String DRAWPATH = "drawPath";
-    field public static final String PERCENT_HEIGHT = "percentHeight";
-    field public static final String PERCENT_WIDTH = "percentWidth";
-    field public static final String PERCENT_X = "percentX";
-    field public static final String PERCENT_Y = "percentY";
-    field public static final String SIZE_PERCENT = "sizePercent";
-    field public static final String TRANSITION_EASING = "transitionEasing";
-    field public static final int TYPE_AXIS = 3; // 0x3
-    field public static final int TYPE_CARTESIAN = 0; // 0x0
-    field public static final int TYPE_PATH = 1; // 0x1
-    field public static final int TYPE_SCREEN = 2; // 0x2
-  }
-
-  public class KeyTimeCycle extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyTimeCycle();
-    method public void addTimeValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewTimeCycle!>!);
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final int KEY_TYPE = 3; // 0x3
-    field public static final int SHAPE_BOUNCE = 6; // 0x6
-    field public static final int SHAPE_COS_WAVE = 5; // 0x5
-    field public static final int SHAPE_REVERSE_SAW_WAVE = 4; // 0x4
-    field public static final int SHAPE_SAW_WAVE = 3; // 0x3
-    field public static final int SHAPE_SIN_WAVE = 0; // 0x0
-    field public static final int SHAPE_SQUARE_WAVE = 1; // 0x1
-    field public static final int SHAPE_TRIANGLE_WAVE = 2; // 0x2
-    field public static final String WAVE_OFFSET = "waveOffset";
-    field public static final String WAVE_PERIOD = "wavePeriod";
-    field public static final String WAVE_SHAPE = "waveShape";
-  }
-
-  public class KeyTrigger extends androidx.constraintlayout.motion.widget.Key {
-    ctor public KeyTrigger();
-    method public void addValues(java.util.HashMap<java.lang.String!,androidx.constraintlayout.motion.utils.ViewSpline!>!);
-    method public androidx.constraintlayout.motion.widget.Key! clone();
-    method public void conditionallyFire(float, android.view.View!);
-    method public void getAttributeNames(java.util.HashSet<java.lang.String!>!);
-    method public void load(android.content.Context!, android.util.AttributeSet!);
-    method public void setValue(String!, Object!);
-    field public static final String CROSS = "CROSS";
-    field public static final int KEY_TYPE = 5; // 0x5
-    field public static final String NEGATIVE_CROSS = "negativeCross";
-    field public static final String POSITIVE_CROSS = "positiveCross";
-    field public static final String POST_LAYOUT = "postLayout";
-    field public static final String TRIGGER_COLLISION_ID = "triggerCollisionId";
-    field public static final String TRIGGER_COLLISION_VIEW = "triggerCollisionView";
-    field public static final String TRIGGER_ID = "triggerID";
-    field public static final String TRIGGER_RECEIVER = "triggerReceiver";
-    field public static final String TRIGGER_SLACK = "triggerSlack";
-    field public static final String VIEW_TRANSITION_ON_CROSS = "viewTransitionOnCross";
-    field public static final String VIEW_TRANSITION_ON_NEGATIVE_CROSS = "viewTransitionOnNegativeCross";
-    field public static final String VIEW_TRANSITION_ON_POSITIVE_CROSS = "viewTransitionOnPositiveCross";
-  }
-
-  public class MotionController {
-    method public void addKey(androidx.constraintlayout.motion.widget.Key!);
-    method public int getAnimateRelativeTo();
-    method public void getCenter(double, float[]!, float[]!);
-    method public float getCenterX();
-    method public float getCenterY();
-    method public int getDrawPath();
-    method public float getFinalHeight();
-    method public float getFinalWidth();
-    method public float getFinalX();
-    method public float getFinalY();
-    method public int getKeyFrameInfo(int, int[]!);
-    method public int getKeyFramePositions(int[]!, float[]!);
-    method public float getStartHeight();
-    method public float getStartWidth();
-    method public float getStartX();
-    method public float getStartY();
-    method public int getTransformPivotTarget();
-    method public android.view.View! getView();
-    method public void remeasure();
-    method public void setDrawPath(int);
-    method public void setPathMotionArc(int);
-    method public void setStartState(androidx.constraintlayout.motion.utils.ViewState!, android.view.View!, int, int, int);
-    method public void setTransformPivotTarget(int);
-    method public void setView(android.view.View!);
-    method public void setup(int, int, float, long);
-    method public void setupRelative(androidx.constraintlayout.motion.widget.MotionController!);
-    field public static final int DRAW_PATH_AS_CONFIGURED = 4; // 0x4
-    field public static final int DRAW_PATH_BASIC = 1; // 0x1
-    field public static final int DRAW_PATH_CARTESIAN = 3; // 0x3
-    field public static final int DRAW_PATH_NONE = 0; // 0x0
-    field public static final int DRAW_PATH_RECTANGLE = 5; // 0x5
-    field public static final int DRAW_PATH_RELATIVE = 2; // 0x2
-    field public static final int DRAW_PATH_SCREEN = 6; // 0x6
-    field public static final int HORIZONTAL_PATH_X = 2; // 0x2
-    field public static final int HORIZONTAL_PATH_Y = 3; // 0x3
-    field public static final int PATH_PERCENT = 0; // 0x0
-    field public static final int PATH_PERPENDICULAR = 1; // 0x1
-    field public static final int ROTATION_LEFT = 2; // 0x2
-    field public static final int ROTATION_RIGHT = 1; // 0x1
-    field public static final int VERTICAL_PATH_X = 4; // 0x4
-    field public static final int VERTICAL_PATH_Y = 5; // 0x5
-  }
-
-  public class MotionHelper extends androidx.constraintlayout.widget.ConstraintHelper implements androidx.constraintlayout.motion.widget.MotionHelperInterface {
-    ctor public MotionHelper(android.content.Context!);
-    ctor public MotionHelper(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionHelper(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getProgress();
-    method public boolean isDecorator();
-    method public boolean isUseOnHide();
-    method public boolean isUsedOnShow();
-    method public void onFinishedMotionScene(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void onPostDraw(android.graphics.Canvas!);
-    method public void onPreDraw(android.graphics.Canvas!);
-    method public void onPreSetup(androidx.constraintlayout.motion.widget.MotionLayout!, java.util.HashMap<android.view.View!,androidx.constraintlayout.motion.widget.MotionController!>!);
-    method public void onTransitionChange(androidx.constraintlayout.motion.widget.MotionLayout!, int, int, float);
-    method public void onTransitionCompleted(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void onTransitionStarted(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public void onTransitionTrigger(androidx.constraintlayout.motion.widget.MotionLayout!, int, boolean, float);
-    method public void setProgress(android.view.View!, float);
-    method public void setProgress(float);
-    field protected android.view.View![]! views;
-  }
-
-  public interface MotionHelperInterface extends androidx.constraintlayout.motion.widget.Animatable androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener {
-    method public boolean isDecorator();
-    method public boolean isUseOnHide();
-    method public boolean isUsedOnShow();
-    method public void onFinishedMotionScene(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void onPostDraw(android.graphics.Canvas!);
-    method public void onPreDraw(android.graphics.Canvas!);
-    method public void onPreSetup(androidx.constraintlayout.motion.widget.MotionLayout!, java.util.HashMap<android.view.View!,androidx.constraintlayout.motion.widget.MotionController!>!);
-  }
-
-  public abstract class MotionInterpolator implements android.view.animation.Interpolator {
-    ctor public MotionInterpolator();
-    method public abstract float getVelocity();
-  }
-
-  public class MotionLayout extends androidx.constraintlayout.widget.ConstraintLayout implements androidx.core.view.NestedScrollingParent3 {
-    ctor public MotionLayout(android.content.Context);
-    ctor public MotionLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public MotionLayout(android.content.Context, android.util.AttributeSet?, int);
-    method public void addTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method public boolean applyViewTransition(int, androidx.constraintlayout.motion.widget.MotionController!);
-    method public androidx.constraintlayout.widget.ConstraintSet! cloneConstraintSet(int);
-    method public void enableTransition(int, boolean);
-    method public void enableViewTransition(int, boolean);
-    method protected void fireTransitionCompleted();
-    method public void fireTrigger(int, boolean, float);
-    method public androidx.constraintlayout.widget.ConstraintSet! getConstraintSet(int);
-    method @IdRes public int[]! getConstraintSetIds();
-    method public int getCurrentState();
-    method public java.util.ArrayList<androidx.constraintlayout.motion.widget.MotionScene.Transition!>! getDefinedTransitions();
-    method public androidx.constraintlayout.motion.widget.DesignTool! getDesignTool();
-    method public int getEndState();
-    method public int[]! getMatchingConstraintSetIds(java.lang.String!...!);
-    method protected long getNanoTime();
-    method public float getProgress();
-    method public androidx.constraintlayout.motion.widget.MotionScene! getScene();
-    method public int getStartState();
-    method public float getTargetPosition();
-    method public androidx.constraintlayout.motion.widget.MotionScene.Transition! getTransition(int);
-    method public android.os.Bundle! getTransitionState();
-    method public long getTransitionTimeMs();
-    method public float getVelocity();
-    method public void getViewVelocity(android.view.View!, float, float, float[]!, int);
-    method public boolean isDelayedApplicationOfInitialState();
-    method public boolean isInRotation();
-    method public boolean isInteractionEnabled();
-    method public boolean isViewTransitionEnabled(int);
-    method public void jumpToState(int);
-    method protected androidx.constraintlayout.motion.widget.MotionLayout.MotionTracker! obtainVelocityTracker();
-    method public void onNestedPreScroll(android.view.View, int, int, int[], int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int);
-    method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]!);
-    method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
-    method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
-    method public void onStopNestedScroll(android.view.View, int);
-    method @Deprecated public void rebuildMotion();
-    method public void rebuildScene();
-    method public boolean removeTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method public void rotateTo(int, int);
-    method public void scheduleTransitionTo(int);
-    method public void setDebugMode(int);
-    method public void setDelayedApplicationOfInitialState(boolean);
-    method public void setInteractionEnabled(boolean);
-    method public void setInterpolatedProgress(float);
-    method public void setOnHide(float);
-    method public void setOnShow(float);
-    method public void setProgress(float);
-    method public void setProgress(float, float);
-    method public void setScene(androidx.constraintlayout.motion.widget.MotionScene!);
-    method protected void setTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public void setTransition(int);
-    method public void setTransition(int, int);
-    method public void setTransitionDuration(int);
-    method public void setTransitionListener(androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener!);
-    method public void setTransitionState(android.os.Bundle!);
-    method public void touchAnimateTo(int, float, float);
-    method public void touchSpringTo(float, float);
-    method public void transitionToEnd();
-    method public void transitionToEnd(Runnable!);
-    method public void transitionToStart();
-    method public void transitionToStart(Runnable!);
-    method public void transitionToState(int);
-    method public void transitionToState(int, int);
-    method public void transitionToState(int, int, int);
-    method public void transitionToState(int, int, int, int);
-    method public void updateState();
-    method public void updateState(int, androidx.constraintlayout.widget.ConstraintSet!);
-    method public void updateStateAnimate(int, androidx.constraintlayout.widget.ConstraintSet!, int);
-    method public void viewTransition(int, android.view.View!...!);
-    field public static final int DEBUG_SHOW_NONE = 0; // 0x0
-    field public static final int DEBUG_SHOW_PATH = 2; // 0x2
-    field public static final int DEBUG_SHOW_PROGRESS = 1; // 0x1
-    field public static boolean IS_IN_EDIT_MODE;
-    field public static final int TOUCH_UP_COMPLETE = 0; // 0x0
-    field public static final int TOUCH_UP_COMPLETE_TO_END = 2; // 0x2
-    field public static final int TOUCH_UP_COMPLETE_TO_START = 1; // 0x1
-    field public static final int TOUCH_UP_DECELERATE = 4; // 0x4
-    field public static final int TOUCH_UP_DECELERATE_AND_COMPLETE = 5; // 0x5
-    field public static final int TOUCH_UP_NEVER_TO_END = 7; // 0x7
-    field public static final int TOUCH_UP_NEVER_TO_START = 6; // 0x6
-    field public static final int TOUCH_UP_STOP = 3; // 0x3
-    field public static final int VELOCITY_LAYOUT = 1; // 0x1
-    field public static final int VELOCITY_POST_LAYOUT = 0; // 0x0
-    field public static final int VELOCITY_STATIC_LAYOUT = 3; // 0x3
-    field public static final int VELOCITY_STATIC_POST_LAYOUT = 2; // 0x2
-    field protected boolean mMeasureDuringTransition;
-  }
-
-  protected static interface MotionLayout.MotionTracker {
-    method public void addMovement(android.view.MotionEvent!);
-    method public void clear();
-    method public void computeCurrentVelocity(int);
-    method public void computeCurrentVelocity(int, float);
-    method public float getXVelocity();
-    method public float getXVelocity(int);
-    method public float getYVelocity();
-    method public float getYVelocity(int);
-    method public void recycle();
-  }
-
-  public static interface MotionLayout.TransitionListener {
-    method public void onTransitionChange(androidx.constraintlayout.motion.widget.MotionLayout!, int, int, float);
-    method public void onTransitionCompleted(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void onTransitionStarted(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public void onTransitionTrigger(androidx.constraintlayout.motion.widget.MotionLayout!, int, boolean, float);
-  }
-
-  public class MotionScene {
-    ctor public MotionScene(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void addOnClickListeners(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void addTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public boolean applyViewTransition(int, androidx.constraintlayout.motion.widget.MotionController!);
-    method public androidx.constraintlayout.motion.widget.MotionScene.Transition! bestTransitionFor(int, float, float, android.view.MotionEvent!);
-    method public void disableAutoTransition(boolean);
-    method public void enableViewTransition(int, boolean);
-    method public int gatPathMotionArc();
-    method public androidx.constraintlayout.widget.ConstraintSet! getConstraintSet(android.content.Context!, String!);
-    method public int[]! getConstraintSetIds();
-    method public java.util.ArrayList<androidx.constraintlayout.motion.widget.MotionScene.Transition!>! getDefinedTransitions();
-    method public int getDuration();
-    method public android.view.animation.Interpolator! getInterpolator();
-    method public void getKeyFrames(androidx.constraintlayout.motion.widget.MotionController!);
-    method public int[]! getMatchingStateLabels(java.lang.String!...!);
-    method public float getPathPercent(android.view.View!, int);
-    method public float getStaggered();
-    method public androidx.constraintlayout.motion.widget.MotionScene.Transition! getTransitionById(int);
-    method public java.util.List<androidx.constraintlayout.motion.widget.MotionScene.Transition!>! getTransitionsWithState(int);
-    method public boolean isViewTransitionEnabled(int);
-    method public int lookUpConstraintId(String!);
-    method public String! lookUpConstraintName(int);
-    method protected void onLayout(boolean, int, int, int, int);
-    method public void removeTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public void setConstraintSet(int, androidx.constraintlayout.widget.ConstraintSet!);
-    method public void setDuration(int);
-    method public void setKeyframe(android.view.View!, int, String!, Object!);
-    method public void setRtl(boolean);
-    method public void setTransition(androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public static String! stripID(String!);
-    method public boolean validateLayout(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void viewTransition(int, android.view.View!...!);
-    field public static final int LAYOUT_CALL_MEASURE = 2; // 0x2
-    field public static final int LAYOUT_HONOR_REQUEST = 1; // 0x1
-    field public static final int LAYOUT_IGNORE_REQUEST = 0; // 0x0
-    field public static final int UNSET = -1; // 0xffffffff
-  }
-
-  public static class MotionScene.Transition {
-    ctor public MotionScene.Transition(int, androidx.constraintlayout.motion.widget.MotionScene!, int, int);
-    method public void addKeyFrame(androidx.constraintlayout.motion.widget.KeyFrames!);
-    method public void addOnClick(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public void addOnClick(int, int);
-    method public String! debugString(android.content.Context!);
-    method public int getAutoTransition();
-    method public int getDuration();
-    method public int getEndConstraintSetId();
-    method public int getId();
-    method public java.util.List<androidx.constraintlayout.motion.widget.KeyFrames!>! getKeyFrameList();
-    method public int getLayoutDuringTransition();
-    method public java.util.List<androidx.constraintlayout.motion.widget.MotionScene.Transition.TransitionOnClick!>! getOnClickList();
-    method public int getPathMotionArc();
-    method public float getStagger();
-    method public int getStartConstraintSetId();
-    method public androidx.constraintlayout.motion.widget.TouchResponse! getTouchResponse();
-    method public boolean isEnabled();
-    method public boolean isTransitionFlag(int);
-    method public void removeOnClick(int);
-    method public void setAutoTransition(int);
-    method public void setDuration(int);
-    method public void setEnabled(boolean);
-    method public void setInterpolatorInfo(int, String!, int);
-    method public void setLayoutDuringTransition(int);
-    method public void setOnSwipe(androidx.constraintlayout.motion.widget.OnSwipe!);
-    method public void setOnTouchUp(int);
-    method public void setPathMotionArc(int);
-    method public void setStagger(float);
-    method public void setTransitionFlag(int);
-    field public static final int AUTO_ANIMATE_TO_END = 4; // 0x4
-    field public static final int AUTO_ANIMATE_TO_START = 3; // 0x3
-    field public static final int AUTO_JUMP_TO_END = 2; // 0x2
-    field public static final int AUTO_JUMP_TO_START = 1; // 0x1
-    field public static final int AUTO_NONE = 0; // 0x0
-    field public static final int INTERPOLATE_ANTICIPATE = 6; // 0x6
-    field public static final int INTERPOLATE_BOUNCE = 4; // 0x4
-    field public static final int INTERPOLATE_EASE_IN = 1; // 0x1
-    field public static final int INTERPOLATE_EASE_IN_OUT = 0; // 0x0
-    field public static final int INTERPOLATE_EASE_OUT = 2; // 0x2
-    field public static final int INTERPOLATE_LINEAR = 3; // 0x3
-    field public static final int INTERPOLATE_OVERSHOOT = 5; // 0x5
-    field public static final int INTERPOLATE_REFERENCE_ID = -2; // 0xfffffffe
-    field public static final int INTERPOLATE_SPLINE_STRING = -1; // 0xffffffff
-  }
-
-  public static class MotionScene.Transition.TransitionOnClick implements android.view.View.OnClickListener {
-    ctor public MotionScene.Transition.TransitionOnClick(android.content.Context!, androidx.constraintlayout.motion.widget.MotionScene.Transition!, org.xmlpull.v1.XmlPullParser!);
-    ctor public MotionScene.Transition.TransitionOnClick(androidx.constraintlayout.motion.widget.MotionScene.Transition!, int, int);
-    method public void addOnClickListeners(androidx.constraintlayout.motion.widget.MotionLayout!, int, androidx.constraintlayout.motion.widget.MotionScene.Transition!);
-    method public void onClick(android.view.View!);
-    method public void removeOnClickListeners(androidx.constraintlayout.motion.widget.MotionLayout!);
-    field public static final int ANIM_TOGGLE = 17; // 0x11
-    field public static final int ANIM_TO_END = 1; // 0x1
-    field public static final int ANIM_TO_START = 16; // 0x10
-    field public static final int JUMP_TO_END = 256; // 0x100
-    field public static final int JUMP_TO_START = 4096; // 0x1000
-  }
-
-  public class OnSwipe {
-    ctor public OnSwipe();
-    method public int getAutoCompleteMode();
-    method public int getDragDirection();
-    method public float getDragScale();
-    method public float getDragThreshold();
-    method public int getLimitBoundsTo();
-    method public float getMaxAcceleration();
-    method public float getMaxVelocity();
-    method public boolean getMoveWhenScrollAtTop();
-    method public int getNestedScrollFlags();
-    method public int getOnTouchUp();
-    method public int getRotationCenterId();
-    method public int getSpringBoundary();
-    method public float getSpringDamping();
-    method public float getSpringMass();
-    method public float getSpringStiffness();
-    method public float getSpringStopThreshold();
-    method public int getTouchAnchorId();
-    method public int getTouchAnchorSide();
-    method public int getTouchRegionId();
-    method public void setAutoCompleteMode(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setDragDirection(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setDragScale(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setDragThreshold(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setLimitBoundsTo(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setMaxAcceleration(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setMaxVelocity(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setMoveWhenScrollAtTop(boolean);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setNestedScrollFlags(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setOnTouchUp(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setRotateCenter(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringBoundary(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringDamping(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringMass(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringStiffness(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setSpringStopThreshold(float);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setTouchAnchorId(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setTouchAnchorSide(int);
-    method public androidx.constraintlayout.motion.widget.OnSwipe! setTouchRegionId(int);
-    field public static final int COMPLETE_MODE_CONTINUOUS_VELOCITY = 0; // 0x0
-    field public static final int COMPLETE_MODE_SPRING = 1; // 0x1
-    field public static final int DRAG_ANTICLOCKWISE = 7; // 0x7
-    field public static final int DRAG_CLOCKWISE = 6; // 0x6
-    field public static final int DRAG_DOWN = 1; // 0x1
-    field public static final int DRAG_END = 5; // 0x5
-    field public static final int DRAG_LEFT = 2; // 0x2
-    field public static final int DRAG_RIGHT = 3; // 0x3
-    field public static final int DRAG_START = 4; // 0x4
-    field public static final int DRAG_UP = 0; // 0x0
-    field public static final int FLAG_DISABLE_POST_SCROLL = 1; // 0x1
-    field public static final int FLAG_DISABLE_SCROLL = 2; // 0x2
-    field public static final int ON_UP_AUTOCOMPLETE = 0; // 0x0
-    field public static final int ON_UP_AUTOCOMPLETE_TO_END = 2; // 0x2
-    field public static final int ON_UP_AUTOCOMPLETE_TO_START = 1; // 0x1
-    field public static final int ON_UP_DECELERATE = 4; // 0x4
-    field public static final int ON_UP_DECELERATE_AND_COMPLETE = 5; // 0x5
-    field public static final int ON_UP_NEVER_TO_END = 7; // 0x7
-    field public static final int ON_UP_NEVER_TO_START = 6; // 0x6
-    field public static final int ON_UP_STOP = 3; // 0x3
-    field public static final int SIDE_BOTTOM = 3; // 0x3
-    field public static final int SIDE_END = 6; // 0x6
-    field public static final int SIDE_LEFT = 1; // 0x1
-    field public static final int SIDE_MIDDLE = 4; // 0x4
-    field public static final int SIDE_RIGHT = 2; // 0x2
-    field public static final int SIDE_START = 5; // 0x5
-    field public static final int SIDE_TOP = 0; // 0x0
-    field public static final int SPRING_BOUNDARY_BOUNCEBOTH = 3; // 0x3
-    field public static final int SPRING_BOUNDARY_BOUNCEEND = 2; // 0x2
-    field public static final int SPRING_BOUNDARY_BOUNCESTART = 1; // 0x1
-    field public static final int SPRING_BOUNDARY_OVERSHOOT = 0; // 0x0
-  }
-
-  public abstract class TransitionAdapter implements androidx.constraintlayout.motion.widget.MotionLayout.TransitionListener {
-    ctor public TransitionAdapter();
-    method public void onTransitionChange(androidx.constraintlayout.motion.widget.MotionLayout!, int, int, float);
-    method public void onTransitionCompleted(androidx.constraintlayout.motion.widget.MotionLayout!, int);
-    method public void onTransitionStarted(androidx.constraintlayout.motion.widget.MotionLayout!, int, int);
-    method public void onTransitionTrigger(androidx.constraintlayout.motion.widget.MotionLayout!, int, boolean, float);
-  }
-
-  public class TransitionBuilder {
-    ctor public TransitionBuilder();
-    method public static androidx.constraintlayout.motion.widget.MotionScene.Transition! buildTransition(androidx.constraintlayout.motion.widget.MotionScene!, int, int, androidx.constraintlayout.widget.ConstraintSet!, int, androidx.constraintlayout.widget.ConstraintSet!);
-    method public static void validate(androidx.constraintlayout.motion.widget.MotionLayout!);
-  }
-
-  public class ViewTransition {
-    method public int getSharedValue();
-    method public int getSharedValueCurrent();
-    method public int getSharedValueID();
-    method public int getStateTransition();
-    method public void setSharedValue(int);
-    method public void setSharedValueCurrent(int);
-    method public void setSharedValueID(int);
-    method public void setStateTransition(int);
-    field public static final String CONSTRAINT_OVERRIDE = "ConstraintOverride";
-    field public static final String CUSTOM_ATTRIBUTE = "CustomAttribute";
-    field public static final String CUSTOM_METHOD = "CustomMethod";
-    field public static final String KEY_FRAME_SET_TAG = "KeyFrameSet";
-    field public static final int ONSTATE_ACTION_DOWN = 1; // 0x1
-    field public static final int ONSTATE_ACTION_DOWN_UP = 3; // 0x3
-    field public static final int ONSTATE_ACTION_UP = 2; // 0x2
-    field public static final int ONSTATE_SHARED_VALUE_SET = 4; // 0x4
-    field public static final int ONSTATE_SHARED_VALUE_UNSET = 5; // 0x5
-    field public static final String VIEW_TRANSITION_TAG = "ViewTransition";
-  }
-
-  public class ViewTransitionController {
-    ctor public ViewTransitionController(androidx.constraintlayout.motion.widget.MotionLayout!);
-    method public void add(androidx.constraintlayout.motion.widget.ViewTransition!);
-  }
-
-}
-
-package androidx.constraintlayout.utils.widget {
-
-  public class ImageFilterButton extends androidx.appcompat.widget.AppCompatImageButton {
-    ctor public ImageFilterButton(android.content.Context!);
-    ctor public ImageFilterButton(android.content.Context!, android.util.AttributeSet!);
-    ctor public ImageFilterButton(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getContrast();
-    method public float getCrossfade();
-    method public float getImagePanX();
-    method public float getImagePanY();
-    method public float getImageRotate();
-    method public float getImageZoom();
-    method public float getRound();
-    method public float getRoundPercent();
-    method public float getSaturation();
-    method public float getWarmth();
-    method public void setAltImageResource(int);
-    method public void setBrightness(float);
-    method public void setContrast(float);
-    method public void setCrossfade(float);
-    method public void setImagePanX(float);
-    method public void setImagePanY(float);
-    method public void setImageRotate(float);
-    method public void setImageZoom(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-    method public void setSaturation(float);
-    method public void setWarmth(float);
-  }
-
-  public class ImageFilterView extends androidx.appcompat.widget.AppCompatImageView {
-    ctor public ImageFilterView(android.content.Context!);
-    ctor public ImageFilterView(android.content.Context!, android.util.AttributeSet!);
-    ctor public ImageFilterView(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getBrightness();
-    method public float getContrast();
-    method public float getCrossfade();
-    method public float getImagePanX();
-    method public float getImagePanY();
-    method public float getImageRotate();
-    method public float getImageZoom();
-    method public float getRound();
-    method public float getRoundPercent();
-    method public float getSaturation();
-    method public float getWarmth();
-    method public void setAltImageDrawable(android.graphics.drawable.Drawable!);
-    method public void setAltImageResource(int);
-    method public void setBrightness(float);
-    method public void setContrast(float);
-    method public void setCrossfade(float);
-    method public void setImagePanX(float);
-    method public void setImagePanY(float);
-    method public void setImageRotate(float);
-    method public void setImageZoom(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-    method public void setSaturation(float);
-    method public void setWarmth(float);
-  }
-
-  public class MockView extends android.view.View {
-    ctor public MockView(android.content.Context!);
-    ctor public MockView(android.content.Context!, android.util.AttributeSet!);
-    ctor public MockView(android.content.Context!, android.util.AttributeSet!, int);
-    method public void onDraw(android.graphics.Canvas);
-    field protected String! mText;
-  }
-
-  public class MotionButton extends androidx.appcompat.widget.AppCompatButton {
-    ctor public MotionButton(android.content.Context!);
-    ctor public MotionButton(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionButton(android.content.Context!, android.util.AttributeSet!, int);
-    method public float getRound();
-    method public float getRoundPercent();
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-  }
-
-  public class MotionLabel extends android.view.View implements androidx.constraintlayout.motion.widget.FloatLayout {
-    ctor public MotionLabel(android.content.Context!);
-    ctor public MotionLabel(android.content.Context!, android.util.AttributeSet?);
-    ctor public MotionLabel(android.content.Context!, android.util.AttributeSet?, int);
-    method public float getRound();
-    method public float getRoundPercent();
-    method public float getScaleFromTextSize();
-    method public float getTextBackgroundPanX();
-    method public float getTextBackgroundPanY();
-    method public float getTextBackgroundRotate();
-    method public float getTextBackgroundZoom();
-    method public int getTextOutlineColor();
-    method public float getTextPanX();
-    method public float getTextPanY();
-    method public float getTextureHeight();
-    method public float getTextureWidth();
-    method public android.graphics.Typeface! getTypeface();
-    method public void layout(float, float, float, float);
-    method public void setGravity(int);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRound(float);
-    method @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public void setRoundPercent(float);
-    method public void setScaleFromTextSize(float);
-    method public void setText(CharSequence!);
-    method public void setTextBackgroundPanX(float);
-    method public void setTextBackgroundPanY(float);
-    method public void setTextBackgroundRotate(float);
-    method public void setTextBackgroundZoom(float);
-    method public void setTextFillColor(int);
-    method public void setTextOutlineColor(int);
-    method public void setTextOutlineThickness(float);
-    method public void setTextPanX(float);
-    method public void setTextPanY(float);
-    method public void setTextSize(float);
-    method public void setTextureHeight(float);
-    method public void setTextureWidth(float);
-    method public void setTypeface(android.graphics.Typeface!);
-  }
-
-  public class MotionTelltales extends androidx.constraintlayout.utils.widget.MockView {
-    ctor public MotionTelltales(android.content.Context!);
-    ctor public MotionTelltales(android.content.Context!, android.util.AttributeSet!);
-    ctor public MotionTelltales(android.content.Context!, android.util.AttributeSet!, int);
-    method public void setText(CharSequence!);
-  }
-
-}
-
-package androidx.constraintlayout.widget {
-
-  public class Barrier extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public Barrier(android.content.Context!);
-    ctor public Barrier(android.content.Context!, android.util.AttributeSet!);
-    ctor public Barrier(android.content.Context!, android.util.AttributeSet!, int);
-    method @Deprecated public boolean allowsGoneWidget();
-    method public boolean getAllowsGoneWidget();
-    method public int getMargin();
-    method public int getType();
-    method public void setAllowsGoneWidget(boolean);
-    method public void setDpMargin(int);
-    method public void setMargin(int);
-    method public void setType(int);
-    field public static final int BOTTOM = 3; // 0x3
-    field public static final int END = 6; // 0x6
-    field public static final int LEFT = 0; // 0x0
-    field public static final int RIGHT = 1; // 0x1
-    field public static final int START = 5; // 0x5
-    field public static final int TOP = 2; // 0x2
-  }
-
-  public class ConstraintAttribute {
-    ctor public ConstraintAttribute(androidx.constraintlayout.widget.ConstraintAttribute!, Object!);
-    ctor public ConstraintAttribute(String!, androidx.constraintlayout.widget.ConstraintAttribute.AttributeType!);
-    ctor public ConstraintAttribute(String!, androidx.constraintlayout.widget.ConstraintAttribute.AttributeType!, Object!, boolean);
-    method public void applyCustom(android.view.View!);
-    method public boolean diff(androidx.constraintlayout.widget.ConstraintAttribute!);
-    method public static java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>! extractAttributes(java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>!, android.view.View!);
-    method public int getColorValue();
-    method public float getFloatValue();
-    method public int getIntegerValue();
-    method public String! getName();
-    method public String! getStringValue();
-    method public androidx.constraintlayout.widget.ConstraintAttribute.AttributeType! getType();
-    method public float getValueToInterpolate();
-    method public void getValuesToInterpolate(float[]!);
-    method public boolean isBooleanValue();
-    method public boolean isContinuous();
-    method public boolean isMethod();
-    method public int numberOfInterpolatedValues();
-    method public static void parse(android.content.Context!, org.xmlpull.v1.XmlPullParser!, java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public static void setAttributes(android.view.View!, java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>!);
-    method public void setColorValue(int);
-    method public void setFloatValue(float);
-    method public void setIntValue(int);
-    method public void setStringValue(String!);
-    method public void setValue(float[]!);
-    method public void setValue(Object!);
-  }
-
-  public enum ConstraintAttribute.AttributeType {
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType BOOLEAN_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType COLOR_DRAWABLE_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType COLOR_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType DIMENSION_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType FLOAT_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType INT_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType REFERENCE_TYPE;
-    enum_constant public static final androidx.constraintlayout.widget.ConstraintAttribute.AttributeType STRING_TYPE;
-  }
-
-  public abstract class ConstraintHelper extends android.view.View {
-    ctor public ConstraintHelper(android.content.Context!);
-    ctor public ConstraintHelper(android.content.Context!, android.util.AttributeSet!);
-    ctor public ConstraintHelper(android.content.Context!, android.util.AttributeSet!, int);
-    method public void addView(android.view.View!);
-    method public void applyHelperParams();
-    method protected void applyLayoutFeatures();
-    method protected void applyLayoutFeatures(androidx.constraintlayout.widget.ConstraintLayout!);
-    method protected void applyLayoutFeaturesInConstraintSet(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public boolean containsId(int);
-    method public int[]! getReferencedIds();
-    method protected android.view.View![]! getViews(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public int indexFromId(int);
-    method protected void init(android.util.AttributeSet!);
-    method public static boolean isChildOfHelper(android.view.View!);
-    method public void loadParameters(androidx.constraintlayout.widget.ConstraintSet.Constraint!, androidx.constraintlayout.core.widgets.HelperWidget!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void onDraw(android.graphics.Canvas);
-    method public int removeView(android.view.View!);
-    method public void resolveRtl(androidx.constraintlayout.core.widgets.ConstraintWidget!, boolean);
-    method protected void setIds(String!);
-    method protected void setReferenceTags(String!);
-    method public void setReferencedIds(int[]!);
-    method public void updatePostConstraints(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePostLayout(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePostMeasure(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePreDraw(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePreLayout(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, androidx.constraintlayout.core.widgets.Helper!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void updatePreLayout(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void validateParams();
-    field protected static final String CHILD_TAG = "CONSTRAINT_LAYOUT_HELPER_CHILD";
-    field protected int mCount;
-    field protected androidx.constraintlayout.core.widgets.Helper! mHelperWidget;
-    field protected int[]! mIds;
-    field protected java.util.HashMap<java.lang.Integer!,java.lang.String!>! mMap;
-    field protected String! mReferenceIds;
-    field protected String! mReferenceTags;
-    field protected boolean mUseViewMeasure;
-    field protected android.content.Context! myContext;
-  }
-
-  public class ConstraintLayout extends android.view.ViewGroup {
-    ctor public ConstraintLayout(android.content.Context);
-    ctor public ConstraintLayout(android.content.Context, android.util.AttributeSet?);
-    ctor public ConstraintLayout(android.content.Context, android.util.AttributeSet?, int);
-    ctor public ConstraintLayout(android.content.Context, android.util.AttributeSet?, int, int);
-    method public void addValueModifier(androidx.constraintlayout.widget.ConstraintLayout.ValueModifier!);
-    method protected void applyConstraintsFromLayoutParams(boolean, android.view.View!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method protected boolean dynamicUpdateConstraints(int, int);
-    method public void fillMetrics(androidx.constraintlayout.core.Metrics!);
-    method protected androidx.constraintlayout.widget.ConstraintLayout.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.constraintlayout.widget.ConstraintLayout.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method public Object! getDesignInformation(int, Object!);
-    method public int getMaxHeight();
-    method public int getMaxWidth();
-    method public int getMinHeight();
-    method public int getMinWidth();
-    method public int getOptimizationLevel();
-    method public String! getSceneString();
-    method public static androidx.constraintlayout.widget.SharedValues! getSharedValues();
-    method public android.view.View! getViewById(int);
-    method public final androidx.constraintlayout.core.widgets.ConstraintWidget! getViewWidget(android.view.View!);
-    method protected boolean isRtl();
-    method public void loadLayoutDescription(int);
-    method protected void parseLayoutDescription(int);
-    method protected void resolveMeasuredDimension(int, int, int, int, boolean, boolean);
-    method protected void resolveSystem(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int, int, int);
-    method public void setConstraintSet(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void setDesignInformation(int, Object!, Object!);
-    method public void setMaxHeight(int);
-    method public void setMaxWidth(int);
-    method public void setMinHeight(int);
-    method public void setMinWidth(int);
-    method public void setOnConstraintsChanged(androidx.constraintlayout.widget.ConstraintsChangedListener!);
-    method public void setOptimizationLevel(int);
-    method protected void setSelfDimensionBehaviour(androidx.constraintlayout.core.widgets.ConstraintWidgetContainer!, int, int, int, int);
-    method public void setState(int, int, int);
-    field public static final int DESIGN_INFO_ID = 0; // 0x0
-    field public static final String VERSION = "ConstraintLayout-2.2.0-alpha04";
-    field protected androidx.constraintlayout.widget.ConstraintLayoutStates! mConstraintLayoutSpec;
-    field protected boolean mDirtyHierarchy;
-    field protected androidx.constraintlayout.core.widgets.ConstraintWidgetContainer! mLayoutWidget;
-  }
-
-  public static class ConstraintLayout.LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
-    ctor public ConstraintLayout.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public ConstraintLayout.LayoutParams(android.view.ViewGroup.LayoutParams!);
-    ctor public ConstraintLayout.LayoutParams(int, int);
-    method public String! getConstraintTag();
-    method public androidx.constraintlayout.core.widgets.ConstraintWidget! getConstraintWidget();
-    method public void reset();
-    method public void setWidgetDebugName(String!);
-    method public void validate();
-    field public static final int BASELINE = 5; // 0x5
-    field public static final int BOTTOM = 4; // 0x4
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static final int CIRCLE = 8; // 0x8
-    field public static final int END = 7; // 0x7
-    field public static final int GONE_UNSET = -2147483648; // 0x80000000
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int LEFT = 1; // 0x1
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_PERCENT = 2; // 0x2
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int RIGHT = 2; // 0x2
-    field public static final int START = 6; // 0x6
-    field public static final int TOP = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int WRAP_BEHAVIOR_HORIZONTAL_ONLY = 1; // 0x1
-    field public static final int WRAP_BEHAVIOR_INCLUDED = 0; // 0x0
-    field public static final int WRAP_BEHAVIOR_SKIPPED = 3; // 0x3
-    field public static final int WRAP_BEHAVIOR_VERTICAL_ONLY = 2; // 0x2
-    field public int baselineMargin;
-    field public int baselineToBaseline;
-    field public int baselineToBottom;
-    field public int baselineToTop;
-    field public int bottomToBottom;
-    field public int bottomToTop;
-    field public float circleAngle;
-    field public int circleConstraint;
-    field public int circleRadius;
-    field public boolean constrainedHeight;
-    field public boolean constrainedWidth;
-    field public String! constraintTag;
-    field public String! dimensionRatio;
-    field public int editorAbsoluteX;
-    field public int editorAbsoluteY;
-    field public int endToEnd;
-    field public int endToStart;
-    field public int goneBaselineMargin;
-    field public int goneBottomMargin;
-    field public int goneEndMargin;
-    field public int goneLeftMargin;
-    field public int goneRightMargin;
-    field public int goneStartMargin;
-    field public int goneTopMargin;
-    field public int guideBegin;
-    field public int guideEnd;
-    field public float guidePercent;
-    field public boolean guidelineUseRtl;
-    field public boolean helped;
-    field public float horizontalBias;
-    field public int horizontalChainStyle;
-    field public float horizontalWeight;
-    field public int leftToLeft;
-    field public int leftToRight;
-    field public int matchConstraintDefaultHeight;
-    field public int matchConstraintDefaultWidth;
-    field public int matchConstraintMaxHeight;
-    field public int matchConstraintMaxWidth;
-    field public int matchConstraintMinHeight;
-    field public int matchConstraintMinWidth;
-    field public float matchConstraintPercentHeight;
-    field public float matchConstraintPercentWidth;
-    field public int orientation;
-    field public int rightToLeft;
-    field public int rightToRight;
-    field public int startToEnd;
-    field public int startToStart;
-    field public int topToBottom;
-    field public int topToTop;
-    field public float verticalBias;
-    field public int verticalChainStyle;
-    field public float verticalWeight;
-    field public int wrapBehaviorInParent;
-  }
-
-  public static interface ConstraintLayout.ValueModifier {
-    method public boolean update(int, int, int, android.view.View!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!);
-  }
-
-  public class ConstraintLayoutStates {
-    method public boolean needsToChange(int, float, float);
-    method public void setOnConstraintsChanged(androidx.constraintlayout.widget.ConstraintsChangedListener!);
-    method public void updateConstraints(int, float, float);
-    field public static final String TAG = "ConstraintLayoutStates";
-  }
-
-  public class ConstraintLayoutStatistics {
-    ctor public ConstraintLayoutStatistics(androidx.constraintlayout.widget.ConstraintLayout!);
-    ctor public ConstraintLayoutStatistics(androidx.constraintlayout.widget.ConstraintLayoutStatistics!);
-    method public void attach(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public androidx.constraintlayout.widget.ConstraintLayoutStatistics! clone();
-    method public void detach();
-    method public long getValue(int);
-    method public void logSummary(String!);
-    method public void logSummary(String!, androidx.constraintlayout.widget.ConstraintLayoutStatistics!);
-    method public void reset();
-    field public static final int DURATION_OF_CHILD_MEASURES = 5; // 0x5
-    field public static final int DURATION_OF_LAYOUT = 7; // 0x7
-    field public static final int DURATION_OF_MEASURES = 6; // 0x6
-    field public static final int NUMBER_OF_CHILD_MEASURES = 4; // 0x4
-    field public static final int NUMBER_OF_CHILD_VIEWS = 3; // 0x3
-    field public static final int NUMBER_OF_EQUATIONS = 9; // 0x9
-    field public static final int NUMBER_OF_LAYOUTS = 1; // 0x1
-    field public static final int NUMBER_OF_ON_MEASURES = 2; // 0x2
-    field public static final int NUMBER_OF_SIMPLE_EQUATIONS = 10; // 0xa
-    field public static final int NUMBER_OF_VARIABLES = 8; // 0x8
-  }
-
-  public class ConstraintProperties {
-    ctor public ConstraintProperties(android.view.View!);
-    method public androidx.constraintlayout.widget.ConstraintProperties! addToHorizontalChain(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! addToHorizontalChainRTL(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! addToVerticalChain(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! alpha(float);
-    method public void apply();
-    method public androidx.constraintlayout.widget.ConstraintProperties! center(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontally(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontally(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontallyRtl(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerHorizontallyRtl(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerVertically(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! centerVertically(int, int, int, int, int, int, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! connect(int, int, int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainDefaultHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainDefaultWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMaxHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMaxWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMinHeight(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainMinWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! constrainWidth(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! dimensionRatio(String!);
-    method public androidx.constraintlayout.widget.ConstraintProperties! elevation(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! goneMargin(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! horizontalBias(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! horizontalChainStyle(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! horizontalWeight(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! margin(int, int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! removeConstraints(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! removeFromHorizontalChain();
-    method public androidx.constraintlayout.widget.ConstraintProperties! removeFromVerticalChain();
-    method public androidx.constraintlayout.widget.ConstraintProperties! rotation(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! rotationX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! rotationY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! scaleX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! scaleY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! transformPivot(float, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! transformPivotX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! transformPivotY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translation(float, float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translationX(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translationY(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! translationZ(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! verticalBias(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! verticalChainStyle(int);
-    method public androidx.constraintlayout.widget.ConstraintProperties! verticalWeight(float);
-    method public androidx.constraintlayout.widget.ConstraintProperties! visibility(int);
-    field public static final int BASELINE = 5; // 0x5
-    field public static final int BOTTOM = 4; // 0x4
-    field public static final int END = 7; // 0x7
-    field public static final int LEFT = 1; // 0x1
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int RIGHT = 2; // 0x2
-    field public static final int START = 6; // 0x6
-    field public static final int TOP = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-  }
-
-  public class ConstraintSet {
-    ctor public ConstraintSet();
-    method public void addColorAttributes(java.lang.String!...!);
-    method public void addFloatAttributes(java.lang.String!...!);
-    method public void addIntAttributes(java.lang.String!...!);
-    method public void addStringAttributes(java.lang.String!...!);
-    method public void addToHorizontalChain(int, int, int);
-    method public void addToHorizontalChainRTL(int, int, int);
-    method public void addToVerticalChain(int, int, int);
-    method public void applyCustomAttributes(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void applyDeltaFrom(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void applyTo(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void applyToHelper(androidx.constraintlayout.widget.ConstraintHelper!, androidx.constraintlayout.core.widgets.ConstraintWidget!, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!, android.util.SparseArray<androidx.constraintlayout.core.widgets.ConstraintWidget!>!);
-    method public void applyToLayoutParams(int, androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!);
-    method public void applyToWithoutCustom(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public static androidx.constraintlayout.widget.ConstraintSet.Constraint! buildDelta(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public void center(int, int, int, int, int, int, int, float);
-    method public void centerHorizontally(int, int);
-    method public void centerHorizontally(int, int, int, int, int, int, int, float);
-    method public void centerHorizontallyRtl(int, int);
-    method public void centerHorizontallyRtl(int, int, int, int, int, int, int, float);
-    method public void centerVertically(int, int);
-    method public void centerVertically(int, int, int, int, int, int, int, float);
-    method public void clear(int);
-    method public void clear(int, int);
-    method public void clone(android.content.Context!, int);
-    method public void clone(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void clone(androidx.constraintlayout.widget.Constraints!);
-    method public void clone(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void connect(int, int, int, int);
-    method public void connect(int, int, int, int, int);
-    method public void constrainCircle(int, int, int, float);
-    method public void constrainDefaultHeight(int, int);
-    method public void constrainDefaultWidth(int, int);
-    method public void constrainHeight(int, int);
-    method public void constrainMaxHeight(int, int);
-    method public void constrainMaxWidth(int, int);
-    method public void constrainMinHeight(int, int);
-    method public void constrainMinWidth(int, int);
-    method public void constrainPercentHeight(int, float);
-    method public void constrainPercentWidth(int, float);
-    method public void constrainWidth(int, int);
-    method public void constrainedHeight(int, boolean);
-    method public void constrainedWidth(int, boolean);
-    method public void create(int, int);
-    method public void createBarrier(int, int, int, int...!);
-    method public void createHorizontalChain(int, int, int, int, int[]!, float[]!, int);
-    method public void createHorizontalChainRtl(int, int, int, int, int[]!, float[]!, int);
-    method public void createVerticalChain(int, int, int, int, int[]!, float[]!, int);
-    method public void dump(androidx.constraintlayout.motion.widget.MotionScene!, int...!);
-    method public boolean getApplyElevation(int);
-    method public androidx.constraintlayout.widget.ConstraintSet.Constraint! getConstraint(int);
-    method public java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>! getCustomAttributeSet();
-    method public int getHeight(int);
-    method public int[]! getKnownIds();
-    method public androidx.constraintlayout.widget.ConstraintSet.Constraint! getParameters(int);
-    method public int[]! getReferencedIds(int);
-    method public String![]! getStateLabels();
-    method public int getVisibility(int);
-    method public int getVisibilityMode(int);
-    method public int getWidth(int);
-    method public boolean isForceId();
-    method public boolean isValidateOnParse();
-    method public void load(android.content.Context!, int);
-    method public void load(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public boolean matchesLabels(java.lang.String!...!);
-    method public void parseColorAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void parseFloatAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void parseIntAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void parseStringAttributes(androidx.constraintlayout.widget.ConstraintSet.Constraint!, String!);
-    method public void readFallback(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void readFallback(androidx.constraintlayout.widget.ConstraintSet!);
-    method public void removeAttribute(String!);
-    method public void removeFromHorizontalChain(int);
-    method public void removeFromVerticalChain(int);
-    method public void setAlpha(int, float);
-    method public void setApplyElevation(int, boolean);
-    method public void setBarrierType(int, int);
-    method public void setColorValue(int, String!, int);
-    method public void setDimensionRatio(int, String!);
-    method public void setEditorAbsoluteX(int, int);
-    method public void setEditorAbsoluteY(int, int);
-    method public void setElevation(int, float);
-    method public void setFloatValue(int, String!, float);
-    method public void setForceId(boolean);
-    method public void setGoneMargin(int, int, int);
-    method public void setGuidelineBegin(int, int);
-    method public void setGuidelineEnd(int, int);
-    method public void setGuidelinePercent(int, float);
-    method public void setHorizontalBias(int, float);
-    method public void setHorizontalChainStyle(int, int);
-    method public void setHorizontalWeight(int, float);
-    method public void setIntValue(int, String!, int);
-    method public void setLayoutWrapBehavior(int, int);
-    method public void setMargin(int, int, int);
-    method public void setReferencedIds(int, int...!);
-    method public void setRotation(int, float);
-    method public void setRotationX(int, float);
-    method public void setRotationY(int, float);
-    method public void setScaleX(int, float);
-    method public void setScaleY(int, float);
-    method public void setStateLabels(String!);
-    method public void setStateLabelsList(java.lang.String!...!);
-    method public void setStringValue(int, String!, String!);
-    method public void setTransformPivot(int, float, float);
-    method public void setTransformPivotX(int, float);
-    method public void setTransformPivotY(int, float);
-    method public void setTranslation(int, float, float);
-    method public void setTranslationX(int, float);
-    method public void setTranslationY(int, float);
-    method public void setTranslationZ(int, float);
-    method public void setValidateOnParse(boolean);
-    method public void setVerticalBias(int, float);
-    method public void setVerticalChainStyle(int, int);
-    method public void setVerticalWeight(int, float);
-    method public void setVisibility(int, int);
-    method public void setVisibilityMode(int, int);
-    method public void writeState(java.io.Writer!, androidx.constraintlayout.widget.ConstraintLayout!, int) throws java.io.IOException;
-    field public static final int BASELINE = 5; // 0x5
-    field public static final int BOTTOM = 4; // 0x4
-    field public static final int CHAIN_PACKED = 2; // 0x2
-    field public static final int CHAIN_SPREAD = 0; // 0x0
-    field public static final int CHAIN_SPREAD_INSIDE = 1; // 0x1
-    field public static final int CIRCLE_REFERENCE = 8; // 0x8
-    field public static final int END = 7; // 0x7
-    field public static final int GONE = 8; // 0x8
-    field public static final int HORIZONTAL = 0; // 0x0
-    field public static final int HORIZONTAL_GUIDELINE = 0; // 0x0
-    field public static final int INVISIBLE = 4; // 0x4
-    field public static final int LEFT = 1; // 0x1
-    field public static final int MATCH_CONSTRAINT = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_PERCENT = 2; // 0x2
-    field public static final int MATCH_CONSTRAINT_SPREAD = 0; // 0x0
-    field public static final int MATCH_CONSTRAINT_WRAP = 1; // 0x1
-    field public static final int PARENT_ID = 0; // 0x0
-    field public static final int RIGHT = 2; // 0x2
-    field public static final int ROTATE_LEFT_OF_PORTRATE = 4; // 0x4
-    field public static final int ROTATE_NONE = 0; // 0x0
-    field public static final int ROTATE_PORTRATE_OF_LEFT = 2; // 0x2
-    field public static final int ROTATE_PORTRATE_OF_RIGHT = 1; // 0x1
-    field public static final int ROTATE_RIGHT_OF_PORTRATE = 3; // 0x3
-    field public static final int START = 6; // 0x6
-    field public static final int TOP = 3; // 0x3
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int VERTICAL = 1; // 0x1
-    field public static final int VERTICAL_GUIDELINE = 1; // 0x1
-    field public static final int VISIBILITY_MODE_IGNORE = 1; // 0x1
-    field public static final int VISIBILITY_MODE_NORMAL = 0; // 0x0
-    field public static final int VISIBLE = 0; // 0x0
-    field public static final int WRAP_CONTENT = -2; // 0xfffffffe
-    field public String! derivedState;
-    field public String! mIdString;
-    field public int mRotate;
-  }
-
-  public static class ConstraintSet.Constraint {
-    ctor public ConstraintSet.Constraint();
-    method public void applyDelta(androidx.constraintlayout.widget.ConstraintSet.Constraint!);
-    method public void applyTo(androidx.constraintlayout.widget.ConstraintLayout.LayoutParams!);
-    method public androidx.constraintlayout.widget.ConstraintSet.Constraint! clone();
-    method public void printDelta(String!);
-    field public final androidx.constraintlayout.widget.ConstraintSet.Layout! layout;
-    field public java.util.HashMap<java.lang.String!,androidx.constraintlayout.widget.ConstraintAttribute!>! mCustomConstraints;
-    field public final androidx.constraintlayout.widget.ConstraintSet.Motion! motion;
-    field public final androidx.constraintlayout.widget.ConstraintSet.PropertySet! propertySet;
-    field public final androidx.constraintlayout.widget.ConstraintSet.Transform! transform;
-  }
-
-  public static class ConstraintSet.Layout {
-    ctor public ConstraintSet.Layout();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.Layout!);
-    method public void dump(androidx.constraintlayout.motion.widget.MotionScene!, StringBuilder!);
-    field public static final int UNSET = -1; // 0xffffffff
-    field public static final int UNSET_GONE_MARGIN = -2147483648; // 0x80000000
-    field public int baselineMargin;
-    field public int baselineToBaseline;
-    field public int baselineToBottom;
-    field public int baselineToTop;
-    field public int bottomMargin;
-    field public int bottomToBottom;
-    field public int bottomToTop;
-    field public float circleAngle;
-    field public int circleConstraint;
-    field public int circleRadius;
-    field public boolean constrainedHeight;
-    field public boolean constrainedWidth;
-    field public String! dimensionRatio;
-    field public int editorAbsoluteX;
-    field public int editorAbsoluteY;
-    field public int endMargin;
-    field public int endToEnd;
-    field public int endToStart;
-    field public int goneBaselineMargin;
-    field public int goneBottomMargin;
-    field public int goneEndMargin;
-    field public int goneLeftMargin;
-    field public int goneRightMargin;
-    field public int goneStartMargin;
-    field public int goneTopMargin;
-    field public int guideBegin;
-    field public int guideEnd;
-    field public float guidePercent;
-    field public boolean guidelineUseRtl;
-    field public int heightDefault;
-    field public int heightMax;
-    field public int heightMin;
-    field public float heightPercent;
-    field public float horizontalBias;
-    field public int horizontalChainStyle;
-    field public float horizontalWeight;
-    field public int leftMargin;
-    field public int leftToLeft;
-    field public int leftToRight;
-    field public boolean mApply;
-    field public boolean mBarrierAllowsGoneWidgets;
-    field public int mBarrierDirection;
-    field public int mBarrierMargin;
-    field public String! mConstraintTag;
-    field public int mHeight;
-    field public int mHelperType;
-    field public boolean mIsGuideline;
-    field public boolean mOverride;
-    field public String! mReferenceIdString;
-    field public int[]! mReferenceIds;
-    field public int mWidth;
-    field public int mWrapBehavior;
-    field public int orientation;
-    field public int rightMargin;
-    field public int rightToLeft;
-    field public int rightToRight;
-    field public int startMargin;
-    field public int startToEnd;
-    field public int startToStart;
-    field public int topMargin;
-    field public int topToBottom;
-    field public int topToTop;
-    field public float verticalBias;
-    field public int verticalChainStyle;
-    field public float verticalWeight;
-    field public int widthDefault;
-    field public int widthMax;
-    field public int widthMin;
-    field public float widthPercent;
-  }
-
-  public static class ConstraintSet.Motion {
-    ctor public ConstraintSet.Motion();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.Motion!);
-    field public int mAnimateCircleAngleTo;
-    field public int mAnimateRelativeTo;
-    field public boolean mApply;
-    field public int mDrawPath;
-    field public float mMotionStagger;
-    field public int mPathMotionArc;
-    field public float mPathRotate;
-    field public int mPolarRelativeTo;
-    field public int mQuantizeInterpolatorID;
-    field public String! mQuantizeInterpolatorString;
-    field public int mQuantizeInterpolatorType;
-    field public float mQuantizeMotionPhase;
-    field public int mQuantizeMotionSteps;
-    field public String! mTransitionEasing;
-  }
-
-  public static class ConstraintSet.PropertySet {
-    ctor public ConstraintSet.PropertySet();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.PropertySet!);
-    field public float alpha;
-    field public boolean mApply;
-    field public float mProgress;
-    field public int mVisibilityMode;
-    field public int visibility;
-  }
-
-  public static class ConstraintSet.Transform {
-    ctor public ConstraintSet.Transform();
-    method public void copyFrom(androidx.constraintlayout.widget.ConstraintSet.Transform!);
-    field public boolean applyElevation;
-    field public float elevation;
-    field public boolean mApply;
-    field public float rotation;
-    field public float rotationX;
-    field public float rotationY;
-    field public float scaleX;
-    field public float scaleY;
-    field public int transformPivotTarget;
-    field public float transformPivotX;
-    field public float transformPivotY;
-    field public float translationX;
-    field public float translationY;
-    field public float translationZ;
-  }
-
-  public class Constraints extends android.view.ViewGroup {
-    ctor public Constraints(android.content.Context!);
-    ctor public Constraints(android.content.Context!, android.util.AttributeSet!);
-    ctor public Constraints(android.content.Context!, android.util.AttributeSet!, int);
-    method protected androidx.constraintlayout.widget.Constraints.LayoutParams! generateDefaultLayoutParams();
-    method public androidx.constraintlayout.widget.Constraints.LayoutParams! generateLayoutParams(android.util.AttributeSet!);
-    method public androidx.constraintlayout.widget.ConstraintSet! getConstraintSet();
-    field public static final String TAG = "Constraints";
-  }
-
-  public static class Constraints.LayoutParams extends androidx.constraintlayout.widget.ConstraintLayout.LayoutParams {
-    ctor public Constraints.LayoutParams(android.content.Context!, android.util.AttributeSet!);
-    ctor public Constraints.LayoutParams(androidx.constraintlayout.widget.Constraints.LayoutParams!);
-    ctor public Constraints.LayoutParams(int, int);
-    field public float alpha;
-    field public boolean applyElevation;
-    field public float elevation;
-    field public float rotation;
-    field public float rotationX;
-    field public float rotationY;
-    field public float scaleX;
-    field public float scaleY;
-    field public float transformPivotX;
-    field public float transformPivotY;
-    field public float translationX;
-    field public float translationY;
-    field public float translationZ;
-  }
-
-  public abstract class ConstraintsChangedListener {
-    ctor public ConstraintsChangedListener();
-    method public void postLayoutChange(int, int);
-    method public void preLayoutChange(int, int);
-  }
-
-  public class Group extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public Group(android.content.Context!);
-    ctor public Group(android.content.Context!, android.util.AttributeSet!);
-    ctor public Group(android.content.Context!, android.util.AttributeSet!, int);
-    method public void onAttachedToWindow();
-  }
-
-  public class Guideline extends android.view.View {
-    ctor public Guideline(android.content.Context!);
-    ctor public Guideline(android.content.Context!, android.util.AttributeSet!);
-    ctor public Guideline(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public Guideline(android.content.Context!, android.util.AttributeSet!, int, int);
-    method public void setFilterRedundantCalls(boolean);
-    method public void setGuidelineBegin(int);
-    method public void setGuidelineEnd(int);
-    method public void setGuidelinePercent(float);
-  }
-
-  public class Placeholder extends android.view.View {
-    ctor public Placeholder(android.content.Context!);
-    ctor public Placeholder(android.content.Context!, android.util.AttributeSet!);
-    ctor public Placeholder(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public Placeholder(android.content.Context!, android.util.AttributeSet!, int, int);
-    method public android.view.View! getContent();
-    method public int getEmptyVisibility();
-    method public void onDraw(android.graphics.Canvas);
-    method public void setContentId(int);
-    method public void setEmptyVisibility(int);
-    method public void updatePostMeasure(androidx.constraintlayout.widget.ConstraintLayout!);
-    method public void updatePreLayout(androidx.constraintlayout.widget.ConstraintLayout!);
-  }
-
-  public class ReactiveGuide extends android.view.View implements androidx.constraintlayout.widget.SharedValues.SharedValuesListener {
-    ctor public ReactiveGuide(android.content.Context!);
-    ctor public ReactiveGuide(android.content.Context!, android.util.AttributeSet!);
-    ctor public ReactiveGuide(android.content.Context!, android.util.AttributeSet!, int);
-    ctor public ReactiveGuide(android.content.Context!, android.util.AttributeSet!, int, int);
-    method public int getApplyToConstraintSetId();
-    method public int getAttributeId();
-    method public boolean isAnimatingChange();
-    method public void onNewValue(int, int, int);
-    method public void setAnimateChange(boolean);
-    method public void setApplyToConstraintSetId(int);
-    method public void setAttributeId(int);
-    method public void setGuidelineBegin(int);
-    method public void setGuidelineEnd(int);
-    method public void setGuidelinePercent(float);
-  }
-
-  public class SharedValues {
-    ctor public SharedValues();
-    method public void addListener(int, androidx.constraintlayout.widget.SharedValues.SharedValuesListener!);
-    method public void clearListeners();
-    method public void fireNewValue(int, int);
-    method public int getValue(int);
-    method public void removeListener(androidx.constraintlayout.widget.SharedValues.SharedValuesListener!);
-    method public void removeListener(int, androidx.constraintlayout.widget.SharedValues.SharedValuesListener!);
-    field public static final int UNSET = -1; // 0xffffffff
-  }
-
-  public static interface SharedValues.SharedValuesListener {
-    method public void onNewValue(int, int, int);
-  }
-
-  public class StateSet {
-    ctor public StateSet(android.content.Context!, org.xmlpull.v1.XmlPullParser!);
-    method public int convertToConstraintSet(int, int, float, float);
-    method public boolean needsToChange(int, float, float);
-    method public void setOnConstraintsChanged(androidx.constraintlayout.widget.ConstraintsChangedListener!);
-    method public int stateGetConstraintID(int, int, int);
-    method public int updateConstraints(int, int, float, float);
-    field public static final String TAG = "ConstraintLayoutStates";
-  }
-
-  public abstract class VirtualLayout extends androidx.constraintlayout.widget.ConstraintHelper {
-    ctor public VirtualLayout(android.content.Context!);
-    ctor public VirtualLayout(android.content.Context!, android.util.AttributeSet!);
-    ctor public VirtualLayout(android.content.Context!, android.util.AttributeSet!, int);
-    method public void onAttachedToWindow();
-    method public void onMeasure(androidx.constraintlayout.core.widgets.VirtualLayout!, int, int);
-  }
-
-}
-
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt b/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt
index 0110a0c..1641a18 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/CallsManager.kt
@@ -51,6 +51,7 @@
 import kotlinx.coroutines.CompletableDeferred
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.TimeoutCancellationException
+import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.job
 import kotlinx.coroutines.withTimeout
 
@@ -291,7 +292,7 @@
         onSetActive: suspend () -> Unit,
         onSetInactive: suspend () -> Unit,
         block: CallControlScope.() -> Unit
-    ) {
+    ) = coroutineScope {
         // Provide a default empty handler for onEvent
         addCall(
             callAttributes,
diff --git a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/CallsManagerExtensions.kt b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/CallsManagerExtensions.kt
index 4e5680e..be40159 100644
--- a/core/core-telecom/src/main/java/androidx/core/telecom/extensions/CallsManagerExtensions.kt
+++ b/core/core-telecom/src/main/java/androidx/core/telecom/extensions/CallsManagerExtensions.kt
@@ -31,9 +31,9 @@
 import androidx.core.telecom.internal.ParticipantStateListenerRemote
 import androidx.core.telecom.util.ExperimentalAppActions
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Job
 import kotlinx.coroutines.cancel
 import kotlinx.coroutines.cancelAndJoin
+import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.flow.MutableSharedFlow
 import kotlinx.coroutines.flow.SharedFlow
 import kotlinx.coroutines.flow.onCompletion
@@ -126,12 +126,15 @@
     onSetActive: suspend () -> Unit,
     onSetInactive: suspend () -> Unit,
     init: suspend ExtensionInitializationScope.() -> Unit
-) {
+) = coroutineScope {
     Log.v(CallsManagerExtensions.LOG_TAG, "addCall: begin")
     val eventFlow = MutableSharedFlow<CallEvent>()
     val scope = ExtensionInitializationScope()
-    var extensionJob: Job? = null
     scope.init()
+    val extensionJob = launch {
+        Log.d(CallsManagerExtensions.LOG_TAG, "addCall: connecting extensions")
+        scope.collectEvents(this, eventFlow)
+    }
     Log.v(CallsManagerExtensions.LOG_TAG, "addCall: init complete")
     addCall(
         callAttributes,
@@ -151,16 +154,12 @@
             foundEvent?.let { eventFlow.emit(CallEvent(it, extras)) }
         }
     ) {
-        extensionJob = launch {
-            Log.d(CallsManagerExtensions.LOG_TAG, "addCall: connecting extensions")
-            scope.collectEvents(this, eventFlow)
-        }
         Log.i(CallsManagerExtensions.LOG_TAG, "addCall: invoking delegates")
         scope.invokeDelegate(this)
     }
     // Ensure that when the call ends, we also cancel any ongoing coroutines/flows as part of
     // extension work
-    extensionJob?.cancelAndJoin()
+    extensionJob.cancelAndJoin()
 }
 
 /**
diff --git a/development/project-creator/compose-template/groupId/artifactId/build.gradle b/development/project-creator/compose-template/groupId/artifactId/build.gradle
index ce8f88d..a83706a 100644
--- a/development/project-creator/compose-template/groupId/artifactId/build.gradle
+++ b/development/project-creator/compose-template/groupId/artifactId/build.gradle
@@ -21,6 +21,7 @@
  * Please use that script when creating a new project, rather than copying an existing project and
  * modifying its settings.
  */
+
 import androidx.build.LibraryType
 import androidx.build.PlatformIdentifier
 
@@ -32,18 +33,17 @@
 
 androidXMultiplatform {
     android()
-    desktop()
+    jvmStubs()
+    linuxX64Stubs()
 
     defaultPlatform(PlatformIdentifier.ANDROID)
 
     sourceSets {
         commonMain {
             dependencies {
-                implementation(libs.kotlinStdlibCommon)
+                implementation(libs.kotlinStdlib)
             }
         }
-        androidMain.dependencies {
-        }
 
         commonTest {
             dependencies {
@@ -60,7 +60,6 @@
             }
         }
 
-
         androidMain {
             dependsOn(jvmMain)
             dependencies {
@@ -68,13 +67,6 @@
             }
         }
 
-        desktopMain {
-            dependsOn(jvmMain)
-            dependencies {
-                implementation(libs.kotlinStdlib)
-            }
-        }
-
         jvmTest {
             dependsOn(commonTest)
             dependencies {
@@ -91,10 +83,16 @@
             }
         }
 
-        desktopTest {
-            dependsOn(jvmTest)
-            dependencies {
-            }
+        commonStubsMain {
+            dependsOn(commonMain)
+        }
+
+        jvmStubsMain {
+            dependsOn(commonStubsMain)
+        }
+
+        linuxx64StubsMain {
+            dependsOn(commonStubsMain)
         }
     }
 }
diff --git a/docs-tip-of-tree/build.gradle b/docs-tip-of-tree/build.gradle
index 343dc5c..897a4ac 100644
--- a/docs-tip-of-tree/build.gradle
+++ b/docs-tip-of-tree/build.gradle
@@ -88,7 +88,7 @@
     kmpDocs(project(":compose:material3:material3-window-size-class"))
     kmpDocs(project(":compose:material:material"))
     kmpDocs("androidx.compose.material:material-icons-core:1.7.0-beta01")
-    samples("androidx.compose.material:material-icons-core-samples:1.7.0-alpha07")
+    samples("androidx.compose.material:material-icons-core-samples:1.7.0-beta01")
     kmpDocs(project(":compose:material:material-ripple"))
     docs(project(":compose:material:material-navigation"))
     kmpDocs(project(":compose:runtime:runtime"))
diff --git a/libraryversions.toml b/libraryversions.toml
index 8873c89..a6f57a1 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -25,9 +25,9 @@
 COMPOSE_MATERIAL3_ADAPTIVE = "1.1.0-alpha01"
 COMPOSE_MATERIAL3_COMMON = "1.0.0-alpha01"
 COMPOSE_RUNTIME_TRACING = "1.0.0-beta01"
-CONSTRAINTLAYOUT = "2.2.0-beta01"
-CONSTRAINTLAYOUT_COMPOSE = "1.1.0-beta01"
-CONSTRAINTLAYOUT_CORE = "1.1.0-beta01"
+CONSTRAINTLAYOUT = "2.2.0-alpha13"
+CONSTRAINTLAYOUT_COMPOSE = "1.1.0-alpha13"
+CONSTRAINTLAYOUT_CORE = "1.1.0-alpha13"
 CONTENTPAGER = "1.1.0-alpha01"
 COORDINATORLAYOUT = "1.3.0-alpha02"
 CORE = "1.14.0-alpha01"
@@ -42,7 +42,7 @@
 CORE_REMOTEVIEWS = "1.1.0-rc01"
 CORE_ROLE = "1.2.0-alpha01"
 CORE_SPLASHSCREEN = "1.2.0-alpha01"
-CORE_TELECOM = "1.0.0-alpha09"
+CORE_TELECOM = "1.0.0-alpha10"
 CORE_UWB = "1.0.0-alpha08"
 CREDENTIALS = "1.3.0-rc01"
 CREDENTIALS_E2EE_QUARANTINE = "1.0.0-alpha02"
@@ -97,7 +97,7 @@
 MEDIA = "1.7.0-rc01"
 MEDIAROUTER = "1.8.0-alpha01"
 METRICS = "1.0.0-beta02"
-NAVIGATION = "2.8.0-beta05"
+NAVIGATION = "2.8.0-beta06"
 PAGING = "3.4.0-alpha01"
 PALETTE = "1.1.0-alpha01"
 PDF = "1.0.0-alpha01"
diff --git a/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt b/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
index a0dc7aa..ba172dc 100644
--- a/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
+++ b/lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
@@ -101,9 +101,8 @@
 public fun <T> LiveData<T>.asFlow(): Flow<T> =
     callbackFlow {
             val observer = Observer<T> { trySend(it) }
-            withContext(Dispatchers.Main.immediate) { observeForever(observer) }
-
             try {
+                withContext(Dispatchers.Main.immediate) { observeForever(observer) }
                 awaitCancellation()
             } finally {
                 withContext(Dispatchers.Main.immediate + NonCancellable) {
diff --git a/lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt b/lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt
index 8b01a15..a1c69ec 100644
--- a/lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt
+++ b/lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt
@@ -54,6 +54,45 @@
     }
 
     @Test
+    fun checkCancellationFromInitialValue() {
+        val ld = MutableLiveData<Int>()
+        ld.value = 1
+        val flow = ld.asFlow()
+        // check that flow creation didn't make livedata active
+        assertThat(ld.hasActiveObservers()).isFalse()
+        // Collect only a single value to get the initial value and cancel immediately
+        val job = testScope.launch { assertThat(flow.take(1).toList()).isEqualTo(listOf(1)) }
+        scopes.triggerAllActions()
+        mainScope.launch {
+            // This should never be received by the take(1)
+            ld.value = 2
+        }
+        scopes.triggerAllActions()
+        // Verify that the job completing removes the observer
+        assertThat(job.isCompleted).isTrue()
+        assertThat(ld.hasActiveObservers()).isFalse()
+    }
+
+    @Test
+    fun checkCancellationAfterJobCompletes() {
+        val ld = MutableLiveData<Int>()
+        ld.value = 1
+        val flow = ld.asFlow()
+        // check that flow creation didn't make livedata active
+        assertThat(ld.hasActiveObservers()).isFalse()
+        val job = testScope.launch { assertThat(flow.take(2).toList()).isEqualTo(listOf(1, 2)) }
+        scopes.triggerAllActions()
+        mainScope.launch {
+            // Receiving this should complete the job and remove the observer
+            ld.value = 2
+        }
+        scopes.triggerAllActions()
+        // Verify that the job completing removes the observer
+        assertThat(job.isCompleted).isTrue()
+        assertThat(ld.hasActiveObservers()).isFalse()
+    }
+
+    @Test
     fun dispatchMultiple() {
         val ld = MutableLiveData<Int>()
         val collected = mutableListOf<Int>()
diff --git a/mediarouter/mediarouter/api/current.txt b/mediarouter/mediarouter/api/current.txt
index 453631b..dc395c4 100644
--- a/mediarouter/mediarouter/api/current.txt
+++ b/mediarouter/mediarouter/api/current.txt
@@ -324,12 +324,23 @@
 
   public abstract class MediaRouteProviderService extends android.app.Service {
     ctor public MediaRouteProviderService();
+    method public void addClientInfoListener(java.util.concurrent.Executor, androidx.core.util.Consumer<java.util.List<androidx.mediarouter.media.MediaRouteProviderService.ClientInfo!>!>);
     method public androidx.mediarouter.media.MediaRouteProvider? getMediaRouteProvider();
     method public android.os.IBinder? onBind(android.content.Intent);
     method public abstract androidx.mediarouter.media.MediaRouteProvider? onCreateMediaRouteProvider();
+    method public void removeClientInfoListener(androidx.core.util.Consumer<java.util.List<androidx.mediarouter.media.MediaRouteProviderService.ClientInfo!>!>);
     field public static final String SERVICE_INTERFACE = "android.media.MediaRouteProviderService";
   }
 
+  public static final class MediaRouteProviderService.ClientInfo {
+    method public String getPackageName();
+  }
+
+  public static final class MediaRouteProviderService.ClientInfo.Builder {
+    ctor public MediaRouteProviderService.ClientInfo.Builder(String);
+    method public androidx.mediarouter.media.MediaRouteProviderService.ClientInfo build();
+  }
+
   public final class MediaRouteSelector {
     method public android.os.Bundle asBundle();
     method public boolean contains(androidx.mediarouter.media.MediaRouteSelector);
diff --git a/mediarouter/mediarouter/api/restricted_current.txt b/mediarouter/mediarouter/api/restricted_current.txt
index 453631b..dc395c4 100644
--- a/mediarouter/mediarouter/api/restricted_current.txt
+++ b/mediarouter/mediarouter/api/restricted_current.txt
@@ -324,12 +324,23 @@
 
   public abstract class MediaRouteProviderService extends android.app.Service {
     ctor public MediaRouteProviderService();
+    method public void addClientInfoListener(java.util.concurrent.Executor, androidx.core.util.Consumer<java.util.List<androidx.mediarouter.media.MediaRouteProviderService.ClientInfo!>!>);
     method public androidx.mediarouter.media.MediaRouteProvider? getMediaRouteProvider();
     method public android.os.IBinder? onBind(android.content.Intent);
     method public abstract androidx.mediarouter.media.MediaRouteProvider? onCreateMediaRouteProvider();
+    method public void removeClientInfoListener(androidx.core.util.Consumer<java.util.List<androidx.mediarouter.media.MediaRouteProviderService.ClientInfo!>!>);
     field public static final String SERVICE_INTERFACE = "android.media.MediaRouteProviderService";
   }
 
+  public static final class MediaRouteProviderService.ClientInfo {
+    method public String getPackageName();
+  }
+
+  public static final class MediaRouteProviderService.ClientInfo.Builder {
+    ctor public MediaRouteProviderService.ClientInfo.Builder(String);
+    method public androidx.mediarouter.media.MediaRouteProviderService.ClientInfo build();
+  }
+
   public final class MediaRouteSelector {
     method public android.os.Bundle asBundle();
     method public boolean contains(androidx.mediarouter.media.MediaRouteSelector);
diff --git a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouteProviderServiceTest.java b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouteProviderServiceTest.java
index 02aea2f..9fd3cc8 100644
--- a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouteProviderServiceTest.java
+++ b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouteProviderServiceTest.java
@@ -31,7 +31,9 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.Messenger;
+import android.text.TextUtils;
 
+import androidx.mediarouter.media.MediaRouteProviderService.ClientInfo;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.LargeTest;
@@ -44,8 +46,10 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -75,11 +79,16 @@
 
     private static CountDownLatch sActiveScanCountDownLatch;
     private static CountDownLatch sPassiveScanCountDownLatch;
+    private static CountDownLatch sClientInfoListenerAdditionCountDownLatch;
+    private static CountDownLatch sClientInfoListenerRemovalCountDownLatch;
     private static MediaRouteDiscoveryRequest sLastDiscoveryRequest;
+    private static List<ClientInfo> sLatestClientInfo = new ArrayList<>();
 
     @Before
     public void setUp() throws Exception {
         resetActiveAndPassiveScanCountDownLatches();
+        resetClientInfoListenerAdditionCountDownLatch(2);
+        resetClientInfoListenerRemovalCountDownLatch(1);
         Context context = ApplicationProvider.getApplicationContext();
         Intent intent =
                 new Intent(context, MediaRouteProviderServiceImpl.class)
@@ -92,6 +101,8 @@
                 .addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO).build();
         registerClient(mReceiveMessenger1);
         registerClient(mReceiveMessenger2);
+        assertTrue(sClientInfoListenerAdditionCountDownLatch.await(
+                TIME_OUT_MS, TimeUnit.MILLISECONDS));
     }
 
     @After
@@ -261,6 +272,31 @@
         assertTrue(sPassiveScanCountDownLatch.await(1000 + TIME_OUT_MS, TimeUnit.MILLISECONDS));
     }
 
+    @LargeTest
+    @Test
+    public void testRegisterClient_clientRecordListenerCalled() throws Exception {
+        resetClientInfoListenerAdditionCountDownLatch(1);
+        resetClientInfoListenerRemovalCountDownLatch(1);
+        int initialCount = sLatestClientInfo.size();
+        Messenger messenger = new Messenger(new Handler(Looper.getMainLooper()));
+        registerClient(messenger);
+
+        assertTrue(
+                sClientInfoListenerAdditionCountDownLatch.await(
+                        TIME_OUT_MS, TimeUnit.MILLISECONDS));
+        assertEquals(1, sLatestClientInfo.size() - initialCount);
+        Context context = ApplicationProvider.getApplicationContext();
+        for (ClientInfo clientInfo : sLatestClientInfo) {
+            assertTrue(TextUtils.equals(
+                    context.getPackageName(), clientInfo.getPackageName()));
+        }
+
+        unregisterClient(messenger);
+        assertTrue(
+                sClientInfoListenerRemovalCountDownLatch.await(TIME_OUT_MS, TimeUnit.MILLISECONDS));
+        assertEquals(initialCount, sLatestClientInfo.size());
+    }
+
     private void registerClient(Messenger receiveMessenger) throws Exception {
         Message msg = Message.obtain();
         msg.what = MediaRouteProviderProtocol.CLIENT_MSG_REGISTER;
@@ -292,6 +328,23 @@
 
     /** Fake {@link MediaRouteProviderService} implementation. */
     public static final class MediaRouteProviderServiceImpl extends MediaRouteProviderService {
+
+        @Override
+        public void onCreate() {
+            super.onCreate();
+            sLatestClientInfo.clear();
+            addClientInfoListener(Executors.newSingleThreadExecutor(), clients -> {
+                int previousSize = sLatestClientInfo.size();
+                int newSize = clients.size();
+                sLatestClientInfo = clients;
+                if (newSize > previousSize) {
+                    sClientInfoListenerAdditionCountDownLatch.countDown();
+                } else if (previousSize > newSize) {
+                    sClientInfoListenerRemovalCountDownLatch.countDown();
+                }
+            });
+        }
+
         @Override
         public MediaRouteProvider onCreateMediaRouteProvider() {
             return new MediaRouteProviderImpl(this);
@@ -325,4 +378,12 @@
         sActiveScanCountDownLatch = new CountDownLatch(1);
         sPassiveScanCountDownLatch = new CountDownLatch(1);
     }
+
+    private void resetClientInfoListenerAdditionCountDownLatch(int count) {
+        sClientInfoListenerAdditionCountDownLatch = new CountDownLatch(count);
+    }
+
+    private void resetClientInfoListenerRemovalCountDownLatch(int count) {
+        sClientInfoListenerRemovalCountDownLatch = new CountDownLatch(count);
+    }
 }
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
index 545cbf9..9520134 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouteProviderService.java
@@ -16,6 +16,7 @@
 
 package androidx.mediarouter.media;
 
+import static androidx.mediarouter.media.MediaRouter.UNSELECT_REASON_UNKNOWN;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_MEMBER_ROUTE_ID;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_MEMBER_ROUTE_IDS;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.CLIENT_DATA_ROUTE_ID;
@@ -54,7 +55,6 @@
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_MSG_REGISTERED;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.SERVICE_VERSION_CURRENT;
 import static androidx.mediarouter.media.MediaRouteProviderProtocol.isValidRemoteMessenger;
-import static androidx.mediarouter.media.MediaRouter.UNSELECT_REASON_UNKNOWN;
 
 import android.app.Service;
 import android.content.Context;
@@ -79,6 +79,7 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.collection.ArrayMap;
 import androidx.core.content.ContextCompat;
+import androidx.core.util.Consumer;
 import androidx.core.util.ObjectsCompat;
 import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController;
 import androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor;
@@ -89,8 +90,10 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.Executor;
 
 /**
  * Base class for media route provider services.
@@ -174,6 +177,9 @@
         boolean onSetDiscoveryRequest(Messenger messenger, int requestId,
                 MediaRouteDiscoveryRequest request);
         MediaRouteProvider.Callback getProviderCallback();
+        void addClientInfoListener(Executor listenerExecutor, Consumer<List<ClientInfo>> listener);
+        void removeClientInfoListener(Consumer<List<ClientInfo>> listener);
+        void removeAllClientInfoListeners();
     }
 
     /**
@@ -193,6 +199,31 @@
     }
 
     /**
+     * Adds a {@link Consumer} that will be used to provide updates when the list of
+     * bound clients changes.
+     *
+     * <p>The {@link Consumer} will be called with the current list of bound clients.</p>
+     *
+     * @param listenerExecutor an {@link Executor} that will be used to dispatch the callback
+     * @param listener a @code{@link Consumer} that takes a list of {@link ClientInfo}
+     */
+    public void addClientInfoListener(
+            @NonNull /* @CallbackExecutor */ Executor listenerExecutor,
+            @NonNull Consumer<List<ClientInfo>> listener) {
+        mImpl.addClientInfoListener(listenerExecutor, listener);
+    }
+
+    /**
+     * Removes the given {@link Consumer} if it was previously set.
+     *
+     * @param listener the {@link Consumer} to remove.
+     * @see #addClientInfoListener(Executor, Consumer)
+     */
+    public void removeClientInfoListener(@NonNull Consumer<List<ClientInfo>> listener) {
+        mImpl.removeClientInfoListener(listener);
+    }
+
+    /**
      * Called by the system when it is time to create the media route provider.
      *
      * @return The media route provider offered by this service, or null if
@@ -250,6 +281,7 @@
         if (mProvider != null) {
             mProvider.setCallback(null);
         }
+        mImpl.removeAllClientInfoListeners();
         super.onDestroy();
     }
 
@@ -309,6 +341,42 @@
         return "Client connection " + messenger.getBinder().toString();
     }
 
+    /**
+     * Contains information about a client that is bound to this service.
+     */
+    public static final class ClientInfo {
+        private final String packageName;
+
+        private ClientInfo(@NonNull String packageName) {
+            this.packageName = packageName;
+        }
+
+        /**
+         * Returns the package name of the client.
+         *
+         * @return The package name of the client
+         */
+        @NonNull
+        public String getPackageName() {
+            return packageName;
+        }
+
+        /** Builder for {@link ClientInfo}. */
+        public static final class Builder {
+            private final String packageName;
+
+            public Builder(@NonNull String packageName) {
+                this.packageName = packageName;
+            }
+
+            /** Builds and returns the {@link ClientInfo} object. */
+            @NonNull
+            public ClientInfo build() {
+                return new ClientInfo(packageName);
+            }
+        }
+    }
+
     private final class PrivateHandler extends Handler {
         PrivateHandler() {
         }
@@ -490,10 +558,14 @@
 
     static class MediaRouteProviderServiceImplBase implements MediaRouteProviderServiceImpl {
         final MediaRouteProviderService mService;
-        final ArrayList<ClientRecord> mClients = new ArrayList<ClientRecord>();
+        final ArrayList<ClientRecord> mClients = new ArrayList<>();
         MediaRouteDiscoveryRequest mCompositeDiscoveryRequest;
         MediaRouteDiscoveryRequest mBaseDiscoveryRequest;
         long mBaseDiscoveryRequestTimestamp;
+        @Nullable
+        private final Map<Consumer<List<ClientInfo>>, Executor> mClientInfoListeners =
+                new HashMap<>();
+        private final Object mClientInfoListenersLock = new Object();
         private final MediaRouterActiveScanThrottlingHelper mActiveScanThrottlingHelper =
                 new MediaRouterActiveScanThrottlingHelper(new Runnable() {
                     @Override
@@ -537,7 +609,7 @@
                 if (index < 0) {
                     ClientRecord client = createClientRecord(messenger, version, packageName);
                     if (client.register()) {
-                        mClients.add(client);
+                        addClient(client);
                         if (DEBUG) {
                             Log.d(TAG, client + ": Registered, version=" + version);
                         }
@@ -560,7 +632,7 @@
         public boolean onUnregisterClient(Messenger messenger, int requestId) {
             int index = findClient(messenger);
             if (index >= 0) {
-                ClientRecord client = mClients.remove(index);
+                ClientRecord client = removeClient(index);
                 if (DEBUG) {
                     Log.d(TAG, client + ": Unregistered");
                 }
@@ -575,7 +647,7 @@
         public void onBinderDied(Messenger messenger) {
             int index = findClient(messenger);
             if (index >= 0) {
-                ClientRecord client = mClients.remove(index);
+                ClientRecord client = removeClient(index);
                 if (DEBUG) {
                     Log.d(TAG, client + ": Binder died");
                 }
@@ -1100,12 +1172,72 @@
                 sendMessage(mMessenger, SERVICE_MSG_DYNAMIC_ROUTE_DESCRIPTORS_CHANGED,
                         0, controllerId, bundle, null);
             }
+
+            private ClientInfo getClientInfo() {
+                return new ClientInfo.Builder(mPackageName).build();
+            }
         }
 
         ClientRecord createClientRecord(Messenger messenger, int version, String packageName) {
             return new ClientRecord(messenger, version, packageName);
         }
 
+        private void addClient(ClientRecord client) {
+            mClients.add(client);
+            notifyClientRecordsChanged();
+        }
+
+        private ClientRecord removeClient(int index) {
+            ClientRecord removedClient = mClients.remove(index);
+            notifyClientRecordsChanged();
+            return removedClient;
+        }
+
+        @Override
+        public void addClientInfoListener (
+                @NonNull /* @CallbackExecutor */ Executor listenerExecutor,
+                @NonNull Consumer<List<ClientInfo>> listener) {
+            synchronized (mClientInfoListenersLock) {
+                mClientInfoListeners.put(listener, listenerExecutor);
+                // Immediately provide the current list of bound clients.
+                notifyClientRecordsChanged();
+            }
+        }
+
+        @Override
+        public void removeClientInfoListener(Consumer<List<ClientInfo>> listener) {
+            synchronized (mClientInfoListenersLock) {
+                mClientInfoListeners.remove(listener);
+            }
+        }
+
+        @Override
+        public void removeAllClientInfoListeners() {
+            synchronized (mClientInfoListenersLock) {
+                mClientInfoListeners.clear();
+            }
+        }
+
+        private void notifyClientRecordsChanged() {
+            if (!mClientInfoListeners.isEmpty()) {
+                ArrayList<ClientInfo> clientInfos = new ArrayList<>();
+                for (ClientRecord client : new ArrayList<>(mClients)) {
+                    clientInfos.add(client.getClientInfo());
+                }
+
+                synchronized (mClientInfoListenersLock) {
+                    for (Map.Entry<Consumer<List<ClientInfo>>, Executor> entry :
+                            mClientInfoListeners.entrySet()) {
+                        Consumer<List<ClientInfo>> listener = entry.getKey();
+                        Executor executor = entry.getValue();
+                        executor.execute(() -> {
+                            listener.accept(clientInfos);
+                        });
+                    }
+                }
+            }
+        }
+
         class ProviderCallbackBase extends MediaRouteProvider.Callback {
             @Override
             public void onDescriptorChanged(@NonNull MediaRouteProvider provider,
diff --git a/navigation/navigation-common-ktx/api/2.8.0-beta06.txt b/navigation/navigation-common-ktx/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-common-ktx/api/2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt b/navigation/navigation-common-ktx/api/res-2.8.0-beta06.txt
similarity index 100%
rename from constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt
rename to navigation/navigation-common-ktx/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-common-ktx/api/restricted_2.8.0-beta06.txt b/navigation/navigation-common-ktx/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-common-ktx/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/navigation/navigation-common/api/2.8.0-beta06.txt b/navigation/navigation-common/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..bb6ad19
--- /dev/null
+++ b/navigation/navigation-common/api/2.8.0-beta06.txt
@@ -0,0 +1,594 @@
+// Signature format: 4.0
+package androidx.navigation {
+
+  public final class ActionOnlyNavDirections implements androidx.navigation.NavDirections {
+    ctor public ActionOnlyNavDirections(int actionId);
+    method public int component1();
+    method public androidx.navigation.ActionOnlyNavDirections copy(int actionId);
+    method public int getActionId();
+    method public android.os.Bundle getArguments();
+    property public int actionId;
+    property public android.os.Bundle arguments;
+  }
+
+  @androidx.navigation.NavOptionsDsl public final class AnimBuilder {
+    ctor public AnimBuilder();
+    method public int getEnter();
+    method public int getExit();
+    method public int getPopEnter();
+    method public int getPopExit();
+    method public void setEnter(int);
+    method public void setExit(int);
+    method public void setPopEnter(int);
+    method public void setPopExit(int);
+    property public final int enter;
+    property public final int exit;
+    property public final int popEnter;
+    property public final int popExit;
+  }
+
+  public abstract class CollectionNavType<T> extends androidx.navigation.NavType<T> {
+    ctor public CollectionNavType(boolean isNullableAllowed);
+    method public abstract T emptyCollection();
+    method public abstract java.util.List<java.lang.String> serializeAsValues(T value);
+  }
+
+  public interface FloatingWindow {
+  }
+
+  public final class NamedNavArgument {
+    method public operator String component1();
+    method public operator androidx.navigation.NavArgument component2();
+    method public androidx.navigation.NavArgument getArgument();
+    method public String getName();
+    property public final androidx.navigation.NavArgument argument;
+    property public final String name;
+  }
+
+  public final class NamedNavArgumentKt {
+    method public static androidx.navigation.NamedNavArgument navArgument(String name, kotlin.jvm.functions.Function1<? super androidx.navigation.NavArgumentBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavAction {
+    ctor public NavAction(@IdRes int destinationId);
+    ctor public NavAction(@IdRes int destinationId, optional androidx.navigation.NavOptions? navOptions);
+    ctor public NavAction(@IdRes int destinationId, optional androidx.navigation.NavOptions? navOptions, optional android.os.Bundle? defaultArguments);
+    method public android.os.Bundle? getDefaultArguments();
+    method public int getDestinationId();
+    method public androidx.navigation.NavOptions? getNavOptions();
+    method public void setDefaultArguments(android.os.Bundle?);
+    method public void setNavOptions(androidx.navigation.NavOptions?);
+    property public final android.os.Bundle? defaultArguments;
+    property public final int destinationId;
+    property public final androidx.navigation.NavOptions? navOptions;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class NavActionBuilder {
+    ctor public NavActionBuilder();
+    method public java.util.Map<java.lang.String,java.lang.Object?> getDefaultArguments();
+    method public int getDestinationId();
+    method public void navOptions(kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> optionsBuilder);
+    method public void setDestinationId(int);
+    property public final java.util.Map<java.lang.String,java.lang.Object?> defaultArguments;
+    property public final int destinationId;
+  }
+
+  public interface NavArgs {
+  }
+
+  public final class NavArgsLazy<Args extends androidx.navigation.NavArgs> implements kotlin.Lazy<Args> {
+    ctor public NavArgsLazy(kotlin.reflect.KClass<Args> navArgsClass, kotlin.jvm.functions.Function0<android.os.Bundle> argumentProducer);
+    method public Args getValue();
+    method public boolean isInitialized();
+    property public Args value;
+  }
+
+  public final class NavArgument {
+    method public Object? getDefaultValue();
+    method public androidx.navigation.NavType<java.lang.Object?> getType();
+    method public boolean isDefaultValuePresent();
+    method public boolean isNullable();
+    property public final Object? defaultValue;
+    property public final boolean isDefaultValuePresent;
+    property public final boolean isNullable;
+    property public final androidx.navigation.NavType<java.lang.Object?> type;
+  }
+
+  public static final class NavArgument.Builder {
+    ctor public NavArgument.Builder();
+    method public androidx.navigation.NavArgument build();
+    method public androidx.navigation.NavArgument.Builder setDefaultValue(Object? defaultValue);
+    method public androidx.navigation.NavArgument.Builder setIsNullable(boolean isNullable);
+    method public <T> androidx.navigation.NavArgument.Builder setType(androidx.navigation.NavType<T> type);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class NavArgumentBuilder {
+    ctor public NavArgumentBuilder();
+    method public androidx.navigation.NavArgument build();
+    method public Object? getDefaultValue();
+    method public boolean getNullable();
+    method public androidx.navigation.NavType<? extends java.lang.Object?> getType();
+    method public void setDefaultValue(Object?);
+    method public void setNullable(boolean);
+    method public void setType(androidx.navigation.NavType<? extends java.lang.Object?>);
+    property public final Object? defaultValue;
+    property public final boolean nullable;
+    property public final androidx.navigation.NavType<? extends java.lang.Object?> type;
+  }
+
+  public final class NavBackStackEntry implements androidx.lifecycle.HasDefaultViewModelProviderFactory androidx.lifecycle.LifecycleOwner androidx.savedstate.SavedStateRegistryOwner androidx.lifecycle.ViewModelStoreOwner {
+    method public android.os.Bundle? getArguments();
+    method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+    method public androidx.navigation.NavDestination getDestination();
+    method public String getId();
+    method public androidx.lifecycle.Lifecycle getLifecycle();
+    method @MainThread public androidx.lifecycle.SavedStateHandle getSavedStateHandle();
+    method public androidx.savedstate.SavedStateRegistry getSavedStateRegistry();
+    method public androidx.lifecycle.ViewModelStore getViewModelStore();
+    property public final android.os.Bundle? arguments;
+    property public androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+    property public androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
+    property public final androidx.navigation.NavDestination destination;
+    property public final String id;
+    property public androidx.lifecycle.Lifecycle lifecycle;
+    property @MainThread public final androidx.lifecycle.SavedStateHandle savedStateHandle;
+    property public androidx.savedstate.SavedStateRegistry savedStateRegistry;
+    property public androidx.lifecycle.ViewModelStore viewModelStore;
+    field public static final androidx.navigation.NavBackStackEntry.Companion Companion;
+  }
+
+  public static final class NavBackStackEntry.Companion {
+  }
+
+  public final class NavBackStackEntryKt {
+    method public static inline <reified T> T toRoute(androidx.navigation.NavBackStackEntry);
+  }
+
+  public final class NavDeepLink {
+    method public String? getAction();
+    method public String? getMimeType();
+    method public String? getUriPattern();
+    property public final String? action;
+    property public final String? mimeType;
+    property public final String? uriPattern;
+  }
+
+  public static final class NavDeepLink.Builder {
+    method public androidx.navigation.NavDeepLink build();
+    method public static androidx.navigation.NavDeepLink.Builder fromAction(String action);
+    method public static androidx.navigation.NavDeepLink.Builder fromMimeType(String mimeType);
+    method public static androidx.navigation.NavDeepLink.Builder fromUriPattern(String uriPattern);
+    method public androidx.navigation.NavDeepLink.Builder setAction(String action);
+    method public androidx.navigation.NavDeepLink.Builder setMimeType(String mimeType);
+    method public androidx.navigation.NavDeepLink.Builder setUriPattern(String uriPattern);
+    method public inline <reified T> androidx.navigation.NavDeepLink.Builder setUriPattern(String basePath, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+  }
+
+  @kotlin.DslMarker public @interface NavDeepLinkDsl {
+  }
+
+  @androidx.navigation.NavDeepLinkDsl public final class NavDeepLinkDslBuilder {
+    ctor public NavDeepLinkDslBuilder();
+    method public String? getAction();
+    method public String? getMimeType();
+    method public String? getUriPattern();
+    method public void setAction(String?);
+    method public void setMimeType(String?);
+    method public void setUriPattern(String?);
+    property public final String? action;
+    property public final String? mimeType;
+    property public final String? uriPattern;
+  }
+
+  public final class NavDeepLinkDslBuilderKt {
+    method public static inline <reified T> androidx.navigation.NavDeepLink navDeepLink(String basePath, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> deepLinkBuilder);
+    method public static androidx.navigation.NavDeepLink navDeepLink(kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> deepLinkBuilder);
+  }
+
+  public class NavDeepLinkRequest {
+    method public String? getAction();
+    method public String? getMimeType();
+    method public android.net.Uri? getUri();
+    property public String? action;
+    property public String? mimeType;
+    property public android.net.Uri? uri;
+  }
+
+  public static final class NavDeepLinkRequest.Builder {
+    method public androidx.navigation.NavDeepLinkRequest build();
+    method public static androidx.navigation.NavDeepLinkRequest.Builder fromAction(String action);
+    method public static androidx.navigation.NavDeepLinkRequest.Builder fromMimeType(String mimeType);
+    method public static androidx.navigation.NavDeepLinkRequest.Builder fromUri(android.net.Uri uri);
+    method public androidx.navigation.NavDeepLinkRequest.Builder setAction(String action);
+    method public androidx.navigation.NavDeepLinkRequest.Builder setMimeType(String mimeType);
+    method public androidx.navigation.NavDeepLinkRequest.Builder setUri(android.net.Uri uri);
+    field public static final androidx.navigation.NavDeepLinkRequest.Builder.Companion Companion;
+  }
+
+  public static final class NavDeepLinkRequest.Builder.Companion {
+    method public androidx.navigation.NavDeepLinkRequest.Builder fromAction(String action);
+    method public androidx.navigation.NavDeepLinkRequest.Builder fromMimeType(String mimeType);
+    method public androidx.navigation.NavDeepLinkRequest.Builder fromUri(android.net.Uri uri);
+  }
+
+  public class NavDestination {
+    ctor public NavDestination(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    ctor public NavDestination(String navigatorName);
+    method public final void addArgument(String argumentName, androidx.navigation.NavArgument argument);
+    method public final void addDeepLink(androidx.navigation.NavDeepLink navDeepLink);
+    method public final void addDeepLink(String uriPattern);
+    method public final String? fillInLabel(android.content.Context context, android.os.Bundle? bundle);
+    method public final androidx.navigation.NavAction? getAction(@IdRes int id);
+    method public final java.util.Map<java.lang.String,androidx.navigation.NavArgument> getArguments();
+    method public static final kotlin.sequences.Sequence<androidx.navigation.NavDestination> getHierarchy(androidx.navigation.NavDestination);
+    method @IdRes public final int getId();
+    method public final CharSequence? getLabel();
+    method public final String getNavigatorName();
+    method public final androidx.navigation.NavGraph? getParent();
+    method public final String? getRoute();
+    method public boolean hasDeepLink(android.net.Uri deepLink);
+    method public boolean hasDeepLink(androidx.navigation.NavDeepLinkRequest deepLinkRequest);
+    method public static final <T> boolean hasRoute(androidx.navigation.NavDestination, kotlin.reflect.KClass<T> route);
+    method @CallSuper public void onInflate(android.content.Context context, android.util.AttributeSet attrs);
+    method protected static final <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
+    method public final void putAction(@IdRes int actionId, androidx.navigation.NavAction action);
+    method public final void putAction(@IdRes int actionId, @IdRes int destId);
+    method public final void removeAction(@IdRes int actionId);
+    method public final void removeArgument(String argumentName);
+    method public final void setId(@IdRes int);
+    method public final void setLabel(CharSequence?);
+    method public final void setRoute(String?);
+    property public final java.util.Map<java.lang.String,androidx.navigation.NavArgument> arguments;
+    property @IdRes public final int id;
+    property public final CharSequence? label;
+    property public final String navigatorName;
+    property public final androidx.navigation.NavGraph? parent;
+    property public final String? route;
+    field public static final androidx.navigation.NavDestination.Companion Companion;
+  }
+
+  @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.ANNOTATION_CLASS, kotlin.annotation.AnnotationTarget.CLASS}) public static @interface NavDestination.ClassType {
+    method public abstract Class<? extends java.lang.Object?> value();
+    property public abstract Class<? extends java.lang.Object?> value;
+  }
+
+  public static final class NavDestination.Companion {
+    method public kotlin.sequences.Sequence<androidx.navigation.NavDestination> getHierarchy(androidx.navigation.NavDestination);
+    method public inline <reified T> boolean hasRoute(androidx.navigation.NavDestination);
+    method public <T> boolean hasRoute(androidx.navigation.NavDestination, kotlin.reflect.KClass<T> route);
+    method protected <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
+  }
+
+  @androidx.navigation.NavDestinationDsl public class NavDestinationBuilder<D extends androidx.navigation.NavDestination> {
+    ctor @Deprecated public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, @IdRes int id);
+    ctor public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, String? route);
+    ctor public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method @Deprecated public final void action(int actionId, kotlin.jvm.functions.Function1<? super androidx.navigation.NavActionBuilder,kotlin.Unit> actionBuilder);
+    method public final void argument(String name, androidx.navigation.NavArgument argument);
+    method public final void argument(String name, kotlin.jvm.functions.Function1<? super androidx.navigation.NavArgumentBuilder,kotlin.Unit> argumentBuilder);
+    method public D build();
+    method public final void deepLink(androidx.navigation.NavDeepLink navDeepLink);
+    method public final void deepLink(String uriPattern);
+    method public inline <reified T> void deepLink(String basePath, kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> navDeepLink);
+    method public final void deepLink(kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> navDeepLink);
+    method public inline <reified T> void deepLinkSafeArgs(String basePath);
+    method public final int getId();
+    method public final CharSequence? getLabel();
+    method protected final androidx.navigation.Navigator<? extends D> getNavigator();
+    method public final String? getRoute();
+    method protected D instantiateDestination();
+    method public final void setLabel(CharSequence?);
+    property public final int id;
+    property public final CharSequence? label;
+    property protected final androidx.navigation.Navigator<? extends D> navigator;
+    property public final String? route;
+  }
+
+  @kotlin.DslMarker public @interface NavDestinationDsl {
+  }
+
+  public interface NavDirections {
+    method @IdRes public int getActionId();
+    method public android.os.Bundle getArguments();
+    property @IdRes public abstract int actionId;
+    property public abstract android.os.Bundle arguments;
+  }
+
+  public class NavGraph extends androidx.navigation.NavDestination implements java.lang.Iterable<androidx.navigation.NavDestination> kotlin.jvm.internal.markers.KMappedMarker {
+    ctor public NavGraph(androidx.navigation.Navigator<? extends androidx.navigation.NavGraph> navGraphNavigator);
+    method public final void addAll(androidx.navigation.NavGraph other);
+    method public final void addDestination(androidx.navigation.NavDestination node);
+    method public final void addDestinations(androidx.navigation.NavDestination... nodes);
+    method public final void addDestinations(java.util.Collection<? extends androidx.navigation.NavDestination?> nodes);
+    method public final void clear();
+    method public inline <reified T> androidx.navigation.NavDestination? findNode();
+    method public final androidx.navigation.NavDestination? findNode(@IdRes int resId);
+    method public final androidx.navigation.NavDestination? findNode(String? route);
+    method public final <T> androidx.navigation.NavDestination? findNode(T? route);
+    method public static final androidx.navigation.NavDestination findStartDestination(androidx.navigation.NavGraph);
+    method @Deprecated @IdRes public final int getStartDestination();
+    method @IdRes public final int getStartDestinationId();
+    method public final String? getStartDestinationRoute();
+    method public final java.util.Iterator<androidx.navigation.NavDestination> iterator();
+    method public final void remove(androidx.navigation.NavDestination node);
+    method public inline <reified T> void setStartDestination();
+    method public final void setStartDestination(int startDestId);
+    method public final void setStartDestination(String startDestRoute);
+    method public final <T> void setStartDestination(T startDestRoute);
+    property @IdRes public final int startDestinationId;
+    property public final String? startDestinationRoute;
+    field public static final androidx.navigation.NavGraph.Companion Companion;
+  }
+
+  public static final class NavGraph.Companion {
+    method public androidx.navigation.NavDestination findStartDestination(androidx.navigation.NavGraph);
+  }
+
+  @androidx.navigation.NavDestinationDsl public class NavGraphBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.NavGraph> {
+    ctor @Deprecated public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, @IdRes int id, @IdRes int startDestination);
+    ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, Object startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, String startDestination, String? route);
+    ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public final void addDestination(androidx.navigation.NavDestination destination);
+    method public androidx.navigation.NavGraph build();
+    method public final <D extends androidx.navigation.NavDestination> void destination(androidx.navigation.NavDestinationBuilder<? extends D> navDestination);
+    method public final androidx.navigation.NavigatorProvider getProvider();
+    method public final operator void unaryPlus(androidx.navigation.NavDestination);
+    property public final androidx.navigation.NavigatorProvider provider;
+  }
+
+  public final class NavGraphBuilderKt {
+    method @Deprecated public static inline void navigation(androidx.navigation.NavGraphBuilder, @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, Object startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavGraphKt {
+    method public static operator boolean contains(androidx.navigation.NavGraph, @IdRes int id);
+    method public static operator boolean contains(androidx.navigation.NavGraph, String route);
+    method public static inline operator <reified T> boolean contains(androidx.navigation.NavGraph, kotlin.reflect.KClass<T> route);
+    method public static operator <T> boolean contains(androidx.navigation.NavGraph, T route);
+    method public static inline operator androidx.navigation.NavDestination get(androidx.navigation.NavGraph, @IdRes int id);
+    method public static inline operator androidx.navigation.NavDestination get(androidx.navigation.NavGraph, String route);
+    method public static inline operator <reified T> androidx.navigation.NavDestination get(androidx.navigation.NavGraph, kotlin.reflect.KClass<T> route);
+    method public static inline operator <T> androidx.navigation.NavDestination get(androidx.navigation.NavGraph, T route);
+    method public static inline operator void minusAssign(androidx.navigation.NavGraph, androidx.navigation.NavDestination node);
+    method public static inline operator void plusAssign(androidx.navigation.NavGraph, androidx.navigation.NavDestination node);
+    method public static inline operator void plusAssign(androidx.navigation.NavGraph, androidx.navigation.NavGraph other);
+  }
+
+  @androidx.navigation.Navigator.Name("navigation") public class NavGraphNavigator extends androidx.navigation.Navigator<androidx.navigation.NavGraph> {
+    ctor public NavGraphNavigator(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public androidx.navigation.NavGraph createDestination();
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
+  }
+
+  public final class NavOptions {
+    method @AnimRes @AnimatorRes public int getEnterAnim();
+    method @AnimRes @AnimatorRes public int getExitAnim();
+    method @AnimRes @AnimatorRes public int getPopEnterAnim();
+    method @AnimRes @AnimatorRes public int getPopExitAnim();
+    method @Deprecated @IdRes public int getPopUpTo();
+    method @IdRes public int getPopUpToId();
+    method public String? getPopUpToRoute();
+    method public kotlin.reflect.KClass<? extends java.lang.Object?>? getPopUpToRouteClass();
+    method public Object? getPopUpToRouteObject();
+    method public boolean isPopUpToInclusive();
+    method public boolean shouldLaunchSingleTop();
+    method public boolean shouldPopUpToSaveState();
+    method public boolean shouldRestoreState();
+    property @AnimRes @AnimatorRes public final int enterAnim;
+    property @AnimRes @AnimatorRes public final int exitAnim;
+    property @AnimRes @AnimatorRes public final int popEnterAnim;
+    property @AnimRes @AnimatorRes public final int popExitAnim;
+    property @IdRes public final int popUpToId;
+    property public final String? popUpToRoute;
+    property public final kotlin.reflect.KClass<? extends java.lang.Object?>? popUpToRouteClass;
+    property public final Object? popUpToRouteObject;
+  }
+
+  public static final class NavOptions.Builder {
+    ctor public NavOptions.Builder();
+    method public androidx.navigation.NavOptions build();
+    method public androidx.navigation.NavOptions.Builder setEnterAnim(@AnimRes @AnimatorRes int enterAnim);
+    method public androidx.navigation.NavOptions.Builder setExitAnim(@AnimRes @AnimatorRes int exitAnim);
+    method public androidx.navigation.NavOptions.Builder setLaunchSingleTop(boolean singleTop);
+    method public androidx.navigation.NavOptions.Builder setPopEnterAnim(@AnimRes @AnimatorRes int popEnterAnim);
+    method public androidx.navigation.NavOptions.Builder setPopExitAnim(@AnimRes @AnimatorRes int popExitAnim);
+    method public inline <reified T> androidx.navigation.NavOptions.Builder setPopUpTo(boolean inclusive, optional boolean saveState);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(@IdRes int destinationId, boolean inclusive);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(@IdRes int destinationId, boolean inclusive, optional boolean saveState);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(String? route, boolean inclusive);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(String? route, boolean inclusive, optional boolean saveState);
+    method public <T> androidx.navigation.NavOptions.Builder setPopUpTo(T route, boolean inclusive);
+    method public <T> androidx.navigation.NavOptions.Builder setPopUpTo(T route, boolean inclusive, optional boolean saveState);
+    method public androidx.navigation.NavOptions.Builder setRestoreState(boolean restoreState);
+  }
+
+  @androidx.navigation.NavOptionsDsl public final class NavOptionsBuilder {
+    ctor public NavOptionsBuilder();
+    method public void anim(kotlin.jvm.functions.Function1<? super androidx.navigation.AnimBuilder,kotlin.Unit> animBuilder);
+    method public boolean getLaunchSingleTop();
+    method @Deprecated public int getPopUpTo();
+    method public int getPopUpToId();
+    method public String? getPopUpToRoute();
+    method public kotlin.reflect.KClass<? extends java.lang.Object?>? getPopUpToRouteClass();
+    method public Object? getPopUpToRouteObject();
+    method public boolean getRestoreState();
+    method public void popUpTo(@IdRes int id, optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public void popUpTo(String route, optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public inline <reified T> void popUpTo(optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public <T> void popUpTo(T route, optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public void setLaunchSingleTop(boolean);
+    method @Deprecated public void setPopUpTo(int);
+    method public void setRestoreState(boolean);
+    property public final boolean launchSingleTop;
+    property @Deprecated public final int popUpTo;
+    property public final int popUpToId;
+    property public final String? popUpToRoute;
+    property public final kotlin.reflect.KClass<? extends java.lang.Object?>? popUpToRouteClass;
+    property public final Object? popUpToRouteObject;
+    property public final boolean restoreState;
+  }
+
+  public final class NavOptionsBuilderKt {
+    method public static androidx.navigation.NavOptions navOptions(kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> optionsBuilder);
+  }
+
+  @kotlin.DslMarker public @interface NavOptionsDsl {
+  }
+
+  public abstract class NavType<T> {
+    ctor public NavType(boolean isNullableAllowed);
+    method public static androidx.navigation.NavType<? extends java.lang.Object?> fromArgType(String? type, String? packageName);
+    method public abstract operator T? get(android.os.Bundle bundle, String key);
+    method public String getName();
+    method public boolean isNullableAllowed();
+    method public abstract T parseValue(String value);
+    method public T parseValue(String value, T previousValue);
+    method public abstract void put(android.os.Bundle bundle, String key, T value);
+    method public String serializeAsValue(T value);
+    method public boolean valueEquals(T value, T other);
+    property public boolean isNullableAllowed;
+    property public String name;
+    field public static final androidx.navigation.NavType<boolean[]?> BoolArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Boolean>?> BoolListType;
+    field public static final androidx.navigation.NavType<java.lang.Boolean> BoolType;
+    field public static final androidx.navigation.NavType.Companion Companion;
+    field public static final androidx.navigation.NavType<float[]?> FloatArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Float>?> FloatListType;
+    field public static final androidx.navigation.NavType<java.lang.Float> FloatType;
+    field public static final androidx.navigation.NavType<int[]?> IntArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Integer>?> IntListType;
+    field public static final androidx.navigation.NavType<java.lang.Integer> IntType;
+    field public static final androidx.navigation.NavType<long[]?> LongArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Long>?> LongListType;
+    field public static final androidx.navigation.NavType<java.lang.Long> LongType;
+    field public static final androidx.navigation.NavType<java.lang.Integer> ReferenceType;
+    field public static final androidx.navigation.NavType<java.lang.String[]?> StringArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.String>?> StringListType;
+    field public static final androidx.navigation.NavType<java.lang.String?> StringType;
+  }
+
+  public static final class NavType.Companion {
+    method public androidx.navigation.NavType<? extends java.lang.Object?> fromArgType(String? type, String? packageName);
+  }
+
+  public static final class NavType.EnumType<D extends java.lang.Enum<?>> extends androidx.navigation.NavType.SerializableType<D> {
+    ctor public NavType.EnumType(Class<D> type);
+    property public String name;
+  }
+
+  public static final class NavType.ParcelableArrayType<D extends android.os.Parcelable> extends androidx.navigation.NavType<D[]?> {
+    ctor public NavType.ParcelableArrayType(Class<D> type);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
+    method public boolean valueEquals(D[]? value, D[]? other);
+    property public String name;
+  }
+
+  public static final class NavType.ParcelableType<D> extends androidx.navigation.NavType<D> {
+    ctor public NavType.ParcelableType(Class<D> type);
+    method public D? get(android.os.Bundle bundle, String key);
+    method public D parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D value);
+    property public String name;
+  }
+
+  public static final class NavType.SerializableArrayType<D extends java.io.Serializable> extends androidx.navigation.NavType<D[]?> {
+    ctor public NavType.SerializableArrayType(Class<D> type);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
+    method public boolean valueEquals(D[]? value, D[]? other);
+    property public String name;
+  }
+
+  public static class NavType.SerializableType<D extends java.io.Serializable> extends androidx.navigation.NavType<D> {
+    ctor public NavType.SerializableType(Class<D> type);
+    method public D? get(android.os.Bundle bundle, String key);
+    method public D parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D value);
+    property public String name;
+  }
+
+  public abstract class Navigator<D extends androidx.navigation.NavDestination> {
+    ctor public Navigator();
+    method public abstract D createDestination();
+    method protected final androidx.navigation.NavigatorState getState();
+    method public final boolean isAttached();
+    method public androidx.navigation.NavDestination? navigate(D destination, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method public void navigate(java.util.List<androidx.navigation.NavBackStackEntry> entries, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @CallSuper public void onAttach(androidx.navigation.NavigatorState state);
+    method public void onLaunchSingleTop(androidx.navigation.NavBackStackEntry backStackEntry);
+    method public void onRestoreState(android.os.Bundle savedState);
+    method public android.os.Bundle? onSaveState();
+    method public boolean popBackStack();
+    method public void popBackStack(androidx.navigation.NavBackStackEntry popUpTo, boolean savedState);
+    property public final boolean isAttached;
+    property protected final androidx.navigation.NavigatorState state;
+  }
+
+  public static interface Navigator.Extras {
+  }
+
+  @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.RUNTIME) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.ANNOTATION_CLASS, kotlin.annotation.AnnotationTarget.CLASS}) public static @interface Navigator.Name {
+    method public abstract String value();
+    property public abstract String value;
+  }
+
+  public class NavigatorProvider {
+    ctor public NavigatorProvider();
+    method public final androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>? addNavigator(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    method @CallSuper public androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>? addNavigator(String name, androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    method public final <T extends androidx.navigation.Navigator<?>> T getNavigator(Class<T> navigatorClass);
+    method @CallSuper public <T extends androidx.navigation.Navigator<?>> T getNavigator(String name);
+  }
+
+  public final class NavigatorProviderKt {
+    method public static inline operator <T extends androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>> T get(androidx.navigation.NavigatorProvider, String name);
+    method public static inline operator <T extends androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>> T get(androidx.navigation.NavigatorProvider, kotlin.reflect.KClass<T> clazz);
+    method public static inline operator void plusAssign(androidx.navigation.NavigatorProvider, androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    method public static inline operator androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>? set(androidx.navigation.NavigatorProvider, String name, androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+  }
+
+  public abstract class NavigatorState {
+    ctor public NavigatorState();
+    method public abstract androidx.navigation.NavBackStackEntry createBackStackEntry(androidx.navigation.NavDestination destination, android.os.Bundle? arguments);
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.Set<androidx.navigation.NavBackStackEntry>> getTransitionsInProgress();
+    method public void markTransitionComplete(androidx.navigation.NavBackStackEntry entry);
+    method @CallSuper public void onLaunchSingleTop(androidx.navigation.NavBackStackEntry backStackEntry);
+    method @CallSuper public void onLaunchSingleTopWithTransition(androidx.navigation.NavBackStackEntry backStackEntry);
+    method public void pop(androidx.navigation.NavBackStackEntry popUpTo, boolean saveState);
+    method public void popWithTransition(androidx.navigation.NavBackStackEntry popUpTo, boolean saveState);
+    method @CallSuper public void prepareForTransition(androidx.navigation.NavBackStackEntry entry);
+    method public void push(androidx.navigation.NavBackStackEntry backStackEntry);
+    method public void pushWithTransition(androidx.navigation.NavBackStackEntry backStackEntry);
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.Set<androidx.navigation.NavBackStackEntry>> transitionsInProgress;
+  }
+
+  @androidx.navigation.NavOptionsDsl public final class PopUpToBuilder {
+    ctor public PopUpToBuilder();
+    method public boolean getInclusive();
+    method public boolean getSaveState();
+    method public void setInclusive(boolean);
+    method public void setSaveState(boolean);
+    property public final boolean inclusive;
+    property public final boolean saveState;
+  }
+
+  public final class SavedStateHandleKt {
+    method public static inline <reified T> T toRoute(androidx.lifecycle.SavedStateHandle, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt b/navigation/navigation-common/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt
copy to navigation/navigation-common/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-common/api/restricted_2.8.0-beta06.txt b/navigation/navigation-common/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..bb6ad19
--- /dev/null
+++ b/navigation/navigation-common/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,594 @@
+// Signature format: 4.0
+package androidx.navigation {
+
+  public final class ActionOnlyNavDirections implements androidx.navigation.NavDirections {
+    ctor public ActionOnlyNavDirections(int actionId);
+    method public int component1();
+    method public androidx.navigation.ActionOnlyNavDirections copy(int actionId);
+    method public int getActionId();
+    method public android.os.Bundle getArguments();
+    property public int actionId;
+    property public android.os.Bundle arguments;
+  }
+
+  @androidx.navigation.NavOptionsDsl public final class AnimBuilder {
+    ctor public AnimBuilder();
+    method public int getEnter();
+    method public int getExit();
+    method public int getPopEnter();
+    method public int getPopExit();
+    method public void setEnter(int);
+    method public void setExit(int);
+    method public void setPopEnter(int);
+    method public void setPopExit(int);
+    property public final int enter;
+    property public final int exit;
+    property public final int popEnter;
+    property public final int popExit;
+  }
+
+  public abstract class CollectionNavType<T> extends androidx.navigation.NavType<T> {
+    ctor public CollectionNavType(boolean isNullableAllowed);
+    method public abstract T emptyCollection();
+    method public abstract java.util.List<java.lang.String> serializeAsValues(T value);
+  }
+
+  public interface FloatingWindow {
+  }
+
+  public final class NamedNavArgument {
+    method public operator String component1();
+    method public operator androidx.navigation.NavArgument component2();
+    method public androidx.navigation.NavArgument getArgument();
+    method public String getName();
+    property public final androidx.navigation.NavArgument argument;
+    property public final String name;
+  }
+
+  public final class NamedNavArgumentKt {
+    method public static androidx.navigation.NamedNavArgument navArgument(String name, kotlin.jvm.functions.Function1<? super androidx.navigation.NavArgumentBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavAction {
+    ctor public NavAction(@IdRes int destinationId);
+    ctor public NavAction(@IdRes int destinationId, optional androidx.navigation.NavOptions? navOptions);
+    ctor public NavAction(@IdRes int destinationId, optional androidx.navigation.NavOptions? navOptions, optional android.os.Bundle? defaultArguments);
+    method public android.os.Bundle? getDefaultArguments();
+    method public int getDestinationId();
+    method public androidx.navigation.NavOptions? getNavOptions();
+    method public void setDefaultArguments(android.os.Bundle?);
+    method public void setNavOptions(androidx.navigation.NavOptions?);
+    property public final android.os.Bundle? defaultArguments;
+    property public final int destinationId;
+    property public final androidx.navigation.NavOptions? navOptions;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class NavActionBuilder {
+    ctor public NavActionBuilder();
+    method public java.util.Map<java.lang.String,java.lang.Object?> getDefaultArguments();
+    method public int getDestinationId();
+    method public void navOptions(kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> optionsBuilder);
+    method public void setDestinationId(int);
+    property public final java.util.Map<java.lang.String,java.lang.Object?> defaultArguments;
+    property public final int destinationId;
+  }
+
+  public interface NavArgs {
+  }
+
+  public final class NavArgsLazy<Args extends androidx.navigation.NavArgs> implements kotlin.Lazy<Args> {
+    ctor public NavArgsLazy(kotlin.reflect.KClass<Args> navArgsClass, kotlin.jvm.functions.Function0<android.os.Bundle> argumentProducer);
+    method public Args getValue();
+    method public boolean isInitialized();
+    property public Args value;
+  }
+
+  public final class NavArgument {
+    method public Object? getDefaultValue();
+    method public androidx.navigation.NavType<java.lang.Object?> getType();
+    method public boolean isDefaultValuePresent();
+    method public boolean isNullable();
+    property public final Object? defaultValue;
+    property public final boolean isDefaultValuePresent;
+    property public final boolean isNullable;
+    property public final androidx.navigation.NavType<java.lang.Object?> type;
+  }
+
+  public static final class NavArgument.Builder {
+    ctor public NavArgument.Builder();
+    method public androidx.navigation.NavArgument build();
+    method public androidx.navigation.NavArgument.Builder setDefaultValue(Object? defaultValue);
+    method public androidx.navigation.NavArgument.Builder setIsNullable(boolean isNullable);
+    method public <T> androidx.navigation.NavArgument.Builder setType(androidx.navigation.NavType<T> type);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class NavArgumentBuilder {
+    ctor public NavArgumentBuilder();
+    method public androidx.navigation.NavArgument build();
+    method public Object? getDefaultValue();
+    method public boolean getNullable();
+    method public androidx.navigation.NavType<? extends java.lang.Object?> getType();
+    method public void setDefaultValue(Object?);
+    method public void setNullable(boolean);
+    method public void setType(androidx.navigation.NavType<? extends java.lang.Object?>);
+    property public final Object? defaultValue;
+    property public final boolean nullable;
+    property public final androidx.navigation.NavType<? extends java.lang.Object?> type;
+  }
+
+  public final class NavBackStackEntry implements androidx.lifecycle.HasDefaultViewModelProviderFactory androidx.lifecycle.LifecycleOwner androidx.savedstate.SavedStateRegistryOwner androidx.lifecycle.ViewModelStoreOwner {
+    method public android.os.Bundle? getArguments();
+    method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+    method public androidx.navigation.NavDestination getDestination();
+    method public String getId();
+    method public androidx.lifecycle.Lifecycle getLifecycle();
+    method @MainThread public androidx.lifecycle.SavedStateHandle getSavedStateHandle();
+    method public androidx.savedstate.SavedStateRegistry getSavedStateRegistry();
+    method public androidx.lifecycle.ViewModelStore getViewModelStore();
+    property public final android.os.Bundle? arguments;
+    property public androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+    property public androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
+    property public final androidx.navigation.NavDestination destination;
+    property public final String id;
+    property public androidx.lifecycle.Lifecycle lifecycle;
+    property @MainThread public final androidx.lifecycle.SavedStateHandle savedStateHandle;
+    property public androidx.savedstate.SavedStateRegistry savedStateRegistry;
+    property public androidx.lifecycle.ViewModelStore viewModelStore;
+    field public static final androidx.navigation.NavBackStackEntry.Companion Companion;
+  }
+
+  public static final class NavBackStackEntry.Companion {
+  }
+
+  public final class NavBackStackEntryKt {
+    method public static inline <reified T> T toRoute(androidx.navigation.NavBackStackEntry);
+  }
+
+  public final class NavDeepLink {
+    method public String? getAction();
+    method public String? getMimeType();
+    method public String? getUriPattern();
+    property public final String? action;
+    property public final String? mimeType;
+    property public final String? uriPattern;
+  }
+
+  public static final class NavDeepLink.Builder {
+    method public androidx.navigation.NavDeepLink build();
+    method public static androidx.navigation.NavDeepLink.Builder fromAction(String action);
+    method public static androidx.navigation.NavDeepLink.Builder fromMimeType(String mimeType);
+    method public static androidx.navigation.NavDeepLink.Builder fromUriPattern(String uriPattern);
+    method public androidx.navigation.NavDeepLink.Builder setAction(String action);
+    method public androidx.navigation.NavDeepLink.Builder setMimeType(String mimeType);
+    method public androidx.navigation.NavDeepLink.Builder setUriPattern(String uriPattern);
+    method public inline <reified T> androidx.navigation.NavDeepLink.Builder setUriPattern(String basePath, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+  }
+
+  @kotlin.DslMarker public @interface NavDeepLinkDsl {
+  }
+
+  @androidx.navigation.NavDeepLinkDsl public final class NavDeepLinkDslBuilder {
+    ctor public NavDeepLinkDslBuilder();
+    method public String? getAction();
+    method public String? getMimeType();
+    method public String? getUriPattern();
+    method public void setAction(String?);
+    method public void setMimeType(String?);
+    method public void setUriPattern(String?);
+    property public final String? action;
+    property public final String? mimeType;
+    property public final String? uriPattern;
+  }
+
+  public final class NavDeepLinkDslBuilderKt {
+    method public static inline <reified T> androidx.navigation.NavDeepLink navDeepLink(String basePath, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> deepLinkBuilder);
+    method public static androidx.navigation.NavDeepLink navDeepLink(kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> deepLinkBuilder);
+  }
+
+  public class NavDeepLinkRequest {
+    method public String? getAction();
+    method public String? getMimeType();
+    method public android.net.Uri? getUri();
+    property public String? action;
+    property public String? mimeType;
+    property public android.net.Uri? uri;
+  }
+
+  public static final class NavDeepLinkRequest.Builder {
+    method public androidx.navigation.NavDeepLinkRequest build();
+    method public static androidx.navigation.NavDeepLinkRequest.Builder fromAction(String action);
+    method public static androidx.navigation.NavDeepLinkRequest.Builder fromMimeType(String mimeType);
+    method public static androidx.navigation.NavDeepLinkRequest.Builder fromUri(android.net.Uri uri);
+    method public androidx.navigation.NavDeepLinkRequest.Builder setAction(String action);
+    method public androidx.navigation.NavDeepLinkRequest.Builder setMimeType(String mimeType);
+    method public androidx.navigation.NavDeepLinkRequest.Builder setUri(android.net.Uri uri);
+    field public static final androidx.navigation.NavDeepLinkRequest.Builder.Companion Companion;
+  }
+
+  public static final class NavDeepLinkRequest.Builder.Companion {
+    method public androidx.navigation.NavDeepLinkRequest.Builder fromAction(String action);
+    method public androidx.navigation.NavDeepLinkRequest.Builder fromMimeType(String mimeType);
+    method public androidx.navigation.NavDeepLinkRequest.Builder fromUri(android.net.Uri uri);
+  }
+
+  public class NavDestination {
+    ctor public NavDestination(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    ctor public NavDestination(String navigatorName);
+    method public final void addArgument(String argumentName, androidx.navigation.NavArgument argument);
+    method public final void addDeepLink(androidx.navigation.NavDeepLink navDeepLink);
+    method public final void addDeepLink(String uriPattern);
+    method public final String? fillInLabel(android.content.Context context, android.os.Bundle? bundle);
+    method public final androidx.navigation.NavAction? getAction(@IdRes int id);
+    method public final java.util.Map<java.lang.String,androidx.navigation.NavArgument> getArguments();
+    method public static final kotlin.sequences.Sequence<androidx.navigation.NavDestination> getHierarchy(androidx.navigation.NavDestination);
+    method @IdRes public final int getId();
+    method public final CharSequence? getLabel();
+    method public final String getNavigatorName();
+    method public final androidx.navigation.NavGraph? getParent();
+    method public final String? getRoute();
+    method public boolean hasDeepLink(android.net.Uri deepLink);
+    method public boolean hasDeepLink(androidx.navigation.NavDeepLinkRequest deepLinkRequest);
+    method public static final <T> boolean hasRoute(androidx.navigation.NavDestination, kotlin.reflect.KClass<T> route);
+    method @CallSuper public void onInflate(android.content.Context context, android.util.AttributeSet attrs);
+    method protected static final <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
+    method public final void putAction(@IdRes int actionId, androidx.navigation.NavAction action);
+    method public final void putAction(@IdRes int actionId, @IdRes int destId);
+    method public final void removeAction(@IdRes int actionId);
+    method public final void removeArgument(String argumentName);
+    method public final void setId(@IdRes int);
+    method public final void setLabel(CharSequence?);
+    method public final void setRoute(String?);
+    property public final java.util.Map<java.lang.String,androidx.navigation.NavArgument> arguments;
+    property @IdRes public final int id;
+    property public final CharSequence? label;
+    property public final String navigatorName;
+    property public final androidx.navigation.NavGraph? parent;
+    property public final String? route;
+    field public static final androidx.navigation.NavDestination.Companion Companion;
+  }
+
+  @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.ANNOTATION_CLASS, kotlin.annotation.AnnotationTarget.CLASS}) public static @interface NavDestination.ClassType {
+    method public abstract Class<? extends java.lang.Object?> value();
+    property public abstract Class<? extends java.lang.Object?> value;
+  }
+
+  public static final class NavDestination.Companion {
+    method public kotlin.sequences.Sequence<androidx.navigation.NavDestination> getHierarchy(androidx.navigation.NavDestination);
+    method public inline <reified T> boolean hasRoute(androidx.navigation.NavDestination);
+    method public <T> boolean hasRoute(androidx.navigation.NavDestination, kotlin.reflect.KClass<T> route);
+    method protected <C> Class<? extends C?> parseClassFromName(android.content.Context context, String name, Class<? extends C?> expectedClassType);
+  }
+
+  @androidx.navigation.NavDestinationDsl public class NavDestinationBuilder<D extends androidx.navigation.NavDestination> {
+    ctor @Deprecated public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, @IdRes int id);
+    ctor public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, String? route);
+    ctor public NavDestinationBuilder(androidx.navigation.Navigator<? extends D> navigator, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method @Deprecated public final void action(int actionId, kotlin.jvm.functions.Function1<? super androidx.navigation.NavActionBuilder,kotlin.Unit> actionBuilder);
+    method public final void argument(String name, androidx.navigation.NavArgument argument);
+    method public final void argument(String name, kotlin.jvm.functions.Function1<? super androidx.navigation.NavArgumentBuilder,kotlin.Unit> argumentBuilder);
+    method public D build();
+    method public final void deepLink(androidx.navigation.NavDeepLink navDeepLink);
+    method public final void deepLink(String uriPattern);
+    method public inline <reified T> void deepLink(String basePath, kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> navDeepLink);
+    method public final void deepLink(kotlin.jvm.functions.Function1<? super androidx.navigation.NavDeepLinkDslBuilder,kotlin.Unit> navDeepLink);
+    method public inline <reified T> void deepLinkSafeArgs(String basePath);
+    method public final int getId();
+    method public final CharSequence? getLabel();
+    method protected final androidx.navigation.Navigator<? extends D> getNavigator();
+    method public final String? getRoute();
+    method protected D instantiateDestination();
+    method public final void setLabel(CharSequence?);
+    property public final int id;
+    property public final CharSequence? label;
+    property protected final androidx.navigation.Navigator<? extends D> navigator;
+    property public final String? route;
+  }
+
+  @kotlin.DslMarker public @interface NavDestinationDsl {
+  }
+
+  public interface NavDirections {
+    method @IdRes public int getActionId();
+    method public android.os.Bundle getArguments();
+    property @IdRes public abstract int actionId;
+    property public abstract android.os.Bundle arguments;
+  }
+
+  public class NavGraph extends androidx.navigation.NavDestination implements java.lang.Iterable<androidx.navigation.NavDestination> kotlin.jvm.internal.markers.KMappedMarker {
+    ctor public NavGraph(androidx.navigation.Navigator<? extends androidx.navigation.NavGraph> navGraphNavigator);
+    method public final void addAll(androidx.navigation.NavGraph other);
+    method public final void addDestination(androidx.navigation.NavDestination node);
+    method public final void addDestinations(androidx.navigation.NavDestination... nodes);
+    method public final void addDestinations(java.util.Collection<? extends androidx.navigation.NavDestination?> nodes);
+    method public final void clear();
+    method public inline <reified T> androidx.navigation.NavDestination? findNode();
+    method public final androidx.navigation.NavDestination? findNode(@IdRes int resId);
+    method public final androidx.navigation.NavDestination? findNode(String? route);
+    method public final <T> androidx.navigation.NavDestination? findNode(T? route);
+    method public static final androidx.navigation.NavDestination findStartDestination(androidx.navigation.NavGraph);
+    method @Deprecated @IdRes public final int getStartDestination();
+    method @IdRes public final int getStartDestinationId();
+    method public final String? getStartDestinationRoute();
+    method public final java.util.Iterator<androidx.navigation.NavDestination> iterator();
+    method public final void remove(androidx.navigation.NavDestination node);
+    method public inline <reified T> void setStartDestination();
+    method public final void setStartDestination(int startDestId);
+    method public final void setStartDestination(String startDestRoute);
+    method public final <T> void setStartDestination(T startDestRoute);
+    property @IdRes public final int startDestinationId;
+    property public final String? startDestinationRoute;
+    field public static final androidx.navigation.NavGraph.Companion Companion;
+  }
+
+  public static final class NavGraph.Companion {
+    method public androidx.navigation.NavDestination findStartDestination(androidx.navigation.NavGraph);
+  }
+
+  @androidx.navigation.NavDestinationDsl public class NavGraphBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.NavGraph> {
+    ctor @Deprecated public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, @IdRes int id, @IdRes int startDestination);
+    ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, Object startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, String startDestination, String? route);
+    ctor public NavGraphBuilder(androidx.navigation.NavigatorProvider provider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public final void addDestination(androidx.navigation.NavDestination destination);
+    method public androidx.navigation.NavGraph build();
+    method public final <D extends androidx.navigation.NavDestination> void destination(androidx.navigation.NavDestinationBuilder<? extends D> navDestination);
+    method public final androidx.navigation.NavigatorProvider getProvider();
+    method public final operator void unaryPlus(androidx.navigation.NavDestination);
+    property public final androidx.navigation.NavigatorProvider provider;
+  }
+
+  public final class NavGraphBuilderKt {
+    method @Deprecated public static inline void navigation(androidx.navigation.NavGraphBuilder, @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, Object startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavGraphKt {
+    method public static operator boolean contains(androidx.navigation.NavGraph, @IdRes int id);
+    method public static operator boolean contains(androidx.navigation.NavGraph, String route);
+    method public static inline operator <reified T> boolean contains(androidx.navigation.NavGraph, kotlin.reflect.KClass<T> route);
+    method public static operator <T> boolean contains(androidx.navigation.NavGraph, T route);
+    method public static inline operator androidx.navigation.NavDestination get(androidx.navigation.NavGraph, @IdRes int id);
+    method public static inline operator androidx.navigation.NavDestination get(androidx.navigation.NavGraph, String route);
+    method public static inline operator <reified T> androidx.navigation.NavDestination get(androidx.navigation.NavGraph, kotlin.reflect.KClass<T> route);
+    method public static inline operator <T> androidx.navigation.NavDestination get(androidx.navigation.NavGraph, T route);
+    method public static inline operator void minusAssign(androidx.navigation.NavGraph, androidx.navigation.NavDestination node);
+    method public static inline operator void plusAssign(androidx.navigation.NavGraph, androidx.navigation.NavDestination node);
+    method public static inline operator void plusAssign(androidx.navigation.NavGraph, androidx.navigation.NavGraph other);
+  }
+
+  @androidx.navigation.Navigator.Name("navigation") public class NavGraphNavigator extends androidx.navigation.Navigator<androidx.navigation.NavGraph> {
+    ctor public NavGraphNavigator(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public androidx.navigation.NavGraph createDestination();
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
+  }
+
+  public final class NavOptions {
+    method @AnimRes @AnimatorRes public int getEnterAnim();
+    method @AnimRes @AnimatorRes public int getExitAnim();
+    method @AnimRes @AnimatorRes public int getPopEnterAnim();
+    method @AnimRes @AnimatorRes public int getPopExitAnim();
+    method @Deprecated @IdRes public int getPopUpTo();
+    method @IdRes public int getPopUpToId();
+    method public String? getPopUpToRoute();
+    method public kotlin.reflect.KClass<? extends java.lang.Object?>? getPopUpToRouteClass();
+    method public Object? getPopUpToRouteObject();
+    method public boolean isPopUpToInclusive();
+    method public boolean shouldLaunchSingleTop();
+    method public boolean shouldPopUpToSaveState();
+    method public boolean shouldRestoreState();
+    property @AnimRes @AnimatorRes public final int enterAnim;
+    property @AnimRes @AnimatorRes public final int exitAnim;
+    property @AnimRes @AnimatorRes public final int popEnterAnim;
+    property @AnimRes @AnimatorRes public final int popExitAnim;
+    property @IdRes public final int popUpToId;
+    property public final String? popUpToRoute;
+    property public final kotlin.reflect.KClass<? extends java.lang.Object?>? popUpToRouteClass;
+    property public final Object? popUpToRouteObject;
+  }
+
+  public static final class NavOptions.Builder {
+    ctor public NavOptions.Builder();
+    method public androidx.navigation.NavOptions build();
+    method public androidx.navigation.NavOptions.Builder setEnterAnim(@AnimRes @AnimatorRes int enterAnim);
+    method public androidx.navigation.NavOptions.Builder setExitAnim(@AnimRes @AnimatorRes int exitAnim);
+    method public androidx.navigation.NavOptions.Builder setLaunchSingleTop(boolean singleTop);
+    method public androidx.navigation.NavOptions.Builder setPopEnterAnim(@AnimRes @AnimatorRes int popEnterAnim);
+    method public androidx.navigation.NavOptions.Builder setPopExitAnim(@AnimRes @AnimatorRes int popExitAnim);
+    method public inline <reified T> androidx.navigation.NavOptions.Builder setPopUpTo(boolean inclusive, optional boolean saveState);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(@IdRes int destinationId, boolean inclusive);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(@IdRes int destinationId, boolean inclusive, optional boolean saveState);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(String? route, boolean inclusive);
+    method public androidx.navigation.NavOptions.Builder setPopUpTo(String? route, boolean inclusive, optional boolean saveState);
+    method public <T> androidx.navigation.NavOptions.Builder setPopUpTo(T route, boolean inclusive);
+    method public <T> androidx.navigation.NavOptions.Builder setPopUpTo(T route, boolean inclusive, optional boolean saveState);
+    method public androidx.navigation.NavOptions.Builder setRestoreState(boolean restoreState);
+  }
+
+  @androidx.navigation.NavOptionsDsl public final class NavOptionsBuilder {
+    ctor public NavOptionsBuilder();
+    method public void anim(kotlin.jvm.functions.Function1<? super androidx.navigation.AnimBuilder,kotlin.Unit> animBuilder);
+    method public boolean getLaunchSingleTop();
+    method @Deprecated public int getPopUpTo();
+    method public int getPopUpToId();
+    method public String? getPopUpToRoute();
+    method public kotlin.reflect.KClass<? extends java.lang.Object?>? getPopUpToRouteClass();
+    method public Object? getPopUpToRouteObject();
+    method public boolean getRestoreState();
+    method public void popUpTo(@IdRes int id, optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public void popUpTo(String route, optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public inline <reified T> void popUpTo(optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public <T> void popUpTo(T route, optional kotlin.jvm.functions.Function1<? super androidx.navigation.PopUpToBuilder,kotlin.Unit> popUpToBuilder);
+    method public void setLaunchSingleTop(boolean);
+    method @Deprecated public void setPopUpTo(int);
+    method public void setRestoreState(boolean);
+    property public final boolean launchSingleTop;
+    property @Deprecated public final int popUpTo;
+    property public final int popUpToId;
+    property public final String? popUpToRoute;
+    property public final kotlin.reflect.KClass<? extends java.lang.Object?>? popUpToRouteClass;
+    property public final Object? popUpToRouteObject;
+    property public final boolean restoreState;
+  }
+
+  public final class NavOptionsBuilderKt {
+    method public static androidx.navigation.NavOptions navOptions(kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> optionsBuilder);
+  }
+
+  @kotlin.DslMarker public @interface NavOptionsDsl {
+  }
+
+  public abstract class NavType<T> {
+    ctor public NavType(boolean isNullableAllowed);
+    method public static androidx.navigation.NavType<? extends java.lang.Object?> fromArgType(String? type, String? packageName);
+    method public abstract operator T? get(android.os.Bundle bundle, String key);
+    method public String getName();
+    method public boolean isNullableAllowed();
+    method public abstract T parseValue(String value);
+    method public T parseValue(String value, T previousValue);
+    method public abstract void put(android.os.Bundle bundle, String key, T value);
+    method public String serializeAsValue(T value);
+    method public boolean valueEquals(T value, T other);
+    property public boolean isNullableAllowed;
+    property public String name;
+    field public static final androidx.navigation.NavType<boolean[]?> BoolArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Boolean>?> BoolListType;
+    field public static final androidx.navigation.NavType<java.lang.Boolean> BoolType;
+    field public static final androidx.navigation.NavType.Companion Companion;
+    field public static final androidx.navigation.NavType<float[]?> FloatArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Float>?> FloatListType;
+    field public static final androidx.navigation.NavType<java.lang.Float> FloatType;
+    field public static final androidx.navigation.NavType<int[]?> IntArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Integer>?> IntListType;
+    field public static final androidx.navigation.NavType<java.lang.Integer> IntType;
+    field public static final androidx.navigation.NavType<long[]?> LongArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.Long>?> LongListType;
+    field public static final androidx.navigation.NavType<java.lang.Long> LongType;
+    field public static final androidx.navigation.NavType<java.lang.Integer> ReferenceType;
+    field public static final androidx.navigation.NavType<java.lang.String[]?> StringArrayType;
+    field public static final androidx.navigation.NavType<java.util.List<java.lang.String>?> StringListType;
+    field public static final androidx.navigation.NavType<java.lang.String?> StringType;
+  }
+
+  public static final class NavType.Companion {
+    method public androidx.navigation.NavType<? extends java.lang.Object?> fromArgType(String? type, String? packageName);
+  }
+
+  public static final class NavType.EnumType<D extends java.lang.Enum<?>> extends androidx.navigation.NavType.SerializableType<D> {
+    ctor public NavType.EnumType(Class<D> type);
+    property public String name;
+  }
+
+  public static final class NavType.ParcelableArrayType<D extends android.os.Parcelable> extends androidx.navigation.NavType<D[]?> {
+    ctor public NavType.ParcelableArrayType(Class<D> type);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
+    method public boolean valueEquals(D[]? value, D[]? other);
+    property public String name;
+  }
+
+  public static final class NavType.ParcelableType<D> extends androidx.navigation.NavType<D> {
+    ctor public NavType.ParcelableType(Class<D> type);
+    method public D? get(android.os.Bundle bundle, String key);
+    method public D parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D value);
+    property public String name;
+  }
+
+  public static final class NavType.SerializableArrayType<D extends java.io.Serializable> extends androidx.navigation.NavType<D[]?> {
+    ctor public NavType.SerializableArrayType(Class<D> type);
+    method public D[]? get(android.os.Bundle bundle, String key);
+    method public D[] parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D[]? value);
+    method public boolean valueEquals(D[]? value, D[]? other);
+    property public String name;
+  }
+
+  public static class NavType.SerializableType<D extends java.io.Serializable> extends androidx.navigation.NavType<D> {
+    ctor public NavType.SerializableType(Class<D> type);
+    method public D? get(android.os.Bundle bundle, String key);
+    method public D parseValue(String value);
+    method public void put(android.os.Bundle bundle, String key, D value);
+    property public String name;
+  }
+
+  public abstract class Navigator<D extends androidx.navigation.NavDestination> {
+    ctor public Navigator();
+    method public abstract D createDestination();
+    method protected final androidx.navigation.NavigatorState getState();
+    method public final boolean isAttached();
+    method public androidx.navigation.NavDestination? navigate(D destination, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method public void navigate(java.util.List<androidx.navigation.NavBackStackEntry> entries, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @CallSuper public void onAttach(androidx.navigation.NavigatorState state);
+    method public void onLaunchSingleTop(androidx.navigation.NavBackStackEntry backStackEntry);
+    method public void onRestoreState(android.os.Bundle savedState);
+    method public android.os.Bundle? onSaveState();
+    method public boolean popBackStack();
+    method public void popBackStack(androidx.navigation.NavBackStackEntry popUpTo, boolean savedState);
+    property public final boolean isAttached;
+    property protected final androidx.navigation.NavigatorState state;
+  }
+
+  public static interface Navigator.Extras {
+  }
+
+  @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.RUNTIME) @kotlin.annotation.Target(allowedTargets={kotlin.annotation.AnnotationTarget.ANNOTATION_CLASS, kotlin.annotation.AnnotationTarget.CLASS}) public static @interface Navigator.Name {
+    method public abstract String value();
+    property public abstract String value;
+  }
+
+  public class NavigatorProvider {
+    ctor public NavigatorProvider();
+    method public final androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>? addNavigator(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    method @CallSuper public androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>? addNavigator(String name, androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    method public final <T extends androidx.navigation.Navigator<?>> T getNavigator(Class<T> navigatorClass);
+    method @CallSuper public <T extends androidx.navigation.Navigator<?>> T getNavigator(String name);
+  }
+
+  public final class NavigatorProviderKt {
+    method public static inline operator <T extends androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>> T get(androidx.navigation.NavigatorProvider, String name);
+    method public static inline operator <T extends androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>> T get(androidx.navigation.NavigatorProvider, kotlin.reflect.KClass<T> clazz);
+    method public static inline operator void plusAssign(androidx.navigation.NavigatorProvider, androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+    method public static inline operator androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>? set(androidx.navigation.NavigatorProvider, String name, androidx.navigation.Navigator<? extends androidx.navigation.NavDestination> navigator);
+  }
+
+  public abstract class NavigatorState {
+    ctor public NavigatorState();
+    method public abstract androidx.navigation.NavBackStackEntry createBackStackEntry(androidx.navigation.NavDestination destination, android.os.Bundle? arguments);
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.Set<androidx.navigation.NavBackStackEntry>> getTransitionsInProgress();
+    method public void markTransitionComplete(androidx.navigation.NavBackStackEntry entry);
+    method @CallSuper public void onLaunchSingleTop(androidx.navigation.NavBackStackEntry backStackEntry);
+    method @CallSuper public void onLaunchSingleTopWithTransition(androidx.navigation.NavBackStackEntry backStackEntry);
+    method public void pop(androidx.navigation.NavBackStackEntry popUpTo, boolean saveState);
+    method public void popWithTransition(androidx.navigation.NavBackStackEntry popUpTo, boolean saveState);
+    method @CallSuper public void prepareForTransition(androidx.navigation.NavBackStackEntry entry);
+    method public void push(androidx.navigation.NavBackStackEntry backStackEntry);
+    method public void pushWithTransition(androidx.navigation.NavBackStackEntry backStackEntry);
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.Set<androidx.navigation.NavBackStackEntry>> transitionsInProgress;
+  }
+
+  @androidx.navigation.NavOptionsDsl public final class PopUpToBuilder {
+    ctor public PopUpToBuilder();
+    method public boolean getInclusive();
+    method public boolean getSaveState();
+    method public void setInclusive(boolean);
+    method public void setSaveState(boolean);
+    property public final boolean inclusive;
+    property public final boolean saveState;
+  }
+
+  public final class SavedStateHandleKt {
+    method public static inline <reified T> T toRoute(androidx.lifecycle.SavedStateHandle, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+  }
+
+}
+
diff --git a/navigation/navigation-compose/api/2.8.0-beta06.txt b/navigation/navigation-compose/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..f4411f7
--- /dev/null
+++ b/navigation/navigation-compose/api/2.8.0-beta06.txt
@@ -0,0 +1,94 @@
+// Signature format: 4.0
+package androidx.navigation.compose {
+
+  @androidx.navigation.Navigator.Name("composable") public final class ComposeNavigator extends androidx.navigation.Navigator<androidx.navigation.compose.ComposeNavigator.Destination> {
+    ctor public ComposeNavigator();
+    method public androidx.navigation.compose.ComposeNavigator.Destination createDestination();
+    method public kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    method public void onTransitionComplete(androidx.navigation.NavBackStackEntry entry);
+    method public void prepareForTransition(androidx.navigation.NavBackStackEntry entry);
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor @Deprecated public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class ComposeNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.compose.ComposeNavigator.Destination> {
+    ctor public ComposeNavigatorDestinationBuilder(androidx.navigation.compose.ComposeNavigator navigator, String route, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public ComposeNavigatorDestinationBuilder(androidx.navigation.compose.ComposeNavigator navigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public androidx.navigation.compose.ComposeNavigator.Destination build();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? getEnterTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? getExitTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? getPopEnterTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? getPopExitTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? getSizeTransform();
+    method protected androidx.navigation.compose.ComposeNavigator.Destination instantiateDestination();
+    method public void setEnterTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>?);
+    method public void setExitTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>?);
+    method public void setPopEnterTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>?);
+    method public void setPopExitTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>?);
+    method public void setSizeTransform(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>?);
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform;
+  }
+
+  public final class DialogHostKt {
+    method @androidx.compose.runtime.Composable public static void DialogHost(androidx.navigation.compose.DialogNavigator dialogNavigator);
+  }
+
+  @androidx.navigation.Navigator.Name("dialog") public final class DialogNavigator extends androidx.navigation.Navigator<androidx.navigation.compose.DialogNavigator.Destination> {
+    ctor public DialogNavigator();
+    method public androidx.navigation.compose.DialogNavigator.Destination createDestination();
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class DialogNavigator.Destination extends androidx.navigation.NavDestination implements androidx.navigation.FloatingWindow {
+    ctor public DialogNavigator.Destination(androidx.navigation.compose.DialogNavigator navigator, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DialogNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.compose.DialogNavigator.Destination> {
+    ctor public DialogNavigatorDestinationBuilder(androidx.navigation.compose.DialogNavigator navigator, String route, androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public DialogNavigatorDestinationBuilder(androidx.navigation.compose.DialogNavigator navigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method protected androidx.navigation.compose.DialogNavigator.Destination instantiateDestination();
+  }
+
+  public final class NavBackStackEntryProviderKt {
+    method @androidx.compose.runtime.Composable public static void LocalOwnersProvider(androidx.navigation.NavBackStackEntry, androidx.compose.runtime.saveable.SaveableStateHolder saveableStateHolder, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+  public final class NavGraphBuilderKt {
+    method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static inline <reified T> void composable(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void dialog(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static inline <reified T> void dialog(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, Object startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavHostControllerKt {
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberNavController(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>... navigators);
+  }
+
+  public final class NavHostKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, Object startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt b/navigation/navigation-compose/api/res-2.8.0-beta06.txt
similarity index 100%
rename from constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt
rename to navigation/navigation-compose/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-compose/api/restricted_2.8.0-beta06.txt b/navigation/navigation-compose/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..f4411f7
--- /dev/null
+++ b/navigation/navigation-compose/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,94 @@
+// Signature format: 4.0
+package androidx.navigation.compose {
+
+  @androidx.navigation.Navigator.Name("composable") public final class ComposeNavigator extends androidx.navigation.Navigator<androidx.navigation.compose.ComposeNavigator.Destination> {
+    ctor public ComposeNavigator();
+    method public androidx.navigation.compose.ComposeNavigator.Destination createDestination();
+    method public kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    method public void onTransitionComplete(androidx.navigation.NavBackStackEntry entry);
+    method public void prepareForTransition(androidx.navigation.NavBackStackEntry entry);
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor @Deprecated public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public ComposeNavigator.Destination(androidx.navigation.compose.ComposeNavigator navigator, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class ComposeNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.compose.ComposeNavigator.Destination> {
+    ctor public ComposeNavigatorDestinationBuilder(androidx.navigation.compose.ComposeNavigator navigator, String route, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public ComposeNavigatorDestinationBuilder(androidx.navigation.compose.ComposeNavigator navigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public androidx.navigation.compose.ComposeNavigator.Destination build();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? getEnterTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? getExitTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? getPopEnterTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? getPopExitTransition();
+    method public kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? getSizeTransform();
+    method protected androidx.navigation.compose.ComposeNavigator.Destination instantiateDestination();
+    method public void setEnterTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>?);
+    method public void setExitTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>?);
+    method public void setPopEnterTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>?);
+    method public void setPopExitTransition(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>?);
+    method public void setSizeTransform(kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>?);
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition;
+    property public final kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform;
+  }
+
+  public final class DialogHostKt {
+    method @androidx.compose.runtime.Composable public static void DialogHost(androidx.navigation.compose.DialogNavigator dialogNavigator);
+  }
+
+  @androidx.navigation.Navigator.Name("dialog") public final class DialogNavigator extends androidx.navigation.Navigator<androidx.navigation.compose.DialogNavigator.Destination> {
+    ctor public DialogNavigator();
+    method public androidx.navigation.compose.DialogNavigator.Destination createDestination();
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class DialogNavigator.Destination extends androidx.navigation.NavDestination implements androidx.navigation.FloatingWindow {
+    ctor public DialogNavigator.Destination(androidx.navigation.compose.DialogNavigator navigator, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DialogNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.compose.DialogNavigator.Destination> {
+    ctor public DialogNavigatorDestinationBuilder(androidx.navigation.compose.DialogNavigator navigator, String route, androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    ctor public DialogNavigatorDestinationBuilder(androidx.navigation.compose.DialogNavigator navigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method protected androidx.navigation.compose.DialogNavigator.Destination instantiateDestination();
+  }
+
+  public final class NavBackStackEntryProviderKt {
+    method @androidx.compose.runtime.Composable public static void LocalOwnersProvider(androidx.navigation.NavBackStackEntry, androidx.compose.runtime.saveable.SaveableStateHolder saveableStateHolder, kotlin.jvm.functions.Function0<kotlin.Unit> content);
+  }
+
+  public final class NavGraphBuilderKt {
+    method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method @Deprecated public static void composable(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static inline <reified T> void composable(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function2<? super androidx.compose.animation.AnimatedContentScope,? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static void dialog(androidx.navigation.NavGraphBuilder, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static inline <reified T> void dialog(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional androidx.compose.ui.window.DialogProperties dialogProperties, kotlin.jvm.functions.Function1<? super androidx.navigation.NavBackStackEntry,kotlin.Unit> content);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, Object startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition?>? popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static void navigation(androidx.navigation.NavGraphBuilder, String startDestination, String route, optional java.util.List<androidx.navigation.NamedNavArgument> arguments, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.NavGraphBuilder, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional java.util.List<androidx.navigation.NavDeepLink> deepLinks, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition?>? popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition?>? popExitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavHostControllerKt {
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<androidx.navigation.NavBackStackEntry?> currentBackStackEntryAsState(androidx.navigation.NavController);
+    method @androidx.compose.runtime.Composable public static androidx.navigation.NavHostController rememberNavController(androidx.navigation.Navigator<? extends androidx.navigation.NavDestination>... navigators);
+  }
+
+  public final class NavHostKt {
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, androidx.navigation.NavGraph graph, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, Object startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<? super androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,? extends androidx.compose.animation.ExitTransition> popExitTransition, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional String? route, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, String startDestination, optional androidx.compose.ui.Modifier modifier, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method @androidx.compose.runtime.Composable public static void NavHost(androidx.navigation.NavHostController navController, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.ui.Alignment contentAlignment, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> enterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> exitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.EnterTransition> popEnterTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.ExitTransition> popExitTransition, optional kotlin.jvm.functions.Function1<androidx.compose.animation.AnimatedContentTransitionScope<androidx.navigation.NavBackStackEntry>,androidx.compose.animation.SizeTransform?>? sizeTransform, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+}
+
diff --git a/navigation/navigation-compose/build.gradle b/navigation/navigation-compose/build.gradle
index 2e7e9c4..feafa4a 100644
--- a/navigation/navigation-compose/build.gradle
+++ b/navigation/navigation-compose/build.gradle
@@ -28,11 +28,11 @@
 
     implementation(libs.kotlinStdlib)
     api("androidx.activity:activity-compose:1.8.0")
-    api("androidx.compose.animation:animation:1.7.0-beta04")
-    implementation("androidx.compose.foundation:foundation-layout:1.7.0-beta04")
-    api("androidx.compose.runtime:runtime:1.7.0-beta04")
-    api("androidx.compose.runtime:runtime-saveable:1.7.0-beta04")
-    api("androidx.compose.ui:ui:1.7.0-beta04")
+    api("androidx.compose.animation:animation:1.7.0-beta06")
+    implementation("androidx.compose.foundation:foundation-layout:1.7.0-beta06")
+    api("androidx.compose.runtime:runtime:1.7.0-beta06")
+    api("androidx.compose.runtime:runtime-saveable:1.7.0-beta06")
+    api("androidx.compose.ui:ui:1.7.0-beta06")
     api("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
     api(projectOrArtifact(":navigation:navigation-runtime-ktx"))
     implementation(libs.kotlinSerializationCore)
diff --git a/navigation/navigation-dynamic-features-fragment/api/2.8.0-beta06.txt b/navigation/navigation-dynamic-features-fragment/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..575de0b
--- /dev/null
+++ b/navigation/navigation-dynamic-features-fragment/api/2.8.0-beta06.txt
@@ -0,0 +1,73 @@
+// Signature format: 4.0
+package androidx.navigation.dynamicfeatures.fragment {
+
+  @androidx.navigation.Navigator.Name("fragment") public final class DynamicFragmentNavigator extends androidx.navigation.fragment.FragmentNavigator {
+    ctor public DynamicFragmentNavigator(android.content.Context context, androidx.fragment.app.FragmentManager manager, int containerId, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator.Destination createDestination();
+  }
+
+  public static final class DynamicFragmentNavigator.Destination extends androidx.navigation.fragment.FragmentNavigator.Destination {
+    ctor public DynamicFragmentNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.fragment.FragmentNavigator.Destination> fragmentNavigator);
+    ctor public DynamicFragmentNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public String? getModuleName();
+    method public void setModuleName(String?);
+    property public final String? moduleName;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicFragmentNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor @Deprecated public DynamicFragmentNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator navigator, @IdRes int id, String fragmentClassName);
+    ctor public DynamicFragmentNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator navigator, String route, String fragmentClassName);
+    ctor public DynamicFragmentNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator navigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, String fragmentClassName);
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator.Destination build();
+    method public String? getModuleName();
+    method public void setModuleName(String?);
+    property public final String? moduleName;
+  }
+
+  public final class DynamicFragmentNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id);
+    method @Deprecated public static inline void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, String fragmentClassName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route);
+    method public static inline void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, String fragmentClassName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String fragmentClassName, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public class DynamicNavHostFragment extends androidx.navigation.fragment.NavHostFragment {
+    ctor public DynamicNavHostFragment();
+    method public static final androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId);
+    method public static final androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    method protected com.google.android.play.core.splitinstall.SplitInstallManager createSplitInstallManager();
+    field public static final androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment.Companion Companion;
+  }
+
+  public static final class DynamicNavHostFragment.Companion {
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId);
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+  }
+
+}
+
+package androidx.navigation.dynamicfeatures.fragment.ui {
+
+  public abstract class AbstractProgressFragment extends androidx.fragment.app.Fragment {
+    ctor public AbstractProgressFragment();
+    ctor public AbstractProgressFragment(int contentLayoutId);
+    method protected abstract void onCancelled();
+    method protected abstract void onFailed(@com.google.android.play.core.splitinstall.model.SplitInstallErrorCode int errorCode);
+    method protected void onInstalled();
+    method protected abstract void onProgress(@com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus int status, long bytesDownloaded, long bytesTotal);
+  }
+
+  public final class DefaultProgressFragment extends androidx.navigation.dynamicfeatures.fragment.ui.AbstractProgressFragment {
+    ctor public DefaultProgressFragment();
+    method protected void onCancelled();
+    method protected void onFailed(@com.google.android.play.core.splitinstall.model.SplitInstallErrorCode int errorCode);
+    method protected void onProgress(int status, long bytesDownloaded, long bytesTotal);
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt b/navigation/navigation-dynamic-features-fragment/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt
copy to navigation/navigation-dynamic-features-fragment/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-dynamic-features-fragment/api/restricted_2.8.0-beta06.txt b/navigation/navigation-dynamic-features-fragment/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..575de0b
--- /dev/null
+++ b/navigation/navigation-dynamic-features-fragment/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,73 @@
+// Signature format: 4.0
+package androidx.navigation.dynamicfeatures.fragment {
+
+  @androidx.navigation.Navigator.Name("fragment") public final class DynamicFragmentNavigator extends androidx.navigation.fragment.FragmentNavigator {
+    ctor public DynamicFragmentNavigator(android.content.Context context, androidx.fragment.app.FragmentManager manager, int containerId, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator.Destination createDestination();
+  }
+
+  public static final class DynamicFragmentNavigator.Destination extends androidx.navigation.fragment.FragmentNavigator.Destination {
+    ctor public DynamicFragmentNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.fragment.FragmentNavigator.Destination> fragmentNavigator);
+    ctor public DynamicFragmentNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public String? getModuleName();
+    method public void setModuleName(String?);
+    property public final String? moduleName;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicFragmentNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor @Deprecated public DynamicFragmentNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator navigator, @IdRes int id, String fragmentClassName);
+    ctor public DynamicFragmentNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator navigator, String route, String fragmentClassName);
+    ctor public DynamicFragmentNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator navigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, String fragmentClassName);
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigator.Destination build();
+    method public String? getModuleName();
+    method public void setModuleName(String?);
+    property public final String? moduleName;
+  }
+
+  public final class DynamicFragmentNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id);
+    method @Deprecated public static inline void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, String fragmentClassName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route);
+    method public static inline void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, String fragmentClassName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String fragmentClassName, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.fragment.DynamicFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public class DynamicNavHostFragment extends androidx.navigation.fragment.NavHostFragment {
+    ctor public DynamicNavHostFragment();
+    method public static final androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId);
+    method public static final androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    method protected com.google.android.play.core.splitinstall.SplitInstallManager createSplitInstallManager();
+    field public static final androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment.Companion Companion;
+  }
+
+  public static final class DynamicNavHostFragment.Companion {
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId);
+    method public androidx.navigation.dynamicfeatures.fragment.DynamicNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+  }
+
+}
+
+package androidx.navigation.dynamicfeatures.fragment.ui {
+
+  public abstract class AbstractProgressFragment extends androidx.fragment.app.Fragment {
+    ctor public AbstractProgressFragment();
+    ctor public AbstractProgressFragment(int contentLayoutId);
+    method protected abstract void onCancelled();
+    method protected abstract void onFailed(@com.google.android.play.core.splitinstall.model.SplitInstallErrorCode int errorCode);
+    method protected void onInstalled();
+    method protected abstract void onProgress(@com.google.android.play.core.splitinstall.model.SplitInstallSessionStatus int status, long bytesDownloaded, long bytesTotal);
+  }
+
+  public final class DefaultProgressFragment extends androidx.navigation.dynamicfeatures.fragment.ui.AbstractProgressFragment {
+    ctor public DefaultProgressFragment();
+    method protected void onCancelled();
+    method protected void onFailed(@com.google.android.play.core.splitinstall.model.SplitInstallErrorCode int errorCode);
+    method protected void onProgress(int status, long bytesDownloaded, long bytesTotal);
+  }
+
+}
+
diff --git a/navigation/navigation-dynamic-features-runtime/api/2.8.0-beta06.txt b/navigation/navigation-dynamic-features-runtime/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..2761db9
--- /dev/null
+++ b/navigation/navigation-dynamic-features-runtime/api/2.8.0-beta06.txt
@@ -0,0 +1,169 @@
+// Signature format: 4.0
+package androidx.navigation.dynamicfeatures {
+
+  @androidx.navigation.Navigator.Name("activity") public final class DynamicActivityNavigator extends androidx.navigation.ActivityNavigator {
+    ctor public DynamicActivityNavigator(android.content.Context context, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.DynamicActivityNavigator.Destination createDestination();
+  }
+
+  public static final class DynamicActivityNavigator.Destination extends androidx.navigation.ActivityNavigator.Destination {
+    ctor public DynamicActivityNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.ActivityNavigator.Destination> activityNavigator);
+    ctor public DynamicActivityNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public String? getModuleName();
+    method public void setModuleName(String?);
+    property public final String? moduleName;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicActivityNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.ActivityNavigator.Destination> {
+    ctor @Deprecated public DynamicActivityNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.DynamicActivityNavigator activityNavigator, @IdRes int id);
+    ctor public DynamicActivityNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.DynamicActivityNavigator activityNavigator, String route);
+    ctor public DynamicActivityNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.DynamicActivityNavigator activityNavigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public androidx.navigation.dynamicfeatures.DynamicActivityNavigator.Destination build();
+    method public String? getAction();
+    method public String? getActivityClassName();
+    method public android.net.Uri? getData();
+    method public String? getDataPattern();
+    method public String? getModuleName();
+    method public String? getTargetPackage();
+    method public void setAction(String?);
+    method public void setActivityClassName(String?);
+    method public void setData(android.net.Uri?);
+    method public void setDataPattern(String?);
+    method public void setModuleName(String?);
+    method public void setTargetPackage(String?);
+    property public final String? action;
+    property public final String? activityClassName;
+    property public final android.net.Uri? data;
+    property public final String? dataPattern;
+    property public final String? moduleName;
+    property public final String? targetPackage;
+  }
+
+  public final class DynamicActivityNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline void activity(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline void activity(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void activity(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class DynamicExtras implements androidx.navigation.Navigator.Extras {
+    ctor public DynamicExtras();
+    ctor public DynamicExtras(optional androidx.navigation.dynamicfeatures.DynamicInstallMonitor? installMonitor);
+    ctor public DynamicExtras(optional androidx.navigation.dynamicfeatures.DynamicInstallMonitor? installMonitor, optional androidx.navigation.Navigator.Extras? destinationExtras);
+    method public androidx.navigation.Navigator.Extras? getDestinationExtras();
+    method public androidx.navigation.dynamicfeatures.DynamicInstallMonitor? getInstallMonitor();
+    property public final androidx.navigation.Navigator.Extras? destinationExtras;
+    property public final androidx.navigation.dynamicfeatures.DynamicInstallMonitor? installMonitor;
+  }
+
+  @androidx.navigation.Navigator.Name("navigation") public final class DynamicGraphNavigator extends androidx.navigation.NavGraphNavigator {
+    ctor public DynamicGraphNavigator(androidx.navigation.NavigatorProvider navigatorProvider, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.DynamicGraphNavigator.DynamicNavGraph createDestination();
+    method public void installDefaultProgressDestination(kotlin.jvm.functions.Function0<? extends androidx.navigation.NavDestination> progressDestinationSupplier);
+  }
+
+  public static final class DynamicGraphNavigator.DynamicNavGraph extends androidx.navigation.NavGraph {
+    ctor public DynamicGraphNavigator.DynamicNavGraph(androidx.navigation.dynamicfeatures.DynamicGraphNavigator navGraphNavigator, androidx.navigation.NavigatorProvider navigatorProvider);
+    method public String? getModuleName();
+    method public int getProgressDestination();
+    method public void setModuleName(String?);
+    method public void setProgressDestination(int);
+    property public final String? moduleName;
+    property public final int progressDestination;
+  }
+
+  @androidx.navigation.Navigator.Name("include-dynamic") public final class DynamicIncludeGraphNavigator extends androidx.navigation.Navigator<androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph> {
+    ctor public DynamicIncludeGraphNavigator(android.content.Context context, androidx.navigation.NavigatorProvider navigatorProvider, androidx.navigation.NavInflater navInflater, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph createDestination();
+  }
+
+  public static final class DynamicIncludeGraphNavigator.DynamicIncludeNavGraph extends androidx.navigation.NavDestination {
+    method public String? getGraphPackage();
+    method public String? getGraphResourceName();
+    method public String? getModuleName();
+    method public void setGraphPackage(String?);
+    method public void setGraphResourceName(String?);
+    method public void setModuleName(String?);
+    property public final String? graphPackage;
+    property public final String? graphResourceName;
+    property public final String? moduleName;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicIncludeNavGraphBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph> {
+    ctor @Deprecated public DynamicIncludeNavGraphBuilder(androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator dynamicIncludeGraphNavigator, @IdRes int id, String moduleName, String graphResourceName);
+    ctor public DynamicIncludeNavGraphBuilder(androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator dynamicIncludeGraphNavigator, String route, String moduleName, String graphResourceName);
+    ctor public DynamicIncludeNavGraphBuilder(androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator dynamicIncludeGraphNavigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, String moduleName, String graphResourceName);
+    method public androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph build();
+    method public String? getGraphPackage();
+    method public void setGraphPackage(String?);
+    property public final String? graphPackage;
+  }
+
+  public final class DynamicIncludeNavGraphBuilderKt {
+    method @Deprecated public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, String moduleName, String graphResourceName);
+    method @Deprecated public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, String moduleName, String graphResourceName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicIncludeNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, String moduleName, String graphResourceName);
+    method public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, String moduleName, String graphResourceName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicIncludeNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String moduleName, String graphResourceName, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified T> void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String moduleName, String graphResourceName, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicIncludeNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public class DynamicInstallManager {
+    ctor public DynamicInstallManager(android.content.Context context, com.google.android.play.core.splitinstall.SplitInstallManager splitInstallManager);
+  }
+
+  public final class DynamicInstallMonitor {
+    ctor public DynamicInstallMonitor();
+    method public void cancelInstall();
+    method public Exception? getException();
+    method public int getSessionId();
+    method public androidx.lifecycle.LiveData<com.google.android.play.core.splitinstall.SplitInstallSessionState> getStatus();
+    method public boolean isInstallRequired();
+    property public final Exception? exception;
+    property public final boolean isInstallRequired;
+    property public final int sessionId;
+    property public final androidx.lifecycle.LiveData<com.google.android.play.core.splitinstall.SplitInstallSessionState> status;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicNavGraphBuilder extends androidx.navigation.NavGraphBuilder {
+    ctor @Deprecated public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, @IdRes int id, @IdRes int startDestination);
+    ctor public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, Object startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    ctor public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, String startDestination, optional String? route);
+    ctor public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public String? getModuleName();
+    method public int getProgressDestination();
+    method public String? getProgressDestinationRoute();
+    method public void setModuleName(String?);
+    method public void setProgressDestination(int);
+    method public void setProgressDestinationRoute(String?);
+    property public final String? moduleName;
+    property public final int progressDestination;
+    property public final String? progressDestinationRoute;
+  }
+
+  public final class DynamicNavGraphBuilderKt {
+    method @Deprecated public static inline void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, Object startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String startDestination, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavControllerKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavHostKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt b/navigation/navigation-dynamic-features-runtime/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt
copy to navigation/navigation-dynamic-features-runtime/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-dynamic-features-runtime/api/restricted_2.8.0-beta06.txt b/navigation/navigation-dynamic-features-runtime/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..2761db9
--- /dev/null
+++ b/navigation/navigation-dynamic-features-runtime/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,169 @@
+// Signature format: 4.0
+package androidx.navigation.dynamicfeatures {
+
+  @androidx.navigation.Navigator.Name("activity") public final class DynamicActivityNavigator extends androidx.navigation.ActivityNavigator {
+    ctor public DynamicActivityNavigator(android.content.Context context, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.DynamicActivityNavigator.Destination createDestination();
+  }
+
+  public static final class DynamicActivityNavigator.Destination extends androidx.navigation.ActivityNavigator.Destination {
+    ctor public DynamicActivityNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.ActivityNavigator.Destination> activityNavigator);
+    ctor public DynamicActivityNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public String? getModuleName();
+    method public void setModuleName(String?);
+    property public final String? moduleName;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicActivityNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.ActivityNavigator.Destination> {
+    ctor @Deprecated public DynamicActivityNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.DynamicActivityNavigator activityNavigator, @IdRes int id);
+    ctor public DynamicActivityNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.DynamicActivityNavigator activityNavigator, String route);
+    ctor public DynamicActivityNavigatorDestinationBuilder(androidx.navigation.dynamicfeatures.DynamicActivityNavigator activityNavigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public androidx.navigation.dynamicfeatures.DynamicActivityNavigator.Destination build();
+    method public String? getAction();
+    method public String? getActivityClassName();
+    method public android.net.Uri? getData();
+    method public String? getDataPattern();
+    method public String? getModuleName();
+    method public String? getTargetPackage();
+    method public void setAction(String?);
+    method public void setActivityClassName(String?);
+    method public void setData(android.net.Uri?);
+    method public void setDataPattern(String?);
+    method public void setModuleName(String?);
+    method public void setTargetPackage(String?);
+    property public final String? action;
+    property public final String? activityClassName;
+    property public final android.net.Uri? data;
+    property public final String? dataPattern;
+    property public final String? moduleName;
+    property public final String? targetPackage;
+  }
+
+  public final class DynamicActivityNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline void activity(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline void activity(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void activity(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class DynamicExtras implements androidx.navigation.Navigator.Extras {
+    ctor public DynamicExtras();
+    ctor public DynamicExtras(optional androidx.navigation.dynamicfeatures.DynamicInstallMonitor? installMonitor);
+    ctor public DynamicExtras(optional androidx.navigation.dynamicfeatures.DynamicInstallMonitor? installMonitor, optional androidx.navigation.Navigator.Extras? destinationExtras);
+    method public androidx.navigation.Navigator.Extras? getDestinationExtras();
+    method public androidx.navigation.dynamicfeatures.DynamicInstallMonitor? getInstallMonitor();
+    property public final androidx.navigation.Navigator.Extras? destinationExtras;
+    property public final androidx.navigation.dynamicfeatures.DynamicInstallMonitor? installMonitor;
+  }
+
+  @androidx.navigation.Navigator.Name("navigation") public final class DynamicGraphNavigator extends androidx.navigation.NavGraphNavigator {
+    ctor public DynamicGraphNavigator(androidx.navigation.NavigatorProvider navigatorProvider, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.DynamicGraphNavigator.DynamicNavGraph createDestination();
+    method public void installDefaultProgressDestination(kotlin.jvm.functions.Function0<? extends androidx.navigation.NavDestination> progressDestinationSupplier);
+  }
+
+  public static final class DynamicGraphNavigator.DynamicNavGraph extends androidx.navigation.NavGraph {
+    ctor public DynamicGraphNavigator.DynamicNavGraph(androidx.navigation.dynamicfeatures.DynamicGraphNavigator navGraphNavigator, androidx.navigation.NavigatorProvider navigatorProvider);
+    method public String? getModuleName();
+    method public int getProgressDestination();
+    method public void setModuleName(String?);
+    method public void setProgressDestination(int);
+    property public final String? moduleName;
+    property public final int progressDestination;
+  }
+
+  @androidx.navigation.Navigator.Name("include-dynamic") public final class DynamicIncludeGraphNavigator extends androidx.navigation.Navigator<androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph> {
+    ctor public DynamicIncludeGraphNavigator(android.content.Context context, androidx.navigation.NavigatorProvider navigatorProvider, androidx.navigation.NavInflater navInflater, androidx.navigation.dynamicfeatures.DynamicInstallManager installManager);
+    method public androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph createDestination();
+  }
+
+  public static final class DynamicIncludeGraphNavigator.DynamicIncludeNavGraph extends androidx.navigation.NavDestination {
+    method public String? getGraphPackage();
+    method public String? getGraphResourceName();
+    method public String? getModuleName();
+    method public void setGraphPackage(String?);
+    method public void setGraphResourceName(String?);
+    method public void setModuleName(String?);
+    property public final String? graphPackage;
+    property public final String? graphResourceName;
+    property public final String? moduleName;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicIncludeNavGraphBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph> {
+    ctor @Deprecated public DynamicIncludeNavGraphBuilder(androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator dynamicIncludeGraphNavigator, @IdRes int id, String moduleName, String graphResourceName);
+    ctor public DynamicIncludeNavGraphBuilder(androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator dynamicIncludeGraphNavigator, String route, String moduleName, String graphResourceName);
+    ctor public DynamicIncludeNavGraphBuilder(androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator dynamicIncludeGraphNavigator, kotlin.reflect.KClass<? extends java.lang.Object?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, String moduleName, String graphResourceName);
+    method public androidx.navigation.dynamicfeatures.DynamicIncludeGraphNavigator.DynamicIncludeNavGraph build();
+    method public String? getGraphPackage();
+    method public void setGraphPackage(String?);
+    property public final String? graphPackage;
+  }
+
+  public final class DynamicIncludeNavGraphBuilderKt {
+    method @Deprecated public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, String moduleName, String graphResourceName);
+    method @Deprecated public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, String moduleName, String graphResourceName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicIncludeNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, String moduleName, String graphResourceName);
+    method public static inline void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String route, String moduleName, String graphResourceName, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicIncludeNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String moduleName, String graphResourceName, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified T> void includeDynamic(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String moduleName, String graphResourceName, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicIncludeNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public class DynamicInstallManager {
+    ctor public DynamicInstallManager(android.content.Context context, com.google.android.play.core.splitinstall.SplitInstallManager splitInstallManager);
+  }
+
+  public final class DynamicInstallMonitor {
+    ctor public DynamicInstallMonitor();
+    method public void cancelInstall();
+    method public Exception? getException();
+    method public int getSessionId();
+    method public androidx.lifecycle.LiveData<com.google.android.play.core.splitinstall.SplitInstallSessionState> getStatus();
+    method public boolean isInstallRequired();
+    property public final Exception? exception;
+    property public final boolean isInstallRequired;
+    property public final int sessionId;
+    property public final androidx.lifecycle.LiveData<com.google.android.play.core.splitinstall.SplitInstallSessionState> status;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DynamicNavGraphBuilder extends androidx.navigation.NavGraphBuilder {
+    ctor @Deprecated public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, @IdRes int id, @IdRes int startDestination);
+    ctor public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, Object startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    ctor public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, String startDestination, optional String? route);
+    ctor public DynamicNavGraphBuilder(androidx.navigation.NavigatorProvider provider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, kotlin.reflect.KClass<? extends java.lang.Object?>? route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public String? getModuleName();
+    method public int getProgressDestination();
+    method public String? getProgressDestinationRoute();
+    method public void setModuleName(String?);
+    method public void setProgressDestination(int);
+    method public void setProgressDestinationRoute(String?);
+    property public final String? moduleName;
+    property public final int progressDestination;
+    property public final String? progressDestinationRoute;
+  }
+
+  public final class DynamicNavGraphBuilderKt {
+    method @Deprecated public static inline void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, Object startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, String startDestination, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void navigation(androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method @Deprecated public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph navigation(androidx.navigation.NavigatorProvider, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavControllerKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavHostKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.dynamicfeatures.DynamicNavGraphBuilder,kotlin.Unit> builder);
+  }
+
+}
+
diff --git a/navigation/navigation-fragment-compose/api/2.8.0-beta06.txt b/navigation/navigation-fragment-compose/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..d598ace
--- /dev/null
+++ b/navigation/navigation-fragment-compose/api/2.8.0-beta06.txt
@@ -0,0 +1,37 @@
+// Signature format: 4.0
+package androidx.navigation.fragment.compose {
+
+  public final class ComposableFragment extends androidx.fragment.app.Fragment {
+    method public static androidx.navigation.fragment.compose.ComposableFragment ComposableFragment(String fullyQualifiedName);
+    field public static final androidx.navigation.fragment.compose.ComposableFragment.Companion Companion;
+  }
+
+  public static final class ComposableFragment.Companion {
+    method public androidx.navigation.fragment.compose.ComposableFragment ComposableFragment(String fullyQualifiedName);
+  }
+
+  @androidx.navigation.Navigator.Name("composable") public final class ComposableFragmentNavigator extends androidx.navigation.Navigator<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor public ComposableFragmentNavigator(androidx.navigation.fragment.FragmentNavigator fragmentNavigator);
+    ctor public ComposableFragmentNavigator(androidx.navigation.NavigatorProvider provider);
+    method public androidx.navigation.fragment.FragmentNavigator.Destination createDestination();
+  }
+
+  public class ComposableNavHostFragment extends androidx.navigation.fragment.NavHostFragment {
+    ctor public ComposableNavHostFragment();
+    method public static final androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId);
+    method public static final androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    field public static final androidx.navigation.fragment.compose.ComposableNavHostFragment.Companion Companion;
+  }
+
+  public static final class ComposableNavHostFragment.Companion {
+    method public androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId);
+    method public androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+  }
+
+  public final class LocalFragmentKt {
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.fragment.app.Fragment> getLocalFragment();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.fragment.app.Fragment> LocalFragment;
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt b/navigation/navigation-fragment-compose/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt
copy to navigation/navigation-fragment-compose/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-fragment-compose/api/restricted_2.8.0-beta06.txt b/navigation/navigation-fragment-compose/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..d598ace
--- /dev/null
+++ b/navigation/navigation-fragment-compose/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,37 @@
+// Signature format: 4.0
+package androidx.navigation.fragment.compose {
+
+  public final class ComposableFragment extends androidx.fragment.app.Fragment {
+    method public static androidx.navigation.fragment.compose.ComposableFragment ComposableFragment(String fullyQualifiedName);
+    field public static final androidx.navigation.fragment.compose.ComposableFragment.Companion Companion;
+  }
+
+  public static final class ComposableFragment.Companion {
+    method public androidx.navigation.fragment.compose.ComposableFragment ComposableFragment(String fullyQualifiedName);
+  }
+
+  @androidx.navigation.Navigator.Name("composable") public final class ComposableFragmentNavigator extends androidx.navigation.Navigator<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor public ComposableFragmentNavigator(androidx.navigation.fragment.FragmentNavigator fragmentNavigator);
+    ctor public ComposableFragmentNavigator(androidx.navigation.NavigatorProvider provider);
+    method public androidx.navigation.fragment.FragmentNavigator.Destination createDestination();
+  }
+
+  public class ComposableNavHostFragment extends androidx.navigation.fragment.NavHostFragment {
+    ctor public ComposableNavHostFragment();
+    method public static final androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId);
+    method public static final androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    field public static final androidx.navigation.fragment.compose.ComposableNavHostFragment.Companion Companion;
+  }
+
+  public static final class ComposableNavHostFragment.Companion {
+    method public androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId);
+    method public androidx.navigation.fragment.compose.ComposableNavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+  }
+
+  public final class LocalFragmentKt {
+    method public static androidx.compose.runtime.ProvidableCompositionLocal<androidx.fragment.app.Fragment> getLocalFragment();
+    property public static final androidx.compose.runtime.ProvidableCompositionLocal<androidx.fragment.app.Fragment> LocalFragment;
+  }
+
+}
+
diff --git a/navigation/navigation-fragment-ktx/api/2.8.0-beta06.txt b/navigation/navigation-fragment-ktx/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-fragment-ktx/api/2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt b/navigation/navigation-fragment-ktx/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt
copy to navigation/navigation-fragment-ktx/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-fragment-ktx/api/restricted_2.8.0-beta06.txt b/navigation/navigation-fragment-ktx/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-fragment-ktx/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/navigation/navigation-fragment/api/2.8.0-beta06.txt b/navigation/navigation-fragment/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..0db42b8
--- /dev/null
+++ b/navigation/navigation-fragment/api/2.8.0-beta06.txt
@@ -0,0 +1,131 @@
+// Signature format: 4.0
+package androidx.navigation {
+
+  public final class NavGraphViewModelLazyKt {
+    method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, @IdRes int navGraphId, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+    method @Deprecated @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, @IdRes int navGraphId, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+    method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, String navGraphRoute, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+    method @Deprecated @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, String navGraphRoute, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+  }
+
+}
+
+package androidx.navigation.fragment {
+
+  public abstract class AbstractListDetailFragment extends androidx.fragment.app.Fragment {
+    ctor public AbstractListDetailFragment();
+    method public final androidx.navigation.fragment.NavHostFragment getDetailPaneNavHostFragment();
+    method public final androidx.slidingpanelayout.widget.SlidingPaneLayout getSlidingPaneLayout();
+    method public androidx.navigation.fragment.NavHostFragment onCreateDetailPaneNavHostFragment();
+    method public abstract android.view.View onCreateListPaneView(android.view.LayoutInflater inflater, android.view.ViewGroup? container, android.os.Bundle? savedInstanceState);
+    method @CallSuper public final android.view.View onCreateView(android.view.LayoutInflater inflater, android.view.ViewGroup? container, android.os.Bundle? savedInstanceState);
+    method public void onListPaneViewCreated(android.view.View view, android.os.Bundle? savedInstanceState);
+    method @CallSuper public final void onViewCreated(android.view.View view, android.os.Bundle? savedInstanceState);
+    property public final androidx.navigation.fragment.NavHostFragment detailPaneNavHostFragment;
+    property public final androidx.slidingpanelayout.widget.SlidingPaneLayout slidingPaneLayout;
+  }
+
+  @androidx.navigation.Navigator.Name("dialog") public final class DialogFragmentNavigator extends androidx.navigation.Navigator<androidx.navigation.fragment.DialogFragmentNavigator.Destination> {
+    ctor public DialogFragmentNavigator(android.content.Context context, androidx.fragment.app.FragmentManager fragmentManager);
+    method public androidx.navigation.fragment.DialogFragmentNavigator.Destination createDestination();
+  }
+
+  @androidx.navigation.NavDestination.ClassType(DialogFragment::class) public static class DialogFragmentNavigator.Destination extends androidx.navigation.NavDestination implements androidx.navigation.FloatingWindow {
+    ctor public DialogFragmentNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.fragment.DialogFragmentNavigator.Destination> fragmentNavigator);
+    ctor public DialogFragmentNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public final String getClassName();
+    method public final androidx.navigation.fragment.DialogFragmentNavigator.Destination setClassName(String className);
+    property public final String className;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DialogFragmentNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.fragment.DialogFragmentNavigator.Destination> {
+    ctor @Deprecated public DialogFragmentNavigatorDestinationBuilder(androidx.navigation.fragment.DialogFragmentNavigator navigator, @IdRes int id, kotlin.reflect.KClass<? extends androidx.fragment.app.DialogFragment> fragmentClass);
+    ctor public DialogFragmentNavigatorDestinationBuilder(androidx.navigation.fragment.DialogFragmentNavigator navigator, String route, kotlin.reflect.KClass<? extends androidx.fragment.app.DialogFragment> fragmentClass);
+    ctor public DialogFragmentNavigatorDestinationBuilder(androidx.navigation.fragment.DialogFragmentNavigator navigator, kotlin.reflect.KClass<?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.reflect.KClass<? extends androidx.fragment.app.DialogFragment> fragmentClass);
+    method public androidx.navigation.fragment.DialogFragmentNavigator.Destination build();
+  }
+
+  public final class DialogFragmentNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, @IdRes int id);
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.DialogFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, String route);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.DialogFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment, reified T> void dialog(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment, reified T> void dialog(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.DialogFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class FragmentKt {
+    method public static androidx.navigation.NavController findNavController(androidx.fragment.app.Fragment);
+  }
+
+  public final class FragmentNavArgsLazyKt {
+    method @MainThread public static inline <reified Args extends androidx.navigation.NavArgs> androidx.navigation.NavArgsLazy<Args> navArgs(androidx.fragment.app.Fragment);
+  }
+
+  @androidx.navigation.Navigator.Name("fragment") public class FragmentNavigator extends androidx.navigation.Navigator<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor public FragmentNavigator(android.content.Context context, androidx.fragment.app.FragmentManager fragmentManager, int containerId);
+    method public androidx.navigation.fragment.FragmentNavigator.Destination createDestination();
+    method @Deprecated public androidx.fragment.app.Fragment instantiateFragment(android.content.Context context, androidx.fragment.app.FragmentManager fragmentManager, String className, android.os.Bundle? args);
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Fragment::class) public static class FragmentNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor public FragmentNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.fragment.FragmentNavigator.Destination> fragmentNavigator);
+    ctor public FragmentNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public final String getClassName();
+    method public final androidx.navigation.fragment.FragmentNavigator.Destination setClassName(String className);
+    property public final String className;
+  }
+
+  public static final class FragmentNavigator.Extras implements androidx.navigation.Navigator.Extras {
+    method public java.util.Map<android.view.View,java.lang.String> getSharedElements();
+    property public final java.util.Map<android.view.View,java.lang.String> sharedElements;
+  }
+
+  public static final class FragmentNavigator.Extras.Builder {
+    ctor public FragmentNavigator.Extras.Builder();
+    method public androidx.navigation.fragment.FragmentNavigator.Extras.Builder addSharedElement(android.view.View sharedElement, String name);
+    method public androidx.navigation.fragment.FragmentNavigator.Extras.Builder addSharedElements(java.util.Map<android.view.View,java.lang.String> sharedElements);
+    method public androidx.navigation.fragment.FragmentNavigator.Extras build();
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class FragmentNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor @Deprecated public FragmentNavigatorDestinationBuilder(androidx.navigation.fragment.FragmentNavigator navigator, @IdRes int id, kotlin.reflect.KClass<? extends androidx.fragment.app.Fragment> fragmentClass);
+    ctor public FragmentNavigatorDestinationBuilder(androidx.navigation.fragment.FragmentNavigator navigator, String route, kotlin.reflect.KClass<? extends androidx.fragment.app.Fragment> fragmentClass);
+    ctor public FragmentNavigatorDestinationBuilder(androidx.navigation.fragment.FragmentNavigator navigator, kotlin.reflect.KClass<?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.reflect.KClass<? extends androidx.fragment.app.Fragment> fragmentClass);
+    method public androidx.navigation.fragment.FragmentNavigator.Destination build();
+  }
+
+  public final class FragmentNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, @IdRes int id);
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.FragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, String route);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.FragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.FragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class FragmentNavigatorExtrasKt {
+    method public static androidx.navigation.fragment.FragmentNavigator.Extras FragmentNavigatorExtras(kotlin.Pair<? extends android.view.View,java.lang.String>... sharedElements);
+  }
+
+  public class NavHostFragment extends androidx.fragment.app.Fragment implements androidx.navigation.NavHost {
+    ctor public NavHostFragment();
+    method public static final androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId);
+    method public static final androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    method @Deprecated protected androidx.navigation.Navigator<? extends androidx.navigation.fragment.FragmentNavigator.Destination> createFragmentNavigator();
+    method public static final androidx.navigation.NavController findNavController(androidx.fragment.app.Fragment fragment);
+    method public final androidx.navigation.NavController getNavController();
+    method @Deprecated @CallSuper protected void onCreateNavController(androidx.navigation.NavController navController);
+    method @CallSuper protected void onCreateNavHostController(androidx.navigation.NavHostController navHostController);
+    property public final androidx.navigation.NavController navController;
+    field public static final androidx.navigation.fragment.NavHostFragment.Companion Companion;
+  }
+
+  public static final class NavHostFragment.Companion {
+    method public androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId);
+    method public androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    method public androidx.navigation.NavController findNavController(androidx.fragment.app.Fragment fragment);
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt b/navigation/navigation-fragment/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt
copy to navigation/navigation-fragment/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-fragment/api/restricted_2.8.0-beta06.txt b/navigation/navigation-fragment/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..0db42b8
--- /dev/null
+++ b/navigation/navigation-fragment/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,131 @@
+// Signature format: 4.0
+package androidx.navigation {
+
+  public final class NavGraphViewModelLazyKt {
+    method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, @IdRes int navGraphId, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+    method @Deprecated @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, @IdRes int navGraphId, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+    method @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, String navGraphRoute, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.viewmodel.CreationExtras>? extrasProducer, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+    method @Deprecated @MainThread public static inline <reified VM extends androidx.lifecycle.ViewModel> kotlin.Lazy<VM> navGraphViewModels(androidx.fragment.app.Fragment, String navGraphRoute, optional kotlin.jvm.functions.Function0<? extends androidx.lifecycle.ViewModelProvider.Factory>? factoryProducer);
+  }
+
+}
+
+package androidx.navigation.fragment {
+
+  public abstract class AbstractListDetailFragment extends androidx.fragment.app.Fragment {
+    ctor public AbstractListDetailFragment();
+    method public final androidx.navigation.fragment.NavHostFragment getDetailPaneNavHostFragment();
+    method public final androidx.slidingpanelayout.widget.SlidingPaneLayout getSlidingPaneLayout();
+    method public androidx.navigation.fragment.NavHostFragment onCreateDetailPaneNavHostFragment();
+    method public abstract android.view.View onCreateListPaneView(android.view.LayoutInflater inflater, android.view.ViewGroup? container, android.os.Bundle? savedInstanceState);
+    method @CallSuper public final android.view.View onCreateView(android.view.LayoutInflater inflater, android.view.ViewGroup? container, android.os.Bundle? savedInstanceState);
+    method public void onListPaneViewCreated(android.view.View view, android.os.Bundle? savedInstanceState);
+    method @CallSuper public final void onViewCreated(android.view.View view, android.os.Bundle? savedInstanceState);
+    property public final androidx.navigation.fragment.NavHostFragment detailPaneNavHostFragment;
+    property public final androidx.slidingpanelayout.widget.SlidingPaneLayout slidingPaneLayout;
+  }
+
+  @androidx.navigation.Navigator.Name("dialog") public final class DialogFragmentNavigator extends androidx.navigation.Navigator<androidx.navigation.fragment.DialogFragmentNavigator.Destination> {
+    ctor public DialogFragmentNavigator(android.content.Context context, androidx.fragment.app.FragmentManager fragmentManager);
+    method public androidx.navigation.fragment.DialogFragmentNavigator.Destination createDestination();
+  }
+
+  @androidx.navigation.NavDestination.ClassType(DialogFragment::class) public static class DialogFragmentNavigator.Destination extends androidx.navigation.NavDestination implements androidx.navigation.FloatingWindow {
+    ctor public DialogFragmentNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.fragment.DialogFragmentNavigator.Destination> fragmentNavigator);
+    ctor public DialogFragmentNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public final String getClassName();
+    method public final androidx.navigation.fragment.DialogFragmentNavigator.Destination setClassName(String className);
+    property public final String className;
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class DialogFragmentNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.fragment.DialogFragmentNavigator.Destination> {
+    ctor @Deprecated public DialogFragmentNavigatorDestinationBuilder(androidx.navigation.fragment.DialogFragmentNavigator navigator, @IdRes int id, kotlin.reflect.KClass<? extends androidx.fragment.app.DialogFragment> fragmentClass);
+    ctor public DialogFragmentNavigatorDestinationBuilder(androidx.navigation.fragment.DialogFragmentNavigator navigator, String route, kotlin.reflect.KClass<? extends androidx.fragment.app.DialogFragment> fragmentClass);
+    ctor public DialogFragmentNavigatorDestinationBuilder(androidx.navigation.fragment.DialogFragmentNavigator navigator, kotlin.reflect.KClass<?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.reflect.KClass<? extends androidx.fragment.app.DialogFragment> fragmentClass);
+    method public androidx.navigation.fragment.DialogFragmentNavigator.Destination build();
+  }
+
+  public final class DialogFragmentNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, @IdRes int id);
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.DialogFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, String route);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment> void dialog(androidx.navigation.NavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.DialogFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment, reified T> void dialog(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified F extends androidx.fragment.app.DialogFragment, reified T> void dialog(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.DialogFragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class FragmentKt {
+    method public static androidx.navigation.NavController findNavController(androidx.fragment.app.Fragment);
+  }
+
+  public final class FragmentNavArgsLazyKt {
+    method @MainThread public static inline <reified Args extends androidx.navigation.NavArgs> androidx.navigation.NavArgsLazy<Args> navArgs(androidx.fragment.app.Fragment);
+  }
+
+  @androidx.navigation.Navigator.Name("fragment") public class FragmentNavigator extends androidx.navigation.Navigator<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor public FragmentNavigator(android.content.Context context, androidx.fragment.app.FragmentManager fragmentManager, int containerId);
+    method public androidx.navigation.fragment.FragmentNavigator.Destination createDestination();
+    method @Deprecated public androidx.fragment.app.Fragment instantiateFragment(android.content.Context context, androidx.fragment.app.FragmentManager fragmentManager, String className, android.os.Bundle? args);
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Fragment::class) public static class FragmentNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor public FragmentNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.fragment.FragmentNavigator.Destination> fragmentNavigator);
+    ctor public FragmentNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public final String getClassName();
+    method public final androidx.navigation.fragment.FragmentNavigator.Destination setClassName(String className);
+    property public final String className;
+  }
+
+  public static final class FragmentNavigator.Extras implements androidx.navigation.Navigator.Extras {
+    method public java.util.Map<android.view.View,java.lang.String> getSharedElements();
+    property public final java.util.Map<android.view.View,java.lang.String> sharedElements;
+  }
+
+  public static final class FragmentNavigator.Extras.Builder {
+    ctor public FragmentNavigator.Extras.Builder();
+    method public androidx.navigation.fragment.FragmentNavigator.Extras.Builder addSharedElement(android.view.View sharedElement, String name);
+    method public androidx.navigation.fragment.FragmentNavigator.Extras.Builder addSharedElements(java.util.Map<android.view.View,java.lang.String> sharedElements);
+    method public androidx.navigation.fragment.FragmentNavigator.Extras build();
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class FragmentNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.fragment.FragmentNavigator.Destination> {
+    ctor @Deprecated public FragmentNavigatorDestinationBuilder(androidx.navigation.fragment.FragmentNavigator navigator, @IdRes int id, kotlin.reflect.KClass<? extends androidx.fragment.app.Fragment> fragmentClass);
+    ctor public FragmentNavigatorDestinationBuilder(androidx.navigation.fragment.FragmentNavigator navigator, String route, kotlin.reflect.KClass<? extends androidx.fragment.app.Fragment> fragmentClass);
+    ctor public FragmentNavigatorDestinationBuilder(androidx.navigation.fragment.FragmentNavigator navigator, kotlin.reflect.KClass<?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.reflect.KClass<? extends androidx.fragment.app.Fragment> fragmentClass);
+    method public androidx.navigation.fragment.FragmentNavigator.Destination build();
+  }
+
+  public final class FragmentNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, @IdRes int id);
+    method @Deprecated public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.FragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, String route);
+    method public static inline <reified F extends androidx.fragment.app.Fragment> void fragment(androidx.navigation.NavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.FragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public static inline <reified F extends androidx.fragment.app.Fragment, reified T> void fragment(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.fragment.FragmentNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class FragmentNavigatorExtrasKt {
+    method public static androidx.navigation.fragment.FragmentNavigator.Extras FragmentNavigatorExtras(kotlin.Pair<? extends android.view.View,java.lang.String>... sharedElements);
+  }
+
+  public class NavHostFragment extends androidx.fragment.app.Fragment implements androidx.navigation.NavHost {
+    ctor public NavHostFragment();
+    method public static final androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId);
+    method public static final androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    method @Deprecated protected androidx.navigation.Navigator<? extends androidx.navigation.fragment.FragmentNavigator.Destination> createFragmentNavigator();
+    method public static final androidx.navigation.NavController findNavController(androidx.fragment.app.Fragment fragment);
+    method public final androidx.navigation.NavController getNavController();
+    method @Deprecated @CallSuper protected void onCreateNavController(androidx.navigation.NavController navController);
+    method @CallSuper protected void onCreateNavHostController(androidx.navigation.NavHostController navHostController);
+    property public final androidx.navigation.NavController navController;
+    field public static final androidx.navigation.fragment.NavHostFragment.Companion Companion;
+  }
+
+  public static final class NavHostFragment.Companion {
+    method public androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId);
+    method public androidx.navigation.fragment.NavHostFragment create(@NavigationRes int graphResId, optional android.os.Bundle? startDestinationArgs);
+    method public androidx.navigation.NavController findNavController(androidx.fragment.app.Fragment fragment);
+  }
+
+}
+
diff --git a/navigation/navigation-runtime-ktx/api/2.8.0-beta06.txt b/navigation/navigation-runtime-ktx/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-runtime-ktx/api/2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt b/navigation/navigation-runtime-ktx/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt
copy to navigation/navigation-runtime-ktx/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-runtime-ktx/api/restricted_2.8.0-beta06.txt b/navigation/navigation-runtime-ktx/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-runtime-ktx/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/navigation/navigation-runtime/api/2.8.0-beta06.txt b/navigation/navigation-runtime/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..b801964
--- /dev/null
+++ b/navigation/navigation-runtime/api/2.8.0-beta06.txt
@@ -0,0 +1,246 @@
+// Signature format: 4.0
+package androidx.navigation {
+
+  public final class ActivityKt {
+    method public static androidx.navigation.NavController findNavController(android.app.Activity, @IdRes int viewId);
+  }
+
+  public final class ActivityNavArgsLazyKt {
+    method @MainThread public static inline <reified Args extends androidx.navigation.NavArgs> androidx.navigation.NavArgsLazy<Args> navArgs(android.app.Activity);
+  }
+
+  @androidx.navigation.Navigator.Name("activity") public class ActivityNavigator extends androidx.navigation.Navigator<androidx.navigation.ActivityNavigator.Destination> {
+    ctor public ActivityNavigator(android.content.Context context);
+    method public static final void applyPopAnimationsToPendingTransition(android.app.Activity activity);
+    method public androidx.navigation.ActivityNavigator.Destination createDestination();
+    method public androidx.navigation.NavDestination? navigate(androidx.navigation.ActivityNavigator.Destination destination, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    field public static final androidx.navigation.ActivityNavigator.Companion Companion;
+  }
+
+  public static final class ActivityNavigator.Companion {
+    method public void applyPopAnimationsToPendingTransition(android.app.Activity activity);
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Activity::class) public static class ActivityNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor public ActivityNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.ActivityNavigator.Destination> activityNavigator);
+    ctor public ActivityNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public final String? getAction();
+    method public final android.content.ComponentName? getComponent();
+    method public final android.net.Uri? getData();
+    method public final String? getDataPattern();
+    method public final android.content.Intent? getIntent();
+    method public final String? getTargetPackage();
+    method public final androidx.navigation.ActivityNavigator.Destination setAction(String? action);
+    method public final androidx.navigation.ActivityNavigator.Destination setComponentName(android.content.ComponentName? name);
+    method public final androidx.navigation.ActivityNavigator.Destination setData(android.net.Uri? data);
+    method public final androidx.navigation.ActivityNavigator.Destination setDataPattern(String? dataPattern);
+    method public final androidx.navigation.ActivityNavigator.Destination setIntent(android.content.Intent? intent);
+    method public final androidx.navigation.ActivityNavigator.Destination setTargetPackage(String? packageName);
+    property public final String? action;
+    property public final android.content.ComponentName? component;
+    property public final android.net.Uri? data;
+    property public final String? dataPattern;
+    property public final android.content.Intent? intent;
+    property public final String? targetPackage;
+  }
+
+  public static final class ActivityNavigator.Extras implements androidx.navigation.Navigator.Extras {
+    method public androidx.core.app.ActivityOptionsCompat? getActivityOptions();
+    method public int getFlags();
+    property public final androidx.core.app.ActivityOptionsCompat? activityOptions;
+    property public final int flags;
+  }
+
+  public static final class ActivityNavigator.Extras.Builder {
+    ctor public ActivityNavigator.Extras.Builder();
+    method public androidx.navigation.ActivityNavigator.Extras.Builder addFlags(int flags);
+    method public androidx.navigation.ActivityNavigator.Extras build();
+    method public androidx.navigation.ActivityNavigator.Extras.Builder setActivityOptions(androidx.core.app.ActivityOptionsCompat activityOptions);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class ActivityNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.ActivityNavigator.Destination> {
+    ctor @Deprecated public ActivityNavigatorDestinationBuilder(androidx.navigation.ActivityNavigator navigator, @IdRes int id);
+    ctor public ActivityNavigatorDestinationBuilder(androidx.navigation.ActivityNavigator navigator, String route);
+    ctor public ActivityNavigatorDestinationBuilder(androidx.navigation.ActivityNavigator navigator, kotlin.reflect.KClass<?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public androidx.navigation.ActivityNavigator.Destination build();
+    method public String? getAction();
+    method public kotlin.reflect.KClass<? extends android.app.Activity>? getActivityClass();
+    method public android.net.Uri? getData();
+    method public String? getDataPattern();
+    method public String? getTargetPackage();
+    method public void setAction(String?);
+    method public void setActivityClass(kotlin.reflect.KClass<? extends android.app.Activity>?);
+    method public void setData(android.net.Uri?);
+    method public void setDataPattern(String?);
+    method public void setTargetPackage(String?);
+    property public final String? action;
+    property public final kotlin.reflect.KClass<? extends android.app.Activity>? activityClass;
+    property public final android.net.Uri? data;
+    property public final String? dataPattern;
+    property public final String? targetPackage;
+  }
+
+  public final class ActivityNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline void activity(androidx.navigation.NavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.ActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline void activity(androidx.navigation.NavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.ActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void activity(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.ActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class ActivityNavigatorExtrasKt {
+    method public static androidx.navigation.ActivityNavigator.Extras ActivityNavigatorExtras(optional androidx.core.app.ActivityOptionsCompat? activityOptions, optional int flags);
+  }
+
+  public class NavController {
+    ctor public NavController(android.content.Context context);
+    method public void addOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener listener);
+    method @MainThread public inline <reified T> boolean clearBackStack();
+    method @MainThread public final boolean clearBackStack(@IdRes int destinationId);
+    method @MainThread public final boolean clearBackStack(String route);
+    method @MainThread public final <T> boolean clearBackStack(T route);
+    method public androidx.navigation.NavDeepLinkBuilder createDeepLink();
+    method @SuppressCompatibility @androidx.navigation.NavDeepLinkSaveStateControl public static final void enableDeepLinkSaveState(boolean saveState);
+    method public inline <reified T> androidx.navigation.NavBackStackEntry getBackStackEntry();
+    method public androidx.navigation.NavBackStackEntry getBackStackEntry(@IdRes int destinationId);
+    method public final androidx.navigation.NavBackStackEntry getBackStackEntry(String route);
+    method public final <T> androidx.navigation.NavBackStackEntry getBackStackEntry(T route);
+    method public androidx.navigation.NavBackStackEntry? getCurrentBackStackEntry();
+    method public final kotlinx.coroutines.flow.Flow<androidx.navigation.NavBackStackEntry> getCurrentBackStackEntryFlow();
+    method public androidx.navigation.NavDestination? getCurrentDestination();
+    method @MainThread public androidx.navigation.NavGraph getGraph();
+    method public androidx.navigation.NavInflater getNavInflater();
+    method public androidx.navigation.NavigatorProvider getNavigatorProvider();
+    method public androidx.navigation.NavBackStackEntry? getPreviousBackStackEntry();
+    method public androidx.lifecycle.ViewModelStoreOwner getViewModelStoreOwner(@IdRes int navGraphId);
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getVisibleEntries();
+    method @MainThread public boolean handleDeepLink(android.content.Intent? intent);
+    method @MainThread public void navigate(android.net.Uri deepLink);
+    method @MainThread public void navigate(android.net.Uri deepLink, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(android.net.Uri deepLink, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public void navigate(androidx.navigation.NavDeepLinkRequest request);
+    method @MainThread public void navigate(androidx.navigation.NavDeepLinkRequest request, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(androidx.navigation.NavDeepLinkRequest request, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public void navigate(androidx.navigation.NavDirections directions);
+    method @MainThread public void navigate(androidx.navigation.NavDirections directions, androidx.navigation.Navigator.Extras navigatorExtras);
+    method @MainThread public void navigate(androidx.navigation.NavDirections directions, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(@IdRes int resId);
+    method @MainThread public void navigate(@IdRes int resId, android.os.Bundle? args);
+    method @MainThread public void navigate(@IdRes int resId, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(@IdRes int resId, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public final void navigate(String route);
+    method @MainThread public final void navigate(String route, optional androidx.navigation.NavOptions? navOptions);
+    method @MainThread public final void navigate(String route, optional androidx.navigation.NavOptions? navOptions, optional androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public final void navigate(String route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> builder);
+    method @MainThread public final <T> void navigate(T route);
+    method @MainThread public final <T> void navigate(T route, optional androidx.navigation.NavOptions? navOptions);
+    method @MainThread public final <T> void navigate(T route, optional androidx.navigation.NavOptions? navOptions, optional androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public final <T> void navigate(T route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> builder);
+    method @MainThread public boolean navigateUp();
+    method @MainThread public boolean popBackStack();
+    method @MainThread public inline <reified T> boolean popBackStack(boolean inclusive, optional boolean saveState);
+    method @MainThread public boolean popBackStack(@IdRes int destinationId, boolean inclusive);
+    method @MainThread public boolean popBackStack(@IdRes int destinationId, boolean inclusive, boolean saveState);
+    method @MainThread public final boolean popBackStack(String route, boolean inclusive);
+    method @MainThread public final boolean popBackStack(String route, boolean inclusive, optional boolean saveState);
+    method @MainThread public final <T> boolean popBackStack(T route, boolean inclusive);
+    method @MainThread public final <T> boolean popBackStack(T route, boolean inclusive, optional boolean saveState);
+    method public void removeOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener listener);
+    method @CallSuper public void restoreState(android.os.Bundle? navState);
+    method @CallSuper public android.os.Bundle? saveState();
+    method @CallSuper @MainThread public void setGraph(androidx.navigation.NavGraph);
+    method @CallSuper @MainThread public void setGraph(androidx.navigation.NavGraph graph, android.os.Bundle? startDestinationArgs);
+    method @CallSuper @MainThread public void setGraph(@NavigationRes int graphResId);
+    method @CallSuper @MainThread public void setGraph(@NavigationRes int graphResId, android.os.Bundle? startDestinationArgs);
+    property public androidx.navigation.NavBackStackEntry? currentBackStackEntry;
+    property public final kotlinx.coroutines.flow.Flow<androidx.navigation.NavBackStackEntry> currentBackStackEntryFlow;
+    property public androidx.navigation.NavDestination? currentDestination;
+    property @MainThread public androidx.navigation.NavGraph graph;
+    property public androidx.navigation.NavInflater navInflater;
+    property public androidx.navigation.NavigatorProvider navigatorProvider;
+    property public androidx.navigation.NavBackStackEntry? previousBackStackEntry;
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> visibleEntries;
+    field public static final androidx.navigation.NavController.Companion Companion;
+    field public static final String KEY_DEEP_LINK_INTENT = "android-support-nav:controller:deepLinkIntent";
+  }
+
+  public static final class NavController.Companion {
+    method @SuppressCompatibility @androidx.navigation.NavDeepLinkSaveStateControl public void enableDeepLinkSaveState(boolean saveState);
+  }
+
+  public static fun interface NavController.OnDestinationChangedListener {
+    method public void onDestinationChanged(androidx.navigation.NavController controller, androidx.navigation.NavDestination destination, android.os.Bundle? arguments);
+  }
+
+  public final class NavControllerKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavDeepLinkBuilder {
+    ctor public NavDeepLinkBuilder(android.content.Context context);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(@IdRes int destId);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(@IdRes int destId, optional android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(String route);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(String route, optional android.os.Bundle? args);
+    method public android.app.PendingIntent createPendingIntent();
+    method public androidx.core.app.TaskStackBuilder createTaskStackBuilder();
+    method public androidx.navigation.NavDeepLinkBuilder setArguments(android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder setComponentName(android.content.ComponentName componentName);
+    method public androidx.navigation.NavDeepLinkBuilder setComponentName(Class<? extends android.app.Activity?> activityClass);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId, optional android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(String destRoute);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(String destRoute, optional android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder setGraph(androidx.navigation.NavGraph navGraph);
+    method public androidx.navigation.NavDeepLinkBuilder setGraph(@NavigationRes int navGraphId);
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(level=kotlin.RequiresOptIn.Level.WARNING) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface NavDeepLinkSaveStateControl {
+  }
+
+  public interface NavHost {
+    method public androidx.navigation.NavController getNavController();
+    property public abstract androidx.navigation.NavController navController;
+  }
+
+  public class NavHostController extends androidx.navigation.NavController {
+    ctor public NavHostController(android.content.Context context);
+    method public final void enableOnBackPressed(boolean enabled);
+    method public final void setLifecycleOwner(androidx.lifecycle.LifecycleOwner owner);
+    method public final void setOnBackPressedDispatcher(androidx.activity.OnBackPressedDispatcher dispatcher);
+    method public final void setViewModelStore(androidx.lifecycle.ViewModelStore viewModelStore);
+  }
+
+  public final class NavHostKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavInflater {
+    ctor public NavInflater(android.content.Context context, androidx.navigation.NavigatorProvider navigatorProvider);
+    method public androidx.navigation.NavGraph inflate(@NavigationRes int graphResId);
+    field public static final androidx.navigation.NavInflater.Companion Companion;
+  }
+
+  public static final class NavInflater.Companion {
+  }
+
+  public final class Navigation {
+    method public static android.view.View.OnClickListener createNavigateOnClickListener(androidx.navigation.NavDirections directions);
+    method public static android.view.View.OnClickListener createNavigateOnClickListener(@IdRes int resId);
+    method public static android.view.View.OnClickListener createNavigateOnClickListener(@IdRes int resId, optional android.os.Bundle? args);
+    method public static androidx.navigation.NavController findNavController(android.app.Activity activity, @IdRes int viewId);
+    method public static androidx.navigation.NavController findNavController(android.view.View view);
+    method public static void setViewNavController(android.view.View view, androidx.navigation.NavController? controller);
+    field public static final androidx.navigation.Navigation INSTANCE;
+  }
+
+  public final class ViewKt {
+    method public static androidx.navigation.NavController findNavController(android.view.View);
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt b/navigation/navigation-runtime/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout-compose/api/res-1.1.0-beta01.txt
copy to navigation/navigation-runtime/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-runtime/api/restricted_2.8.0-beta06.txt b/navigation/navigation-runtime/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..b801964
--- /dev/null
+++ b/navigation/navigation-runtime/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,246 @@
+// Signature format: 4.0
+package androidx.navigation {
+
+  public final class ActivityKt {
+    method public static androidx.navigation.NavController findNavController(android.app.Activity, @IdRes int viewId);
+  }
+
+  public final class ActivityNavArgsLazyKt {
+    method @MainThread public static inline <reified Args extends androidx.navigation.NavArgs> androidx.navigation.NavArgsLazy<Args> navArgs(android.app.Activity);
+  }
+
+  @androidx.navigation.Navigator.Name("activity") public class ActivityNavigator extends androidx.navigation.Navigator<androidx.navigation.ActivityNavigator.Destination> {
+    ctor public ActivityNavigator(android.content.Context context);
+    method public static final void applyPopAnimationsToPendingTransition(android.app.Activity activity);
+    method public androidx.navigation.ActivityNavigator.Destination createDestination();
+    method public androidx.navigation.NavDestination? navigate(androidx.navigation.ActivityNavigator.Destination destination, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    field public static final androidx.navigation.ActivityNavigator.Companion Companion;
+  }
+
+  public static final class ActivityNavigator.Companion {
+    method public void applyPopAnimationsToPendingTransition(android.app.Activity activity);
+  }
+
+  @androidx.navigation.NavDestination.ClassType(Activity::class) public static class ActivityNavigator.Destination extends androidx.navigation.NavDestination {
+    ctor public ActivityNavigator.Destination(androidx.navigation.Navigator<? extends androidx.navigation.ActivityNavigator.Destination> activityNavigator);
+    ctor public ActivityNavigator.Destination(androidx.navigation.NavigatorProvider navigatorProvider);
+    method public final String? getAction();
+    method public final android.content.ComponentName? getComponent();
+    method public final android.net.Uri? getData();
+    method public final String? getDataPattern();
+    method public final android.content.Intent? getIntent();
+    method public final String? getTargetPackage();
+    method public final androidx.navigation.ActivityNavigator.Destination setAction(String? action);
+    method public final androidx.navigation.ActivityNavigator.Destination setComponentName(android.content.ComponentName? name);
+    method public final androidx.navigation.ActivityNavigator.Destination setData(android.net.Uri? data);
+    method public final androidx.navigation.ActivityNavigator.Destination setDataPattern(String? dataPattern);
+    method public final androidx.navigation.ActivityNavigator.Destination setIntent(android.content.Intent? intent);
+    method public final androidx.navigation.ActivityNavigator.Destination setTargetPackage(String? packageName);
+    property public final String? action;
+    property public final android.content.ComponentName? component;
+    property public final android.net.Uri? data;
+    property public final String? dataPattern;
+    property public final android.content.Intent? intent;
+    property public final String? targetPackage;
+  }
+
+  public static final class ActivityNavigator.Extras implements androidx.navigation.Navigator.Extras {
+    method public androidx.core.app.ActivityOptionsCompat? getActivityOptions();
+    method public int getFlags();
+    property public final androidx.core.app.ActivityOptionsCompat? activityOptions;
+    property public final int flags;
+  }
+
+  public static final class ActivityNavigator.Extras.Builder {
+    ctor public ActivityNavigator.Extras.Builder();
+    method public androidx.navigation.ActivityNavigator.Extras.Builder addFlags(int flags);
+    method public androidx.navigation.ActivityNavigator.Extras build();
+    method public androidx.navigation.ActivityNavigator.Extras.Builder setActivityOptions(androidx.core.app.ActivityOptionsCompat activityOptions);
+  }
+
+  @androidx.navigation.NavDestinationDsl public final class ActivityNavigatorDestinationBuilder extends androidx.navigation.NavDestinationBuilder<androidx.navigation.ActivityNavigator.Destination> {
+    ctor @Deprecated public ActivityNavigatorDestinationBuilder(androidx.navigation.ActivityNavigator navigator, @IdRes int id);
+    ctor public ActivityNavigatorDestinationBuilder(androidx.navigation.ActivityNavigator navigator, String route);
+    ctor public ActivityNavigatorDestinationBuilder(androidx.navigation.ActivityNavigator navigator, kotlin.reflect.KClass<?> route, java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+    method public androidx.navigation.ActivityNavigator.Destination build();
+    method public String? getAction();
+    method public kotlin.reflect.KClass<? extends android.app.Activity>? getActivityClass();
+    method public android.net.Uri? getData();
+    method public String? getDataPattern();
+    method public String? getTargetPackage();
+    method public void setAction(String?);
+    method public void setActivityClass(kotlin.reflect.KClass<? extends android.app.Activity>?);
+    method public void setData(android.net.Uri?);
+    method public void setDataPattern(String?);
+    method public void setTargetPackage(String?);
+    property public final String? action;
+    property public final kotlin.reflect.KClass<? extends android.app.Activity>? activityClass;
+    property public final android.net.Uri? data;
+    property public final String? dataPattern;
+    property public final String? targetPackage;
+  }
+
+  public final class ActivityNavigatorDestinationBuilderKt {
+    method @Deprecated public static inline void activity(androidx.navigation.NavGraphBuilder, @IdRes int id, kotlin.jvm.functions.Function1<? super androidx.navigation.ActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline void activity(androidx.navigation.NavGraphBuilder, String route, kotlin.jvm.functions.Function1<? super androidx.navigation.ActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+    method public static inline <reified T> void activity(androidx.navigation.NavGraphBuilder, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.ActivityNavigatorDestinationBuilder,kotlin.Unit> builder);
+  }
+
+  public final class ActivityNavigatorExtrasKt {
+    method public static androidx.navigation.ActivityNavigator.Extras ActivityNavigatorExtras(optional androidx.core.app.ActivityOptionsCompat? activityOptions, optional int flags);
+  }
+
+  public class NavController {
+    ctor public NavController(android.content.Context context);
+    method public void addOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener listener);
+    method @MainThread public inline <reified T> boolean clearBackStack();
+    method @MainThread public final boolean clearBackStack(@IdRes int destinationId);
+    method @MainThread public final boolean clearBackStack(String route);
+    method @MainThread public final <T> boolean clearBackStack(T route);
+    method public androidx.navigation.NavDeepLinkBuilder createDeepLink();
+    method @SuppressCompatibility @androidx.navigation.NavDeepLinkSaveStateControl public static final void enableDeepLinkSaveState(boolean saveState);
+    method public inline <reified T> androidx.navigation.NavBackStackEntry getBackStackEntry();
+    method public androidx.navigation.NavBackStackEntry getBackStackEntry(@IdRes int destinationId);
+    method public final androidx.navigation.NavBackStackEntry getBackStackEntry(String route);
+    method public final <T> androidx.navigation.NavBackStackEntry getBackStackEntry(T route);
+    method public androidx.navigation.NavBackStackEntry? getCurrentBackStackEntry();
+    method public final kotlinx.coroutines.flow.Flow<androidx.navigation.NavBackStackEntry> getCurrentBackStackEntryFlow();
+    method public androidx.navigation.NavDestination? getCurrentDestination();
+    method @MainThread public androidx.navigation.NavGraph getGraph();
+    method public androidx.navigation.NavInflater getNavInflater();
+    method public androidx.navigation.NavigatorProvider getNavigatorProvider();
+    method public androidx.navigation.NavBackStackEntry? getPreviousBackStackEntry();
+    method public androidx.lifecycle.ViewModelStoreOwner getViewModelStoreOwner(@IdRes int navGraphId);
+    method public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getVisibleEntries();
+    method @MainThread public boolean handleDeepLink(android.content.Intent? intent);
+    method @MainThread public void navigate(android.net.Uri deepLink);
+    method @MainThread public void navigate(android.net.Uri deepLink, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(android.net.Uri deepLink, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public void navigate(androidx.navigation.NavDeepLinkRequest request);
+    method @MainThread public void navigate(androidx.navigation.NavDeepLinkRequest request, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(androidx.navigation.NavDeepLinkRequest request, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public void navigate(androidx.navigation.NavDirections directions);
+    method @MainThread public void navigate(androidx.navigation.NavDirections directions, androidx.navigation.Navigator.Extras navigatorExtras);
+    method @MainThread public void navigate(androidx.navigation.NavDirections directions, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(@IdRes int resId);
+    method @MainThread public void navigate(@IdRes int resId, android.os.Bundle? args);
+    method @MainThread public void navigate(@IdRes int resId, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions);
+    method @MainThread public void navigate(@IdRes int resId, android.os.Bundle? args, androidx.navigation.NavOptions? navOptions, androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public final void navigate(String route);
+    method @MainThread public final void navigate(String route, optional androidx.navigation.NavOptions? navOptions);
+    method @MainThread public final void navigate(String route, optional androidx.navigation.NavOptions? navOptions, optional androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public final void navigate(String route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> builder);
+    method @MainThread public final <T> void navigate(T route);
+    method @MainThread public final <T> void navigate(T route, optional androidx.navigation.NavOptions? navOptions);
+    method @MainThread public final <T> void navigate(T route, optional androidx.navigation.NavOptions? navOptions, optional androidx.navigation.Navigator.Extras? navigatorExtras);
+    method @MainThread public final <T> void navigate(T route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavOptionsBuilder,kotlin.Unit> builder);
+    method @MainThread public boolean navigateUp();
+    method @MainThread public boolean popBackStack();
+    method @MainThread public inline <reified T> boolean popBackStack(boolean inclusive, optional boolean saveState);
+    method @MainThread public boolean popBackStack(@IdRes int destinationId, boolean inclusive);
+    method @MainThread public boolean popBackStack(@IdRes int destinationId, boolean inclusive, boolean saveState);
+    method @MainThread public final boolean popBackStack(String route, boolean inclusive);
+    method @MainThread public final boolean popBackStack(String route, boolean inclusive, optional boolean saveState);
+    method @MainThread public final <T> boolean popBackStack(T route, boolean inclusive);
+    method @MainThread public final <T> boolean popBackStack(T route, boolean inclusive, optional boolean saveState);
+    method public void removeOnDestinationChangedListener(androidx.navigation.NavController.OnDestinationChangedListener listener);
+    method @CallSuper public void restoreState(android.os.Bundle? navState);
+    method @CallSuper public android.os.Bundle? saveState();
+    method @CallSuper @MainThread public void setGraph(androidx.navigation.NavGraph);
+    method @CallSuper @MainThread public void setGraph(androidx.navigation.NavGraph graph, android.os.Bundle? startDestinationArgs);
+    method @CallSuper @MainThread public void setGraph(@NavigationRes int graphResId);
+    method @CallSuper @MainThread public void setGraph(@NavigationRes int graphResId, android.os.Bundle? startDestinationArgs);
+    property public androidx.navigation.NavBackStackEntry? currentBackStackEntry;
+    property public final kotlinx.coroutines.flow.Flow<androidx.navigation.NavBackStackEntry> currentBackStackEntryFlow;
+    property public androidx.navigation.NavDestination? currentDestination;
+    property @MainThread public androidx.navigation.NavGraph graph;
+    property public androidx.navigation.NavInflater navInflater;
+    property public androidx.navigation.NavigatorProvider navigatorProvider;
+    property public androidx.navigation.NavBackStackEntry? previousBackStackEntry;
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> visibleEntries;
+    field public static final androidx.navigation.NavController.Companion Companion;
+    field public static final String KEY_DEEP_LINK_INTENT = "android-support-nav:controller:deepLinkIntent";
+  }
+
+  public static final class NavController.Companion {
+    method @SuppressCompatibility @androidx.navigation.NavDeepLinkSaveStateControl public void enableDeepLinkSaveState(boolean saveState);
+  }
+
+  public static fun interface NavController.OnDestinationChangedListener {
+    method public void onDestinationChanged(androidx.navigation.NavController controller, androidx.navigation.NavDestination destination, android.os.Bundle? arguments);
+  }
+
+  public final class NavControllerKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavController, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavDeepLinkBuilder {
+    ctor public NavDeepLinkBuilder(android.content.Context context);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(@IdRes int destId);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(@IdRes int destId, optional android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(String route);
+    method public androidx.navigation.NavDeepLinkBuilder addDestination(String route, optional android.os.Bundle? args);
+    method public android.app.PendingIntent createPendingIntent();
+    method public androidx.core.app.TaskStackBuilder createTaskStackBuilder();
+    method public androidx.navigation.NavDeepLinkBuilder setArguments(android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder setComponentName(android.content.ComponentName componentName);
+    method public androidx.navigation.NavDeepLinkBuilder setComponentName(Class<? extends android.app.Activity?> activityClass);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(@IdRes int destId, optional android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(String destRoute);
+    method public androidx.navigation.NavDeepLinkBuilder setDestination(String destRoute, optional android.os.Bundle? args);
+    method public androidx.navigation.NavDeepLinkBuilder setGraph(androidx.navigation.NavGraph navGraph);
+    method public androidx.navigation.NavDeepLinkBuilder setGraph(@NavigationRes int navGraphId);
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(level=kotlin.RequiresOptIn.Level.WARNING) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface NavDeepLinkSaveStateControl {
+  }
+
+  public interface NavHost {
+    method public androidx.navigation.NavController getNavController();
+    property public abstract androidx.navigation.NavController navController;
+  }
+
+  public class NavHostController extends androidx.navigation.NavController {
+    ctor public NavHostController(android.content.Context context);
+    method public final void enableOnBackPressed(boolean enabled);
+    method public final void setLifecycleOwner(androidx.lifecycle.LifecycleOwner owner);
+    method public final void setOnBackPressedDispatcher(androidx.activity.OnBackPressedDispatcher dispatcher);
+    method public final void setViewModelStore(androidx.lifecycle.ViewModelStore viewModelStore);
+  }
+
+  public final class NavHostKt {
+    method @Deprecated public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, optional @IdRes int id, @IdRes int startDestination, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, Object startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, String startDestination, optional String? route, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+    method public static inline androidx.navigation.NavGraph createGraph(androidx.navigation.NavHost, kotlin.reflect.KClass<? extends java.lang.Object?> startDestination, optional kotlin.reflect.KClass<? extends java.lang.Object?>? route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap, kotlin.jvm.functions.Function1<? super androidx.navigation.NavGraphBuilder,kotlin.Unit> builder);
+  }
+
+  public final class NavInflater {
+    ctor public NavInflater(android.content.Context context, androidx.navigation.NavigatorProvider navigatorProvider);
+    method public androidx.navigation.NavGraph inflate(@NavigationRes int graphResId);
+    field public static final androidx.navigation.NavInflater.Companion Companion;
+  }
+
+  public static final class NavInflater.Companion {
+  }
+
+  public final class Navigation {
+    method public static android.view.View.OnClickListener createNavigateOnClickListener(androidx.navigation.NavDirections directions);
+    method public static android.view.View.OnClickListener createNavigateOnClickListener(@IdRes int resId);
+    method public static android.view.View.OnClickListener createNavigateOnClickListener(@IdRes int resId, optional android.os.Bundle? args);
+    method public static androidx.navigation.NavController findNavController(android.app.Activity activity, @IdRes int viewId);
+    method public static androidx.navigation.NavController findNavController(android.view.View view);
+    method public static void setViewNavController(android.view.View view, androidx.navigation.NavController? controller);
+    field public static final androidx.navigation.Navigation INSTANCE;
+  }
+
+  public final class ViewKt {
+    method public static androidx.navigation.NavController findNavController(android.view.View);
+  }
+
+}
+
diff --git a/navigation/navigation-testing/api/2.8.0-beta06.txt b/navigation/navigation-testing/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..ebd90df
--- /dev/null
+++ b/navigation/navigation-testing/api/2.8.0-beta06.txt
@@ -0,0 +1,27 @@
+// Signature format: 4.0
+package androidx.navigation.testing {
+
+  public final class SavedStateHandleFactoryKt {
+    method public static operator androidx.lifecycle.SavedStateHandle invoke(androidx.lifecycle.SavedStateHandle.Companion, Object route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+  }
+
+  public final class TestNavHostController extends androidx.navigation.NavHostController {
+    ctor public TestNavHostController(android.content.Context context);
+    method public java.util.List<androidx.navigation.NavBackStackEntry> getBackStack();
+    method public void setCurrentDestination(@IdRes int destId);
+    method public void setCurrentDestination(@IdRes int destId, optional android.os.Bundle args);
+    method public void setCurrentDestination(String destRoute);
+    method public void setCurrentDestination(String destRoute, optional android.os.Bundle args);
+    property public final java.util.List<androidx.navigation.NavBackStackEntry> backStack;
+  }
+
+  public final class TestNavigatorState extends androidx.navigation.NavigatorState {
+    ctor public TestNavigatorState();
+    ctor public TestNavigatorState(optional android.content.Context? context);
+    ctor public TestNavigatorState(optional android.content.Context? context, optional kotlinx.coroutines.CoroutineDispatcher coroutineDispatcher);
+    method public androidx.navigation.NavBackStackEntry createBackStackEntry(androidx.navigation.NavDestination destination, android.os.Bundle? arguments);
+    method public androidx.navigation.NavBackStackEntry restoreBackStackEntry(androidx.navigation.NavBackStackEntry previouslySavedEntry);
+  }
+
+}
+
diff --git a/constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt b/navigation/navigation-testing/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt
copy to navigation/navigation-testing/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-testing/api/restricted_2.8.0-beta06.txt b/navigation/navigation-testing/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..ebd90df
--- /dev/null
+++ b/navigation/navigation-testing/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,27 @@
+// Signature format: 4.0
+package androidx.navigation.testing {
+
+  public final class SavedStateHandleFactoryKt {
+    method public static operator androidx.lifecycle.SavedStateHandle invoke(androidx.lifecycle.SavedStateHandle.Companion, Object route, optional java.util.Map<kotlin.reflect.KType,androidx.navigation.NavType<? extends java.lang.Object?>> typeMap);
+  }
+
+  public final class TestNavHostController extends androidx.navigation.NavHostController {
+    ctor public TestNavHostController(android.content.Context context);
+    method public java.util.List<androidx.navigation.NavBackStackEntry> getBackStack();
+    method public void setCurrentDestination(@IdRes int destId);
+    method public void setCurrentDestination(@IdRes int destId, optional android.os.Bundle args);
+    method public void setCurrentDestination(String destRoute);
+    method public void setCurrentDestination(String destRoute, optional android.os.Bundle args);
+    property public final java.util.List<androidx.navigation.NavBackStackEntry> backStack;
+  }
+
+  public final class TestNavigatorState extends androidx.navigation.NavigatorState {
+    ctor public TestNavigatorState();
+    ctor public TestNavigatorState(optional android.content.Context? context);
+    ctor public TestNavigatorState(optional android.content.Context? context, optional kotlinx.coroutines.CoroutineDispatcher coroutineDispatcher);
+    method public androidx.navigation.NavBackStackEntry createBackStackEntry(androidx.navigation.NavDestination destination, android.os.Bundle? arguments);
+    method public androidx.navigation.NavBackStackEntry restoreBackStackEntry(androidx.navigation.NavBackStackEntry previouslySavedEntry);
+  }
+
+}
+
diff --git a/navigation/navigation-ui-ktx/api/2.8.0-beta06.txt b/navigation/navigation-ui-ktx/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-ui-ktx/api/2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt b/navigation/navigation-ui-ktx/api/res-2.8.0-beta06.txt
similarity index 100%
copy from constraintlayout/constraintlayout/api/res-2.2.0-beta01.txt
copy to navigation/navigation-ui-ktx/api/res-2.8.0-beta06.txt
diff --git a/navigation/navigation-ui-ktx/api/restricted_2.8.0-beta06.txt b/navigation/navigation-ui-ktx/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/navigation/navigation-ui-ktx/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/navigation/navigation-ui/api/2.8.0-beta06.txt b/navigation/navigation-ui/api/2.8.0-beta06.txt
new file mode 100644
index 0000000..326d323
--- /dev/null
+++ b/navigation/navigation-ui/api/2.8.0-beta06.txt
@@ -0,0 +1,94 @@
+// Signature format: 4.0
+package androidx.navigation.ui {
+
+  public final class ActivityKt {
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity, androidx.navigation.NavController navController, androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+  }
+
+  public final class AppBarConfiguration {
+    method @Deprecated public androidx.drawerlayout.widget.DrawerLayout? getDrawerLayout();
+    method public androidx.navigation.ui.AppBarConfiguration.OnNavigateUpListener? getFallbackOnNavigateUpListener();
+    method public androidx.customview.widget.Openable? getOpenableLayout();
+    method public java.util.Set<java.lang.Integer> getTopLevelDestinations();
+    method public boolean isTopLevelDestination(androidx.navigation.NavDestination destination);
+    property @Deprecated public final androidx.drawerlayout.widget.DrawerLayout? drawerLayout;
+    property public final androidx.navigation.ui.AppBarConfiguration.OnNavigateUpListener? fallbackOnNavigateUpListener;
+    property public final androidx.customview.widget.Openable? openableLayout;
+    property public final java.util.Set<java.lang.Integer> topLevelDestinations;
+  }
+
+  public static final class AppBarConfiguration.Builder {
+    ctor public AppBarConfiguration.Builder(android.view.Menu topLevelMenu);
+    ctor public AppBarConfiguration.Builder(androidx.navigation.NavGraph navGraph);
+    ctor public AppBarConfiguration.Builder(int... topLevelDestinationIds);
+    ctor public AppBarConfiguration.Builder(java.util.Set<java.lang.Integer> topLevelDestinationIds);
+    method public androidx.navigation.ui.AppBarConfiguration build();
+    method @Deprecated public androidx.navigation.ui.AppBarConfiguration.Builder setDrawerLayout(androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public androidx.navigation.ui.AppBarConfiguration.Builder setFallbackOnNavigateUpListener(androidx.navigation.ui.AppBarConfiguration.OnNavigateUpListener? fallbackOnNavigateUpListener);
+    method public androidx.navigation.ui.AppBarConfiguration.Builder setOpenableLayout(androidx.customview.widget.Openable? openableLayout);
+  }
+
+  public static fun interface AppBarConfiguration.OnNavigateUpListener {
+    method public boolean onNavigateUp();
+  }
+
+  public final class AppBarConfigurationKt {
+    method public static inline androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(android.view.Menu topLevelMenu, optional androidx.customview.widget.Openable? drawerLayout, optional kotlin.jvm.functions.Function0<java.lang.Boolean> fallbackOnNavigateUpListener);
+    method public static inline androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(androidx.navigation.NavGraph navGraph, optional androidx.customview.widget.Openable? drawerLayout, optional kotlin.jvm.functions.Function0<java.lang.Boolean> fallbackOnNavigateUpListener);
+    method public static inline androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(java.util.Set<java.lang.Integer> topLevelDestinationIds, optional androidx.customview.widget.Openable? drawerLayout, optional kotlin.jvm.functions.Function0<java.lang.Boolean> fallbackOnNavigateUpListener);
+  }
+
+  public final class BottomNavigationViewKt {
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationBarView, androidx.navigation.NavController navController);
+  }
+
+  public final class CollapsingToolbarLayoutKt {
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+  }
+
+  public final class MenuItemKt {
+    method public static boolean onNavDestinationSelected(android.view.MenuItem, androidx.navigation.NavController navController);
+  }
+
+  public final class NavControllerKt {
+    method public static boolean navigateUp(androidx.navigation.NavController, androidx.customview.widget.Openable? drawerLayout);
+    method public static boolean navigateUp(androidx.navigation.NavController, androidx.navigation.ui.AppBarConfiguration appBarConfiguration);
+  }
+
+  public final class NavigationUI {
+    method public static boolean navigateUp(androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static boolean navigateUp(androidx.navigation.NavController navController, androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static boolean onNavDestinationSelected(android.view.MenuItem item, androidx.navigation.NavController navController);
+    method @SuppressCompatibility @androidx.navigation.ui.NavigationUiSaveStateControl public static boolean onNavDestinationSelected(android.view.MenuItem item, androidx.navigation.NavController navController, boolean saveState);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity activity, androidx.navigation.NavController navController);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity activity, androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity activity, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout collapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout collapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout collapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationBarView navigationBarView, androidx.navigation.NavController navController);
+    method @SuppressCompatibility @androidx.navigation.ui.NavigationUiSaveStateControl public static void setupWithNavController(com.google.android.material.navigation.NavigationBarView navigationBarView, androidx.navigation.NavController navController, boolean saveState);
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationView navigationView, androidx.navigation.NavController navController);
+    method @SuppressCompatibility @androidx.navigation.ui.NavigationUiSaveStateControl public static void setupWithNavController(com.google.android.material.navigation.NavigationView navigationView, androidx.navigation.NavController navController, boolean saveState);
+    field public static final androidx.navigation.ui.NavigationUI INSTANCE;
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(level=kotlin.RequiresOptIn.Level.WARNING) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface NavigationUiSaveStateControl {
+  }
+
+  public final class NavigationViewKt {
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationView, androidx.navigation.NavController navController);
+  }
+
+  public final class ToolbarKt {
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar, androidx.navigation.NavController navController, androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+  }
+
+}
+
diff --git a/navigation/navigation-ui/api/res-2.8.0-beta06.txt b/navigation/navigation-ui/api/res-2.8.0-beta06.txt
new file mode 100644
index 0000000..e65fdbe
--- /dev/null
+++ b/navigation/navigation-ui/api/res-2.8.0-beta06.txt
@@ -0,0 +1,8 @@
+anim nav_default_enter_anim
+anim nav_default_exit_anim
+anim nav_default_pop_enter_anim
+anim nav_default_pop_exit_anim
+animator nav_default_enter_anim
+animator nav_default_exit_anim
+animator nav_default_pop_enter_anim
+animator nav_default_pop_exit_anim
diff --git a/navigation/navigation-ui/api/restricted_2.8.0-beta06.txt b/navigation/navigation-ui/api/restricted_2.8.0-beta06.txt
new file mode 100644
index 0000000..326d323
--- /dev/null
+++ b/navigation/navigation-ui/api/restricted_2.8.0-beta06.txt
@@ -0,0 +1,94 @@
+// Signature format: 4.0
+package androidx.navigation.ui {
+
+  public final class ActivityKt {
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity, androidx.navigation.NavController navController, androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+  }
+
+  public final class AppBarConfiguration {
+    method @Deprecated public androidx.drawerlayout.widget.DrawerLayout? getDrawerLayout();
+    method public androidx.navigation.ui.AppBarConfiguration.OnNavigateUpListener? getFallbackOnNavigateUpListener();
+    method public androidx.customview.widget.Openable? getOpenableLayout();
+    method public java.util.Set<java.lang.Integer> getTopLevelDestinations();
+    method public boolean isTopLevelDestination(androidx.navigation.NavDestination destination);
+    property @Deprecated public final androidx.drawerlayout.widget.DrawerLayout? drawerLayout;
+    property public final androidx.navigation.ui.AppBarConfiguration.OnNavigateUpListener? fallbackOnNavigateUpListener;
+    property public final androidx.customview.widget.Openable? openableLayout;
+    property public final java.util.Set<java.lang.Integer> topLevelDestinations;
+  }
+
+  public static final class AppBarConfiguration.Builder {
+    ctor public AppBarConfiguration.Builder(android.view.Menu topLevelMenu);
+    ctor public AppBarConfiguration.Builder(androidx.navigation.NavGraph navGraph);
+    ctor public AppBarConfiguration.Builder(int... topLevelDestinationIds);
+    ctor public AppBarConfiguration.Builder(java.util.Set<java.lang.Integer> topLevelDestinationIds);
+    method public androidx.navigation.ui.AppBarConfiguration build();
+    method @Deprecated public androidx.navigation.ui.AppBarConfiguration.Builder setDrawerLayout(androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public androidx.navigation.ui.AppBarConfiguration.Builder setFallbackOnNavigateUpListener(androidx.navigation.ui.AppBarConfiguration.OnNavigateUpListener? fallbackOnNavigateUpListener);
+    method public androidx.navigation.ui.AppBarConfiguration.Builder setOpenableLayout(androidx.customview.widget.Openable? openableLayout);
+  }
+
+  public static fun interface AppBarConfiguration.OnNavigateUpListener {
+    method public boolean onNavigateUp();
+  }
+
+  public final class AppBarConfigurationKt {
+    method public static inline androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(android.view.Menu topLevelMenu, optional androidx.customview.widget.Openable? drawerLayout, optional kotlin.jvm.functions.Function0<java.lang.Boolean> fallbackOnNavigateUpListener);
+    method public static inline androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(androidx.navigation.NavGraph navGraph, optional androidx.customview.widget.Openable? drawerLayout, optional kotlin.jvm.functions.Function0<java.lang.Boolean> fallbackOnNavigateUpListener);
+    method public static inline androidx.navigation.ui.AppBarConfiguration AppBarConfiguration(java.util.Set<java.lang.Integer> topLevelDestinationIds, optional androidx.customview.widget.Openable? drawerLayout, optional kotlin.jvm.functions.Function0<java.lang.Boolean> fallbackOnNavigateUpListener);
+  }
+
+  public final class BottomNavigationViewKt {
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationBarView, androidx.navigation.NavController navController);
+  }
+
+  public final class CollapsingToolbarLayoutKt {
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+  }
+
+  public final class MenuItemKt {
+    method public static boolean onNavDestinationSelected(android.view.MenuItem, androidx.navigation.NavController navController);
+  }
+
+  public final class NavControllerKt {
+    method public static boolean navigateUp(androidx.navigation.NavController, androidx.customview.widget.Openable? drawerLayout);
+    method public static boolean navigateUp(androidx.navigation.NavController, androidx.navigation.ui.AppBarConfiguration appBarConfiguration);
+  }
+
+  public final class NavigationUI {
+    method public static boolean navigateUp(androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static boolean navigateUp(androidx.navigation.NavController navController, androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static boolean onNavDestinationSelected(android.view.MenuItem item, androidx.navigation.NavController navController);
+    method @SuppressCompatibility @androidx.navigation.ui.NavigationUiSaveStateControl public static boolean onNavDestinationSelected(android.view.MenuItem item, androidx.navigation.NavController navController, boolean saveState);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity activity, androidx.navigation.NavController navController);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity activity, androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static void setupActionBarWithNavController(androidx.appcompat.app.AppCompatActivity activity, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout collapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout collapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, androidx.customview.widget.Openable? openableLayout);
+    method public static void setupWithNavController(com.google.android.material.appbar.CollapsingToolbarLayout collapsingToolbarLayout, androidx.appcompat.widget.Toolbar toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationBarView navigationBarView, androidx.navigation.NavController navController);
+    method @SuppressCompatibility @androidx.navigation.ui.NavigationUiSaveStateControl public static void setupWithNavController(com.google.android.material.navigation.NavigationBarView navigationBarView, androidx.navigation.NavController navController, boolean saveState);
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationView navigationView, androidx.navigation.NavController navController);
+    method @SuppressCompatibility @androidx.navigation.ui.NavigationUiSaveStateControl public static void setupWithNavController(com.google.android.material.navigation.NavigationView navigationView, androidx.navigation.NavController navController, boolean saveState);
+    field public static final androidx.navigation.ui.NavigationUI INSTANCE;
+  }
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(level=kotlin.RequiresOptIn.Level.WARNING) @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets=kotlin.annotation.AnnotationTarget.FUNCTION) public @interface NavigationUiSaveStateControl {
+  }
+
+  public final class NavigationViewKt {
+    method public static void setupWithNavController(com.google.android.material.navigation.NavigationView, androidx.navigation.NavController navController);
+  }
+
+  public final class ToolbarKt {
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar, androidx.navigation.NavController navController, androidx.drawerlayout.widget.DrawerLayout? drawerLayout);
+    method public static void setupWithNavController(androidx.appcompat.widget.Toolbar, androidx.navigation.NavController navController, optional androidx.navigation.ui.AppBarConfiguration configuration);
+  }
+
+}
+
diff --git a/privacysandbox/ads/OWNERS b/privacysandbox/ads/OWNERS
index dfb8b61..49fbef6 100644
--- a/privacysandbox/ads/OWNERS
+++ b/privacysandbox/ads/OWNERS
@@ -4,10 +4,15 @@
 [email protected]
 # adservices.customaudience, adservices.adselection OWNERS
 [email protected] # FLEDGE Primary PoC
[email protected]
-# adservices.topics, .adid, .appsetid, .common OWNERS
[email protected] # Primary PoC for Topics, Common
[email protected] # Creator
[email protected]
+# adservices.topics
[email protected] # Primary PoC for Topics
[email protected]
+# adservices.signals
[email protected] # Primary PoC for Signals
[email protected]
+# adservices.adid, .appsetid, .common OWNERS
[email protected] # # Primary PoC for Common
[email protected]
 [email protected] # DevRel Jetpack Lead
 [email protected] # DevRel TPM Lead
[email protected] # Common PoC
diff --git a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/MultiInstanceInvalidationTest.kt b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/MultiInstanceInvalidationTest.kt
index a5d8e0f..e837d59 100644
--- a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/MultiInstanceInvalidationTest.kt
+++ b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/MultiInstanceInvalidationTest.kt
@@ -60,13 +60,13 @@
 
         // Remember the current auto close callback, it should be the one installed by the
         // invalidation tracker
-        val trackerCallback = autoCloseHelper.autoCloser.onAutoCloseCallback!!
+        val trackerCallback = autoCloseHelper.autoCloser.autoCloseCallbackForTest!!
 
         // Set a new callback, intercepting when DB is auto-closed
         val latch = CountDownLatch(1)
         autoCloseHelper.autoCloser.setAutoCloseCallback {
             // Run the remember auto close callback
-            trackerCallback.run()
+            trackerCallback.invoke()
             // At this point in time InvalidationTracker's callback has run and unbind should have
             // been invoked.
             latch.countDown()
diff --git a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoCloserTest.kt b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoCloserTest.kt
index cbe11d7..85ecd88 100644
--- a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoCloserTest.kt
+++ b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoCloserTest.kt
@@ -16,36 +16,37 @@
 
 package androidx.room.support
 
-import android.annotation.SuppressLint
-import androidx.arch.core.executor.ArchTaskExecutor
-import androidx.arch.core.executor.testing.CountingTaskExecutorRule
 import androidx.kruth.assertThat
+import androidx.kruth.assertWithMessage
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
 import androidx.test.core.app.ApplicationProvider
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.FlakyTest
 import androidx.test.filters.MediumTest
 import androidx.testutils.assertThrows
 import java.io.IOException
 import java.util.concurrent.TimeUnit
+import kotlinx.coroutines.test.TestCoroutineScheduler
+import kotlinx.coroutines.test.TestScope
 import org.junit.After
 import org.junit.Before
-import org.junit.Ignore
-import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
-public class AutoCloserTest {
+class AutoCloserTest {
 
-    @get:Rule
-    public val countingTaskExecutorRule: CountingTaskExecutorRule = CountingTaskExecutorRule()
+    companion object {
+        private const val DB_NAME = "test.db"
+        private const val TIMEOUT_AMOUNT = 1L
+    }
+
+    private val testDispatcher = TestCoroutineScheduler()
 
     private lateinit var autoCloser: AutoCloser
-
+    private lateinit var testWatch: AutoCloserTestWatch
     private lateinit var callback: Callback
 
     private class Callback(var throwOnOpen: Boolean = false) : SupportSQLiteOpenHelper.Callback(1) {
@@ -61,7 +62,8 @@
     }
 
     @Before
-    public fun setUp() {
+    fun setUp() {
+        testWatch = AutoCloserTestWatch(TIMEOUT_AMOUNT, testDispatcher)
         callback = Callback()
 
         val delegateOpenHelper =
@@ -71,28 +73,27 @@
                             ApplicationProvider.getApplicationContext()
                         )
                         .callback(callback)
-                        .name("name")
+                        .name(DB_NAME)
                         .build()
                 )
 
-        val autoCloseExecutor = ArchTaskExecutor.getIOThreadExecutor()
-
         autoCloser =
-            AutoCloser(1, TimeUnit.MILLISECONDS, autoCloseExecutor).also {
-                it.init(delegateOpenHelper)
-                it.setAutoCloseCallback {}
+            AutoCloser(TIMEOUT_AMOUNT, TimeUnit.MILLISECONDS, testWatch).apply {
+                initOpenHelper(delegateOpenHelper)
+                initCoroutineScope(TestScope(testDispatcher))
+                setAutoCloseCallback {}
             }
     }
 
     @After
-    public fun cleanUp() {
-        assertThat(countingTaskExecutorRule.isIdle).isTrue()
+    fun cleanUp() {
+        testWatch.step()
+        // At the end of all tests we always expect to auto-close the database
+        assertWithMessage("Database was not closed").that(autoCloser.delegateDatabase).isNull()
     }
 
-    @SuppressLint("BanThreadSleep")
-    @Ignore("b/283959848")
     @Test
-    public fun refCountsCounted() {
+    fun refCountsCounted() {
         autoCloser.incrementCountAndEnsureDbIsOpen()
         assertThat(autoCloser.refCountForTest).isEqualTo(1)
 
@@ -109,51 +110,28 @@
 
         autoCloser.decrementCountAndScheduleClose()
         assertThat(autoCloser.refCountForTest).isEqualTo(0)
-
-        // TODO(rohitsat): remove these sleeps and add a hook in AutoCloser to confirm that the
-        // scheduled tasks are done.
-        Thread.sleep(5)
-        countingTaskExecutorRule.drainTasks(10, TimeUnit.MILLISECONDS)
     }
 
-    @SuppressLint("BanThreadSleep")
-    @Ignore // b/271325600
     @Test
-    public fun executeRefCountingFunctionPropagatesFailure() {
-        assertThrows<IOException> {
-            autoCloser.executeRefCountingFunction<Nothing> { throw IOException() }
-        }
+    fun executeRefCountingFunctionPropagatesFailure() {
+        assertThrows<IOException> { autoCloser.executeRefCountingFunction { throw IOException() } }
 
         assertThat(autoCloser.refCountForTest).isEqualTo(0)
-
-        // TODO(rohitsat): remove these sleeps and add a hook in AutoCloser to confirm that the
-        // scheduled tasks are done.
-        Thread.sleep(5)
-        countingTaskExecutorRule.drainTasks(10, TimeUnit.MILLISECONDS)
     }
 
-    @SuppressLint("BanThreadSleep")
     @Test
-    @FlakyTest(bugId = 182343970)
-    public fun dbNotClosedWithRefCountIncremented() {
+    fun dbNotClosedWithRefCountIncremented() {
         autoCloser.incrementCountAndEnsureDbIsOpen()
 
-        Thread.sleep(10)
+        testWatch.step()
 
         assertThat(autoCloser.delegateDatabase!!.isOpen).isTrue()
 
         autoCloser.decrementCountAndScheduleClose()
-
-        // TODO(rohitsat): remove these sleeps and add a hook in AutoCloser to confirm that the
-        // scheduled tasks are done.
-        Thread.sleep(10)
-        assertThat(autoCloser.delegateDatabase).isNull()
     }
 
-    @SuppressLint("BanThreadSleep")
-    @FlakyTest(bugId = 189775887)
     @Test
-    public fun getDelegatedDatabaseReturnsUnwrappedDatabase() {
+    fun getDelegatedDatabaseReturnsUnwrappedDatabase() {
         assertThat(autoCloser.delegateDatabase).isNull()
 
         val db = autoCloser.incrementCountAndEnsureDbIsOpen()
@@ -170,16 +148,10 @@
         autoCloser.executeRefCountingFunction {
             assertThat(autoCloser.refCountForTest).isEqualTo(1)
         }
-
-        // TODO(rohitsat): remove these sleeps and add a hook in AutoCloser to confirm that the
-        // scheduled tasks are done.
-        Thread.sleep(5)
-        countingTaskExecutorRule.drainTasks(10, TimeUnit.MILLISECONDS)
     }
 
-    @SuppressLint("BanThreadSleep")
     @Test
-    public fun refCountStaysIncrementedWhenErrorIsEncountered() {
+    fun refCountStaysIncrementedWhenErrorIsEncountered() {
         callback.throwOnOpen = true
         assertThrows<IOException> { autoCloser.incrementCountAndEnsureDbIsOpen() }
 
@@ -187,15 +159,10 @@
 
         autoCloser.decrementCountAndScheduleClose()
         callback.throwOnOpen = false
-
-        // TODO(rohitsat): remove these sleeps and add a hook in AutoCloser to confirm that the
-        // scheduled tasks are done.
-        Thread.sleep(5)
-        countingTaskExecutorRule.drainTasks(10, TimeUnit.MILLISECONDS)
     }
 
     @Test
-    public fun testDbCanBeManuallyClosed() {
+    fun testDbCanBeManuallyClosed() {
         val db = autoCloser.incrementCountAndEnsureDbIsOpen()
 
         assertThat(db.isOpen).isTrue()
diff --git a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoCloserTestWatch.kt b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoCloserTestWatch.kt
new file mode 100644
index 0000000..c245c83
--- /dev/null
+++ b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoCloserTestWatch.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.support
+
+import kotlinx.coroutines.test.TestCoroutineScheduler
+
+internal class AutoCloserTestWatch(
+    private val autoCloseTimeout: Long,
+    private val testDispatcher: TestCoroutineScheduler
+) : AutoCloser.Watch {
+
+    private var currentMillis: Long = 0
+
+    override fun getMillis(): Long {
+        return currentMillis
+    }
+
+    /**
+     * Advances the internal time by [autoCloseTimeout] amount and executes pending tasks in the
+     * [testDispatcher].
+     */
+    fun step() {
+        currentMillis += autoCloseTimeout
+        testDispatcher.advanceUntilIdle()
+    }
+}
diff --git a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactoryTest.kt b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactoryTest.kt
index 6eeb4d3..05b661f 100644
--- a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactoryTest.kt
+++ b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactoryTest.kt
@@ -18,46 +18,60 @@
 
 import android.annotation.SuppressLint
 import android.content.Context
-import android.os.Build
-import androidx.annotation.RequiresApi
+import androidx.kruth.assertWithMessage
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
 import androidx.test.core.app.ApplicationProvider
-import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.atomic.AtomicInteger
+import kotlinx.coroutines.test.TestCoroutineScheduler
+import kotlinx.coroutines.test.TestScope
+import org.junit.After
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
 
-public class AutoClosingRoomOpenHelperFactoryTest {
-    private val DB_NAME = "name"
+class AutoClosingRoomOpenHelperFactoryTest {
+
+    companion object {
+        private const val DB_NAME = "test.db"
+        private const val TIMEOUT_AMOUNT = 10L
+    }
+
+    private val testDispatcher = TestCoroutineScheduler()
+
+    private lateinit var autoCloser: AutoCloser
+    private lateinit var testWatch: AutoCloserTestWatch
+    private lateinit var autoClosingRoomOpenHelperFactory: AutoClosingRoomOpenHelperFactory
 
     @Before
-    public fun setUp() {
+    fun setUp() {
         ApplicationProvider.getApplicationContext<Context>().deleteDatabase(DB_NAME)
+
+        testWatch = AutoCloserTestWatch(TIMEOUT_AMOUNT, testDispatcher)
+        autoCloser =
+            AutoCloser(TIMEOUT_AMOUNT, TimeUnit.MILLISECONDS, testWatch).apply {
+                initCoroutineScope(TestScope(testDispatcher))
+                setAutoCloseCallback {}
+            }
+        autoClosingRoomOpenHelperFactory =
+            AutoClosingRoomOpenHelperFactory(
+                delegate = FrameworkSQLiteOpenHelperFactory(),
+                autoCloser = autoCloser
+            )
     }
 
-    private fun getAutoClosingRoomOpenHelperFactory(
-        timeoutMillis: Long = 10
-    ): AutoClosingRoomOpenHelperFactory {
-        val delegateOpenHelperFactory = FrameworkSQLiteOpenHelperFactory()
-
-        return AutoClosingRoomOpenHelperFactory(
-            delegateOpenHelperFactory,
-            AutoCloser(timeoutMillis, TimeUnit.MILLISECONDS, Executors.newSingleThreadExecutor())
-                .also { it.onAutoCloseCallback = Runnable {} }
-        )
+    @After
+    fun cleanUp() {
+        testWatch.step()
+        // At the end of all tests we always expect to auto-close the database
+        assertWithMessage("Database was not closed").that(autoCloser.delegateDatabase).isNull()
     }
 
-    @SuppressLint("BanThreadSleep")
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
-    public fun testCallbacksCalled() {
-        val autoClosingRoomOpenHelperFactory = getAutoClosingRoomOpenHelperFactory()
-
+    fun testCallbacksCalled() {
         val callbackCount = AtomicInteger()
 
         val countingCallback =
@@ -96,7 +110,7 @@
         // onConfigure + onCreate + onOpen
         assertEquals(3, callbackCount.get())
 
-        Thread.sleep(100)
+        testWatch.step()
 
         autoClosingRoomOpenHelper.writableDatabase
 
@@ -105,28 +119,25 @@
         assertEquals(5, callbackCount.get())
     }
 
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
-    public fun testDatabaseIsOpenForSlowCallbacks() {
-        val autoClosingRoomOpenHelperFactory = getAutoClosingRoomOpenHelperFactory()
-
+    fun testDatabaseIsOpenForSlowCallbacks() {
         val refCountCheckingCallback =
             object : SupportSQLiteOpenHelper.Callback(1) {
                 @SuppressLint("BanThreadSleep")
                 override fun onCreate(db: SupportSQLiteDatabase) {
-                    Thread.sleep(100)
+                    testWatch.step()
                     db.execSQL("create table user (idk int)")
                 }
 
                 @SuppressLint("BanThreadSleep")
                 override fun onConfigure(db: SupportSQLiteDatabase) {
-                    Thread.sleep(100)
+                    testWatch.step()
                     db.setMaximumSize(100000)
                 }
 
                 @SuppressLint("BanThreadSleep")
                 override fun onOpen(db: SupportSQLiteDatabase) {
-                    Thread.sleep(100)
+                    testWatch.step()
                     db.execSQL("select * from user")
                 }
 
diff --git a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperTest.kt b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperTest.kt
index bd1478e..f92b715 100644
--- a/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperTest.kt
+++ b/room/room-runtime/src/androidInstrumentedTest/kotlin/androidx/room/support/AutoClosingRoomOpenHelperTest.kt
@@ -16,28 +16,38 @@
 
 package androidx.room.support
 
-import android.annotation.SuppressLint
 import android.content.Context
-import android.database.Cursor
 import android.database.sqlite.SQLiteException
-import android.os.Build
-import androidx.annotation.RequiresApi
 import androidx.kruth.assertThat
+import androidx.kruth.assertWithMessage
+import androidx.room.util.useCursor
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
 import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
 import androidx.test.core.app.ApplicationProvider
-import androidx.test.filters.FlakyTest
 import androidx.testutils.assertThrows
 import java.io.IOException
-import java.util.concurrent.Executors
 import java.util.concurrent.TimeUnit
+import kotlinx.coroutines.test.TestCoroutineScheduler
+import kotlinx.coroutines.test.TestScope
+import org.junit.After
 import org.junit.Before
-import org.junit.Ignore
 import org.junit.Test
 
 class AutoClosingRoomOpenHelperTest {
 
+    companion object {
+        private const val DB_NAME = "test.db"
+        private const val TIMEOUT_AMOUNT = 10L
+    }
+
+    private val testDispatcher = TestCoroutineScheduler()
+
+    private lateinit var autoCloser: AutoCloser
+    private lateinit var testWatch: AutoCloserTestWatch
+    private lateinit var callback: Callback
+    private lateinit var autoClosingRoomOpenHelper: AutoClosingRoomOpenHelper
+
     private open class Callback(var throwOnOpen: Boolean = false) :
         SupportSQLiteOpenHelper.Callback(1) {
         override fun onCreate(db: SupportSQLiteDatabase) {}
@@ -53,14 +63,10 @@
 
     @Before
     fun setUp() {
-        ApplicationProvider.getApplicationContext<Context>().deleteDatabase("name")
-    }
+        ApplicationProvider.getApplicationContext<Context>().deleteDatabase(DB_NAME)
 
-    private fun getAutoClosingRoomOpenHelper(
-        timeoutMillis: Long = 10,
-        callback: SupportSQLiteOpenHelper.Callback = Callback()
-    ): AutoClosingRoomOpenHelper {
-
+        testWatch = AutoCloserTestWatch(TIMEOUT_AMOUNT, testDispatcher)
+        callback = Callback()
         val delegateOpenHelper =
             FrameworkSQLiteOpenHelperFactory()
                 .create(
@@ -68,26 +74,28 @@
                             ApplicationProvider.getApplicationContext()
                         )
                         .callback(callback)
-                        .name("name")
+                        .name(DB_NAME)
                         .build()
                 )
-
-        val autoCloseExecutor = Executors.newSingleThreadExecutor()
-
-        return AutoClosingRoomOpenHelper(
-            delegateOpenHelper,
-            AutoCloser(timeoutMillis, TimeUnit.MILLISECONDS, autoCloseExecutor).apply {
-                init(delegateOpenHelper)
+        autoCloser =
+            AutoCloser(TIMEOUT_AMOUNT, TimeUnit.MILLISECONDS, testWatch).apply {
+                initOpenHelper(delegateOpenHelper)
+                initCoroutineScope(TestScope(testDispatcher))
                 setAutoCloseCallback {}
             }
-        )
+        autoClosingRoomOpenHelper =
+            AutoClosingRoomOpenHelper(delegate = delegateOpenHelper, autoCloser = autoCloser)
     }
 
-    @RequiresApi(Build.VERSION_CODES.N)
+    @After
+    fun cleanUp() {
+        testWatch.step()
+        // At the end of all tests we always expect to auto-close the database
+        assertWithMessage("Database was not closed").that(autoCloser.delegateDatabase).isNull()
+    }
+
     @Test
     fun testQueryFailureDecrementsRefCount() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
-
         assertThrows<SQLiteException> {
             autoClosingRoomOpenHelper.writableDatabase.query("select * from nonexistanttable")
         }
@@ -95,10 +103,8 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     fun testCursorKeepsDbAlive() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
         autoClosingRoomOpenHelper.writableDatabase.execSQL("create table user (idk int)")
 
         val cursor = autoClosingRoomOpenHelper.writableDatabase.query("select * from user")
@@ -107,35 +113,26 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     fun testTransactionKeepsDbAlive() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
         autoClosingRoomOpenHelper.writableDatabase.beginTransaction()
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(1)
         autoClosingRoomOpenHelper.writableDatabase.endTransaction()
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
-    @SuppressLint("BanThreadSleep")
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     fun enableWriteAheadLogging_onOpenHelper() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
-
         autoClosingRoomOpenHelper.setWriteAheadLoggingEnabled(true)
         assertThat(autoClosingRoomOpenHelper.writableDatabase.isWriteAheadLoggingEnabled).isTrue()
 
-        Thread.sleep(100) // Let the db auto close...
+        testWatch.step()
 
         assertThat(autoClosingRoomOpenHelper.writableDatabase.isWriteAheadLoggingEnabled).isTrue()
     }
 
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     fun testEnableWriteAheadLogging_onSupportSqliteDatabase_throwsUnsupportedOperation() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
-
         assertThrows<UnsupportedOperationException> {
             autoClosingRoomOpenHelper.writableDatabase.enableWriteAheadLogging()
         }
@@ -145,67 +142,27 @@
         }
     }
 
-    @SuppressLint("BanThreadSleep")
-    @RequiresApi(Build.VERSION_CODES.N)
-    @FlakyTest(bugId = 190607416)
     @Test
-    fun testOnOpenCalledOnEachOpen() {
-        val countingCallback =
-            object : Callback() {
-                var onCreateCalls = 0
-                var onOpenCalls = 0
-
-                override fun onCreate(db: SupportSQLiteDatabase) {
-                    onCreateCalls++
-                }
-
-                override fun onOpen(db: SupportSQLiteDatabase) {
-                    super.onOpen(db)
-                    onOpenCalls++
-                }
-            }
-
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper(callback = countingCallback)
-
-        autoClosingRoomOpenHelper.writableDatabase
-        assertThat(countingCallback.onOpenCalls).isEqualTo(1)
-        assertThat(countingCallback.onCreateCalls).isEqualTo(1)
-
-        Thread.sleep(20) // Database should auto-close here
-        autoClosingRoomOpenHelper.writableDatabase
-        assertThat(countingCallback.onOpenCalls).isEqualTo(2)
-        assertThat(countingCallback.onCreateCalls).isEqualTo(1)
-    }
-
-    @SuppressLint("BanThreadSleep")
-    @Ignore // b/266993269
-    @RequiresApi(Build.VERSION_CODES.N)
-    @Test
-    fun testStatementReturnedByCompileStatement_doesntKeepDatabaseOpen() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
-
+    fun testStatementReturnedByCompileStatement_doesNotKeepDatabaseOpen() {
         val db = autoClosingRoomOpenHelper.writableDatabase
         db.execSQL("create table user (idk int)")
 
         db.compileStatement("insert into users (idk) values (1)")
 
-        Thread.sleep(20)
+        testWatch.step()
+
         assertThat(db.isOpen).isFalse() // db should close
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
-    @SuppressLint("BanThreadSleep")
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     fun testStatementReturnedByCompileStatement_reOpensDatabase() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
-
         val db = autoClosingRoomOpenHelper.writableDatabase
         db.execSQL("create table user (idk int)")
 
         val statement = db.compileStatement("insert into user (idk) values (1)")
 
-        Thread.sleep(20)
+        testWatch.step()
 
         statement.executeInsert() // This should succeed
 
@@ -214,10 +171,8 @@
         assertThat(autoClosingRoomOpenHelper.autoCloser.refCountForTest).isEqualTo(0)
     }
 
-    @RequiresApi(Build.VERSION_CODES.N)
     @Test
     fun testStatementReturnedByCompileStatement_worksWithBinds() {
-        val autoClosingRoomOpenHelper = getAutoClosingRoomOpenHelper()
         val db = autoClosingRoomOpenHelper.writableDatabase
 
         db.execSQL("create table users (i int, d double, b blob, n int, s string)")
@@ -265,27 +220,19 @@
                             ApplicationProvider.getApplicationContext()
                         )
                         .callback(Callback())
-                        .name("name")
+                        .name(DB_NAME)
                         .build()
                 )
 
-        val autoCloseExecutor = Executors.newSingleThreadExecutor()
-
         val autoClosing =
             AutoClosingRoomOpenHelper(
                 delegateOpenHelper,
-                AutoCloser(0, TimeUnit.MILLISECONDS, autoCloseExecutor)
+                AutoCloser(0, TimeUnit.MILLISECONDS).apply {
+                    initCoroutineScope(TestScope(testDispatcher))
+                    setAutoCloseCallback {}
+                }
             )
 
         assertThat(autoClosing.delegate).isSameInstanceAs(delegateOpenHelper)
     }
-
-    // Older API versions didn't have Cursor implement Closeable
-    private inline fun Cursor.useCursor(block: (Cursor) -> Unit) {
-        try {
-            block(this)
-        } finally {
-            this.close()
-        }
-    }
 }
diff --git a/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomDatabase.android.kt b/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomDatabase.android.kt
index 6d2d169..eec93dd 100644
--- a/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomDatabase.android.kt
+++ b/room/room-runtime/src/androidMain/kotlin/androidx/room/RoomDatabase.android.kt
@@ -228,23 +228,6 @@
         validateAutoMigrations(configuration)
         validateTypeConverters(configuration)
 
-        // Configure SQLiteCopyOpenHelper if it is available
-        unwrapOpenHelper(
-                clazz = PrePackagedCopyOpenHelper::class.java,
-                openHelper = connectionManager.supportOpenHelper
-            )
-            ?.setDatabaseConfiguration(configuration)
-
-        // Configure AutoClosingRoomOpenHelper if it is available
-        unwrapOpenHelper(
-                clazz = AutoClosingRoomOpenHelper::class.java,
-                openHelper = connectionManager.supportOpenHelper
-            )
-            ?.let {
-                autoCloser = it.autoCloser
-                invalidationTracker.setAutoCloser(it.autoCloser)
-            }
-
         if (configuration.queryCoroutineContext != null) {
             // For backwards compatibility with internals not converted to Coroutines, use the
             // provided dispatcher as executor.
@@ -283,6 +266,24 @@
 
         allowMainThreadQueries = configuration.allowMainThreadQueries
 
+        // Configure SQLiteCopyOpenHelper if it is available
+        unwrapOpenHelper(
+                clazz = PrePackagedCopyOpenHelper::class.java,
+                openHelper = connectionManager.supportOpenHelper
+            )
+            ?.setDatabaseConfiguration(configuration)
+
+        // Configure AutoClosingRoomOpenHelper if it is available
+        unwrapOpenHelper(
+                clazz = AutoClosingRoomOpenHelper::class.java,
+                openHelper = connectionManager.supportOpenHelper
+            )
+            ?.let {
+                autoCloser = it.autoCloser
+                it.autoCloser.initCoroutineScope(coroutineScope)
+                invalidationTracker.setAutoCloser(it.autoCloser)
+            }
+
         // Configure multi-instance invalidation, if enabled
         if (configuration.multiInstanceInvalidationServiceIntent != null) {
             requireNotNull(configuration.name)
@@ -1606,11 +1607,7 @@
                                 "Cannot create auto-closing database for an in-memory database."
                             }
                             val autoCloser =
-                                AutoCloser(
-                                    autoCloseTimeout,
-                                    requireNotNull(autoCloseTimeUnit),
-                                    requireNotNull(queryExecutor)
-                                )
+                                AutoCloser(autoCloseTimeout, requireNotNull(autoCloseTimeUnit))
                             AutoClosingRoomOpenHelperFactory(it, autoCloser)
                         } else {
                             it
diff --git a/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoCloser.android.kt b/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoCloser.android.kt
index a3143e6..ac86ceb 100644
--- a/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoCloser.android.kt
+++ b/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoCloser.android.kt
@@ -15,76 +15,76 @@
  */
 package androidx.room.support
 
-import android.os.Handler
-import android.os.Looper
 import android.os.SystemClock
 import androidx.annotation.GuardedBy
+import androidx.room.support.AutoCloser.Watch
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
-import java.io.IOException
-import java.util.concurrent.Executor
 import java.util.concurrent.TimeUnit
+import java.util.concurrent.atomic.AtomicInteger
+import java.util.concurrent.atomic.AtomicLong
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
 
 /**
- * AutoCloser is responsible for automatically opening (using delegateOpenHelper) and closing (on a
- * timer started when there are no remaining references) a SupportSqliteDatabase.
+ * AutoCloser is responsible for automatically opening (using `delegateOpenHelper`) and closing (on
+ * a timer started when there are no remaining references) a [SupportSQLiteDatabase].
  *
- * It is important to ensure that the ref count is incremented when using a returned database.
+ * It is important to ensure that the reference count is incremented when using a returned database.
  *
- * @param autoCloseTimeoutAmount time for auto close timer
- * @param autoCloseTimeUnit time unit for autoCloseTimeoutAmount
- * @param autoCloseExecutor the executor on which the auto close operation will happen
+ * @param timeoutAmount time for auto close timer
+ * @param timeUnit time unit for `timeoutAmount`
+ * @param watch A [Watch] implementation to get an increasing timestamp.
  */
 internal class AutoCloser(
-    autoCloseTimeoutAmount: Long,
-    autoCloseTimeUnit: TimeUnit,
-    autoCloseExecutor: Executor
+    timeoutAmount: Long,
+    timeUnit: TimeUnit,
+    private val watch: Watch = Watch { SystemClock.uptimeMillis() }
 ) {
-    lateinit var delegateOpenHelper: SupportSQLiteOpenHelper
-    private val handler = Handler(Looper.getMainLooper())
+    // The unwrapped SupportSQLiteOpenHelper (i.e. not AutoClosingRoomOpenHelper)
+    private lateinit var delegateOpenHelper: SupportSQLiteOpenHelper
 
-    internal var onAutoCloseCallback: Runnable? = null
+    private lateinit var coroutineScope: CoroutineScope
+
+    private var onAutoCloseCallback: (() -> Unit)? = null
 
     private val lock = Any()
 
-    private var autoCloseTimeoutInMs: Long = autoCloseTimeUnit.toMillis(autoCloseTimeoutAmount)
+    private val autoCloseTimeoutInMs = timeUnit.toMillis(timeoutAmount)
 
-    private val executor: Executor = autoCloseExecutor
+    private val referenceCount = AtomicInteger(0)
 
-    @GuardedBy("lock") internal var refCount = 0
+    private var lastDecrementRefCountTimeStamp = AtomicLong(watch.getMillis())
 
-    @GuardedBy("lock") internal var lastDecrementRefCountTimeStamp = SystemClock.uptimeMillis()
-
-    // The unwrapped SupportSqliteDatabase
+    // The unwrapped SupportSqliteDatabase (i.e. not AutoCloseSupportSQLiteDatabase)
     @GuardedBy("lock") internal var delegateDatabase: SupportSQLiteDatabase? = null
 
     private var manuallyClosed = false
 
-    private val executeAutoCloser = Runnable { executor.execute(autoCloser) }
+    private var autoCloseJob: Job? = null
 
-    private val autoCloser = Runnable {
+    private fun autoCloseDatabase() {
+        if (watch.getMillis() - lastDecrementRefCountTimeStamp.get() < autoCloseTimeoutInMs) {
+            // An increment + decrement beat us to closing the db. We
+            // will not close the database, and there should be at least
+            // one more auto-close scheduled.
+            return
+        }
+        if (referenceCount.get() != 0) {
+            // An increment beat us to closing the db. We don't close the
+            // db, and another closer will be scheduled once the ref
+            // count is decremented.
+            return
+        }
+        onAutoCloseCallback?.invoke()
+            ?: error(
+                "onAutoCloseCallback is null but it should  have been set before use. " +
+                    "Please file a bug against Room at: $BUG_LINK"
+            )
+
         synchronized(lock) {
-            if (
-                SystemClock.uptimeMillis() - lastDecrementRefCountTimeStamp < autoCloseTimeoutInMs
-            ) {
-                // An increment + decrement beat us to closing the db. We
-                // will not close the database, and there should be at least
-                // one more auto-close scheduled.
-                return@Runnable
-            }
-            if (refCount != 0) {
-                // An increment beat us to closing the db. We don't close the
-                // db, and another closer will be scheduled once the ref
-                // count is decremented.
-                return@Runnable
-            }
-            onAutoCloseCallback?.run()
-                ?: error(
-                    "onAutoCloseCallback is null but it should" +
-                        " have been set before use. Please file a bug " +
-                        "against Room at: $autoCloseBug"
-                )
-
             delegateDatabase?.let {
                 if (it.isOpen) {
                     it.close()
@@ -95,16 +95,27 @@
     }
 
     /**
-     * Since we need to construct the AutoCloser in the RoomDatabase.Builder, we need to set the
-     * delegateOpenHelper after construction.
+     * Since we need to construct the AutoCloser in the [androidx.room.RoomDatabase.Builder], we
+     * need to set the `delegateOpenHelper` after construction.
      *
-     * @param delegateOpenHelper the open helper that is used to create new SupportSqliteDatabases
+     * @param delegateOpenHelper the open helper that is used to create new [SupportSQLiteDatabase].
      */
-    fun init(delegateOpenHelper: SupportSQLiteOpenHelper) {
+    fun initOpenHelper(delegateOpenHelper: SupportSQLiteOpenHelper) {
+        require(delegateOpenHelper !is AutoClosingRoomOpenHelper)
         this.delegateOpenHelper = delegateOpenHelper
     }
 
     /**
+     * Since we need to construct the AutoCloser in the [androidx.room.RoomDatabase.Builder], we
+     * need to set the `coroutineScope` after construction.
+     *
+     * @param coroutineScope where the auto close will execute.
+     */
+    fun initCoroutineScope(coroutineScope: CoroutineScope) {
+        this.coroutineScope = coroutineScope
+    }
+
+    /**
      * Execute a ref counting function. The function will receive an unwrapped open database and
      * this database will stay open until at least after function returns. If there are no more
      * references in use for the db once function completes, an auto close operation will be
@@ -118,25 +129,25 @@
         }
 
     /**
-     * Confirms that autoCloser is no longer running and confirms that delegateDatabase is set and
-     * open. delegateDatabase will not be auto closed until decrementRefCountAndScheduleClose is
-     * called. decrementRefCountAndScheduleClose must be called once for each call to
-     * incrementCountAndEnsureDbIsOpen.
+     * Confirms that auto-close function is no longer running and confirms that `delegateDatabase`
+     * is set and open. `delegateDatabase` will not be auto closed until
+     * [decrementCountAndScheduleClose] is called. [decrementCountAndScheduleClose] must be called
+     * once for each call to [incrementCountAndEnsureDbIsOpen].
      *
-     * If this throws an exception, decrementCountAndScheduleClose must still be called!
+     * If this throws an exception, [decrementCountAndScheduleClose] must still be called!
      *
      * @return the *unwrapped* SupportSQLiteDatabase.
      */
     fun incrementCountAndEnsureDbIsOpen(): SupportSQLiteDatabase {
-        // TODO(rohitsat): avoid synchronized(lock) when possible. We should be able to avoid it
-        // when refCount is not hitting zero or if there is no auto close scheduled if we use
-        // Atomics.
-        synchronized(lock) {
+        val previousCount = referenceCount.getAndIncrement()
 
-            // If there is a scheduled autoclose operation, we should remove it from the handler.
-            handler.removeCallbacks(executeAutoCloser)
-            refCount++
-            check(!manuallyClosed) { "Attempting to open already closed database." }
+        // If there is a scheduled auto close operation, cancel it.
+        autoCloseJob?.cancel()
+        autoCloseJob = null
+
+        check(!manuallyClosed) { "Attempting to open already closed database." }
+
+        fun getDatabase(): SupportSQLiteDatabase {
             delegateDatabase?.let {
                 if (it.isOpen) {
                     return it
@@ -144,39 +155,41 @@
             }
             return delegateOpenHelper.writableDatabase.also { delegateDatabase = it }
         }
+
+        // Fast path: If the previous count was not zero, then there is no concurrent auto close
+        // operation that can race with getting the database, so we skip using the lock.
+        if (previousCount > 0) {
+            return getDatabase()
+        }
+        // Slow path: If the previous count was indeed zero, even though we cancel the auto close
+        // operation, it might be on-going already so to avoid a race we use the lock to get the
+        // database.
+        return synchronized(lock) { getDatabase() }
     }
 
     /**
      * Decrements the ref count and schedules a close if there are no other references to the db.
-     * This must only be called after a corresponding incrementCountAndEnsureDbIsOpen call.
+     * This must only be called after a corresponding [incrementCountAndEnsureDbIsOpen] call.
      */
     fun decrementCountAndScheduleClose() {
-        // TODO(rohitsat): avoid synchronized(lock) when possible
-        synchronized(lock) {
-            check(refCount > 0) { "ref count is 0 or lower but we're supposed to decrement" }
-            // decrement refCount
-            refCount--
-
-            // if refcount is zero, schedule close operation
-            if (refCount == 0) {
-                if (delegateDatabase == null) {
-                    // No db to close, this can happen due to exceptions when creating db...
-                    return
+        val newCount = referenceCount.decrementAndGet()
+        check(newCount >= 0) { "Unbalanced reference count." }
+        lastDecrementRefCountTimeStamp.set(watch.getMillis())
+        if (newCount == 0) {
+            autoCloseJob =
+                coroutineScope.launch {
+                    delay(autoCloseTimeoutInMs)
+                    autoCloseDatabase()
                 }
-                handler.postDelayed(executeAutoCloser, autoCloseTimeoutInMs)
-            }
         }
     }
 
-    /**
-     * Close the database if it is still active.
-     *
-     * @throws IOException if an exception is encountered when closing the underlying db.
-     */
-    @Throws(IOException::class)
+    /** Close the database if it is still active. */
     fun closeDatabaseIfOpen() {
         synchronized(lock) {
             manuallyClosed = true
+            autoCloseJob?.cancel()
+            autoCloseJob = null
             delegateDatabase?.close()
             delegateDatabase = null
         }
@@ -192,29 +205,30 @@
         get() = !manuallyClosed
 
     /**
-     * Returns the current ref count for this auto closer. This is only visible for testing.
-     *
-     * @return current ref count
-     */
-    internal val refCountForTest: Int
-        get() {
-            synchronized(lock) {
-                return refCount
-            }
-        }
-
-    /**
      * Sets a callback that will be run every time the database is auto-closed. This callback needs
      * to be lightweight since it is run while holding a lock.
      *
      * @param onAutoClose the callback to run
      */
-    fun setAutoCloseCallback(onAutoClose: Runnable) {
+    fun setAutoCloseCallback(onAutoClose: () -> Unit) {
         onAutoCloseCallback = onAutoClose
     }
 
+    /** Returns the current auto close callback. This is only visible for testing. */
+    internal val autoCloseCallbackForTest
+        get() = onAutoCloseCallback
+
+    /** Returns the current ref count for this auto closer. This is only visible for testing. */
+    internal val refCountForTest: Int
+        get() = referenceCount.get()
+
+    /** Represents a counting time tracker function. */
+    fun interface Watch {
+        fun getMillis(): Long
+    }
+
     companion object {
-        const val autoCloseBug =
-            "https://issuetracker.google.com/issues/new?component=" + "413107&template=1096568"
+        const val BUG_LINK =
+            "https://issuetracker.google.com/issues/new?component=413107&template=1096568"
     }
 }
diff --git a/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelper.android.kt b/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelper.android.kt
index 2bb22cf..a5dc11d 100644
--- a/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelper.android.kt
+++ b/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelper.android.kt
@@ -15,21 +15,18 @@
  */
 package androidx.room.support
 
-import android.content.ContentResolver
 import android.content.ContentValues
 import android.database.Cursor
 import android.database.SQLException
 import android.database.sqlite.SQLiteTransactionListener
-import android.net.Uri
 import android.os.Build
-import android.os.Bundle
 import android.os.CancellationSignal
 import android.util.Pair
 import androidx.annotation.RequiresApi
 import androidx.room.DelegatingOpenHelper
-import androidx.sqlite.db.SupportSQLiteCompat
 import androidx.sqlite.db.SupportSQLiteDatabase
 import androidx.sqlite.db.SupportSQLiteOpenHelper
+import androidx.sqlite.db.SupportSQLiteProgram
 import androidx.sqlite.db.SupportSQLiteQuery
 import androidx.sqlite.db.SupportSQLiteStatement
 import java.io.IOException
@@ -38,23 +35,21 @@
 /** A SupportSQLiteOpenHelper that has auto close enabled for database connections. */
 internal class AutoClosingRoomOpenHelper(
     override val delegate: SupportSQLiteOpenHelper,
-    @JvmField internal val autoCloser: AutoCloser
+    internal val autoCloser: AutoCloser
 ) : SupportSQLiteOpenHelper by delegate, DelegatingOpenHelper {
-    private val autoClosingDb: AutoClosingSupportSQLiteDatabase
+
+    private val autoClosingDb = AutoClosingSupportSQLiteDatabase(autoCloser)
 
     init {
-        autoCloser.init(delegate)
-        autoClosingDb = AutoClosingSupportSQLiteDatabase(autoCloser)
+        autoCloser.initOpenHelper(delegate)
     }
 
-    @get:RequiresApi(api = Build.VERSION_CODES.N)
     override val writableDatabase: SupportSQLiteDatabase
         get() {
             autoClosingDb.pokeOpen()
             return autoClosingDb
         }
 
-    @get:RequiresApi(api = Build.VERSION_CODES.N)
     override val readableDatabase: SupportSQLiteDatabase
         get() {
             // Note we don't differentiate between writable db and readable db
@@ -75,7 +70,7 @@
         }
 
         override fun compileStatement(sql: String): SupportSQLiteStatement {
-            return AutoClosingSupportSqliteStatement(sql, autoCloser)
+            return AutoClosingSupportSQLiteStatement(sql, autoCloser)
         }
 
         override fun beginTransaction() {
@@ -138,9 +133,6 @@
         }
 
         override fun endTransaction() {
-            checkNotNull(autoCloser.delegateDatabase) {
-                "End transaction called but delegateDb is null"
-            }
             try {
                 autoCloser.delegateDatabase!!.endTransaction()
             } finally {
@@ -149,8 +141,7 @@
         }
 
         override fun setTransactionSuccessful() {
-            autoCloser.delegateDatabase?.setTransactionSuccessful()
-                ?: error("setTransactionSuccessful called but delegateDb is null")
+            autoCloser.delegateDatabase!!.setTransactionSuccessful()
         }
 
         override fun inTransaction(): Boolean {
@@ -186,9 +177,8 @@
         override var version: Int
             get() = autoCloser.executeRefCountingFunction(SupportSQLiteDatabase::version)
             set(version) {
-                autoCloser.executeRefCountingFunction<Any?> { db: SupportSQLiteDatabase ->
+                autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
                     db.version = version
-                    null
                 }
             }
 
@@ -285,32 +275,24 @@
 
         @Throws(SQLException::class)
         override fun execSQL(sql: String) {
-            autoCloser.executeRefCountingFunction<Any?> { db: SupportSQLiteDatabase ->
-                db.execSQL(sql)
-                null
-            }
+            autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase -> db.execSQL(sql) }
         }
 
         @Throws(SQLException::class)
         override fun execSQL(sql: String, bindArgs: Array<out Any?>) {
-            autoCloser.executeRefCountingFunction<Any?> { db: SupportSQLiteDatabase ->
+            autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
                 db.execSQL(sql, bindArgs)
-                null
             }
         }
 
         override val isReadOnly: Boolean
-            get() =
-                autoCloser.executeRefCountingFunction { obj: SupportSQLiteDatabase ->
-                    obj.isReadOnly
-                }
+            get() = autoCloser.executeRefCountingFunction(SupportSQLiteDatabase::isReadOnly)
 
         override val isOpen: Boolean
             get() {
                 // Get the db without incrementing the reference cause we don't want to open
                 // the db for an isOpen call.
-                val localDelegate = autoCloser.delegateDatabase ?: return false
-                return localDelegate.isOpen
+                return autoCloser.delegateDatabase?.isOpen ?: return false
             }
 
         override fun needUpgrade(newVersion: Int): Boolean {
@@ -320,26 +302,23 @@
         }
 
         override val path: String?
-            get() = autoCloser.executeRefCountingFunction { obj: SupportSQLiteDatabase -> obj.path }
+            get() = autoCloser.executeRefCountingFunction(SupportSQLiteDatabase::path)
 
         override fun setLocale(locale: Locale) {
-            autoCloser.executeRefCountingFunction<Any?> { db: SupportSQLiteDatabase ->
+            autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
                 db.setLocale(locale)
-                null
             }
         }
 
         override fun setMaxSqlCacheSize(cacheSize: Int) {
-            autoCloser.executeRefCountingFunction<Any?> { db: SupportSQLiteDatabase ->
+            autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
                 db.setMaxSqlCacheSize(cacheSize)
-                null
             }
         }
 
         override fun setForeignKeyConstraintsEnabled(enabled: Boolean) {
-            autoCloser.executeRefCountingFunction<Any?> { db: SupportSQLiteDatabase ->
+            autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
                 db.setForeignKeyConstraintsEnabled(enabled)
-                null
             }
         }
 
@@ -359,21 +338,16 @@
 
         override val isWriteAheadLoggingEnabled: Boolean
             get() =
-                autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
-                    return@executeRefCountingFunction db.isWriteAheadLoggingEnabled
-                }
+                autoCloser.executeRefCountingFunction(
+                    SupportSQLiteDatabase::isWriteAheadLoggingEnabled
+                )
 
         override val attachedDbs: List<Pair<String, String>>?
-            get() =
-                autoCloser.executeRefCountingFunction { obj: SupportSQLiteDatabase ->
-                    obj.attachedDbs
-                }
+            get() = autoCloser.executeRefCountingFunction(SupportSQLiteDatabase::attachedDbs)
 
         override val isDatabaseIntegrityOk: Boolean
             get() =
-                autoCloser.executeRefCountingFunction { obj: SupportSQLiteDatabase ->
-                    obj.isDatabaseIntegrityOk
-                }
+                autoCloser.executeRefCountingFunction(SupportSQLiteDatabase::isDatabaseIntegrityOk)
 
         @Throws(IOException::class)
         override fun close() {
@@ -395,150 +369,141 @@
             delegate.close()
             autoCloser.decrementCountAndScheduleClose()
         }
-
-        @RequiresApi(api = Build.VERSION_CODES.Q)
-        override fun setNotificationUris(cr: ContentResolver, uris: List<Uri>) {
-            SupportSQLiteCompat.Api29Impl.setNotificationUris(delegate, cr, uris)
-        }
-
-        override fun getNotificationUri(): Uri {
-            return delegate.notificationUri
-        }
-
-        @RequiresApi(api = Build.VERSION_CODES.Q)
-        override fun getNotificationUris(): List<Uri> {
-            return SupportSQLiteCompat.Api29Impl.getNotificationUris(delegate)
-        }
-
-        @RequiresApi(api = Build.VERSION_CODES.M)
-        override fun setExtras(extras: Bundle) {
-            SupportSQLiteCompat.Api23Impl.setExtras(delegate, extras)
-        }
     }
 
     /**
-     * We can't close our db if the SupportSqliteStatement is open.
-     *
-     * Each of these that are created need to be registered with RefCounter.
-     *
-     * On auto-close, RefCounter needs to close each of these before closing the db that these were
-     * constructed from.
-     *
-     * Each of the methods here need to get
+     * Since long-living statements are a normal use-case, auto-close does not have a keep-alive
+     * statement, instead records SQL query and binding args and replicates on execution, opening
+     * the database is necessary but not helding a ref count on it.
      */
-    // TODO(rohitsat) cache the prepared statement... I'm not sure what the performance implications
-    // are for the way it's done here, but caching the prepared statement would definitely be more
-    // complicated since we need to invalidate any of the PreparedStatements that were created
-    // with this db
-    private class AutoClosingSupportSqliteStatement(
+    private class AutoClosingSupportSQLiteStatement(
         private val sql: String,
         private val autoCloser: AutoCloser
     ) : SupportSQLiteStatement {
-        private val binds = ArrayList<Any?>()
 
-        private fun <T> executeSqliteStatementWithRefCount(
-            block: (SupportSQLiteStatement) -> T
-        ): T {
-            return autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
-                val statement: SupportSQLiteStatement = db.compileStatement(sql)
-                doBinds(statement)
-                block(statement)
-            }
-        }
+        private var bindingTypes: IntArray = IntArray(0)
+        private var longBindings: LongArray = LongArray(0)
+        private var doubleBindings: DoubleArray = DoubleArray(0)
+        private var stringBindings: Array<String?> = emptyArray()
+        private var blobBindings: Array<ByteArray?> = emptyArray()
 
-        private fun doBinds(supportSQLiteStatement: SupportSQLiteStatement) {
-            // Replay the binds
-            binds.forEachIndexed { i, _ ->
-                val bindIndex = i + 1 // Bind indices are 1 based so we start at 1 not 0
-                when (val bind = binds[i]) {
-                    null -> {
-                        supportSQLiteStatement.bindNull(bindIndex)
-                    }
-                    is Long -> {
-                        supportSQLiteStatement.bindLong(bindIndex, bind)
-                    }
-                    is Double -> {
-                        supportSQLiteStatement.bindDouble(bindIndex, bind)
-                    }
-                    is String -> {
-                        supportSQLiteStatement.bindString(bindIndex, bind)
-                    }
-                    is ByteArray -> {
-                        supportSQLiteStatement.bindBlob(bindIndex, bind)
-                    }
-                }
-            }
-        }
-
-        private fun saveBinds(bindIndex: Int, value: Any?) {
-            val index = bindIndex - 1
-            if (index >= binds.size) {
-                // Add null entries to the list until we have the desired # of indices
-                for (i in binds.size..index) {
-                    binds.add(null)
-                }
-            }
-            binds[index] = value
-        }
-
-        @Throws(IOException::class)
         override fun close() {
-            // Nothing to do here since we re-compile the statement each time.
+            // Not much to do here since we re-compile the statement each time.
+            clearBindings()
         }
 
         override fun execute() {
-            executeSqliteStatementWithRefCount<Any?> { statement: SupportSQLiteStatement ->
-                statement.execute()
-                null
-            }
+            executeWithRefCount { statement: SupportSQLiteStatement -> statement.execute() }
         }
 
         override fun executeUpdateDelete(): Int {
-            return executeSqliteStatementWithRefCount { obj: SupportSQLiteStatement ->
-                obj.executeUpdateDelete()
-            }
+            return executeWithRefCount { obj: SupportSQLiteStatement -> obj.executeUpdateDelete() }
         }
 
         override fun executeInsert(): Long {
-            return executeSqliteStatementWithRefCount { obj: SupportSQLiteStatement ->
-                obj.executeInsert()
-            }
+            return executeWithRefCount { obj: SupportSQLiteStatement -> obj.executeInsert() }
         }
 
         override fun simpleQueryForLong(): Long {
-            return executeSqliteStatementWithRefCount { obj: SupportSQLiteStatement ->
-                obj.simpleQueryForLong()
-            }
+            return executeWithRefCount { obj: SupportSQLiteStatement -> obj.simpleQueryForLong() }
         }
 
         override fun simpleQueryForString(): String? {
-            return executeSqliteStatementWithRefCount { obj: SupportSQLiteStatement ->
-                obj.simpleQueryForString()
+            return executeWithRefCount { obj: SupportSQLiteStatement -> obj.simpleQueryForString() }
+        }
+
+        private fun <T> executeWithRefCount(block: (SupportSQLiteStatement) -> T): T {
+            return autoCloser.executeRefCountingFunction { db: SupportSQLiteDatabase ->
+                val actualStatement = db.compileStatement(sql)
+                bindTo(actualStatement)
+                block(actualStatement)
             }
         }
 
         override fun bindNull(index: Int) {
-            saveBinds(index, null)
+            ensureCapacity(COLUMN_TYPE_NULL, index)
+            bindingTypes[index] = COLUMN_TYPE_NULL
         }
 
         override fun bindLong(index: Int, value: Long) {
-            saveBinds(index, value)
+            ensureCapacity(COLUMN_TYPE_LONG, index)
+            bindingTypes[index] = COLUMN_TYPE_LONG
+            longBindings[index] = value
         }
 
         override fun bindDouble(index: Int, value: Double) {
-            saveBinds(index, value)
+            ensureCapacity(COLUMN_TYPE_DOUBLE, index)
+            bindingTypes[index] = COLUMN_TYPE_DOUBLE
+            doubleBindings[index] = value
         }
 
         override fun bindString(index: Int, value: String) {
-            saveBinds(index, value)
+            ensureCapacity(COLUMN_TYPE_STRING, index)
+            bindingTypes[index] = COLUMN_TYPE_STRING
+            stringBindings[index] = value
         }
 
         override fun bindBlob(index: Int, value: ByteArray) {
-            saveBinds(index, value)
+            ensureCapacity(COLUMN_TYPE_BLOB, index)
+            bindingTypes[index] = COLUMN_TYPE_BLOB
+            blobBindings[index] = value
         }
 
         override fun clearBindings() {
-            binds.clear()
+            bindingTypes = IntArray(0)
+            longBindings = LongArray(0)
+            doubleBindings = DoubleArray(0)
+            stringBindings = emptyArray()
+            blobBindings = emptyArray()
+        }
+
+        private fun ensureCapacity(columnType: Int, index: Int) {
+            val requiredSize = index + 1
+            if (bindingTypes.size < requiredSize) {
+                bindingTypes = bindingTypes.copyOf(requiredSize)
+            }
+            when (columnType) {
+                COLUMN_TYPE_LONG -> {
+                    if (longBindings.size < requiredSize) {
+                        longBindings = longBindings.copyOf(requiredSize)
+                    }
+                }
+                COLUMN_TYPE_DOUBLE -> {
+                    if (doubleBindings.size < requiredSize) {
+                        doubleBindings = doubleBindings.copyOf(requiredSize)
+                    }
+                }
+                COLUMN_TYPE_STRING -> {
+                    if (stringBindings.size < requiredSize) {
+                        stringBindings = stringBindings.copyOf(requiredSize)
+                    }
+                }
+                COLUMN_TYPE_BLOB -> {
+                    if (blobBindings.size < requiredSize) {
+                        blobBindings = blobBindings.copyOf(requiredSize)
+                    }
+                }
+            }
+        }
+
+        private fun bindTo(query: SupportSQLiteProgram) {
+            for (index in 1 until bindingTypes.size) {
+                when (bindingTypes[index]) {
+                    COLUMN_TYPE_LONG -> query.bindLong(index, longBindings[index])
+                    COLUMN_TYPE_DOUBLE -> query.bindDouble(index, doubleBindings[index])
+                    COLUMN_TYPE_STRING -> query.bindString(index, stringBindings[index]!!)
+                    COLUMN_TYPE_BLOB -> query.bindBlob(index, blobBindings[index]!!)
+                    COLUMN_TYPE_NULL -> query.bindNull(index)
+                }
+            }
+        }
+
+        companion object {
+            private const val COLUMN_TYPE_LONG = 1
+            private const val COLUMN_TYPE_DOUBLE = 2
+            private const val COLUMN_TYPE_STRING = 3
+            private const val COLUMN_TYPE_BLOB = 4
+            private const val COLUMN_TYPE_NULL = 5
         }
     }
 }
diff --git a/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactory.android.kt b/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactory.android.kt
index ce1e650..7c8f88d 100644
--- a/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactory.android.kt
+++ b/room/room-runtime/src/androidMain/kotlin/androidx/room/support/AutoClosingRoomOpenHelperFactory.android.kt
@@ -22,7 +22,6 @@
     private val delegate: SupportSQLiteOpenHelper.Factory,
     private val autoCloser: AutoCloser
 ) : SupportSQLiteOpenHelper.Factory {
-    /** @return AutoClosingRoomOpenHelper instances. */
     override fun create(
         configuration: SupportSQLiteOpenHelper.Configuration
     ): AutoClosingRoomOpenHelper {
diff --git a/wear/compose/compose-foundation/api/current.txt b/wear/compose/compose-foundation/api/current.txt
index c75ad3e..ad4f841 100644
--- a/wear/compose/compose-foundation/api/current.txt
+++ b/wear/compose/compose-foundation/api/current.txt
@@ -301,6 +301,7 @@
 
   public interface ScrollInfoProvider {
     method public float getAnchorItemOffset();
+    method public float getLastItemOffset();
     method public boolean isScrollAwayValid();
     method public boolean isScrollInProgress();
     method public boolean isScrollable();
@@ -308,12 +309,13 @@
     property public abstract boolean isScrollAwayValid;
     property public abstract boolean isScrollInProgress;
     property public abstract boolean isScrollable;
+    property public abstract float lastItemOffset;
   }
 
   public final class ScrollInfoProviderKt {
-    method public static androidx.wear.compose.foundation.ScrollInfoProvider toScrollAwayInfoProvider(androidx.compose.foundation.lazy.LazyListState);
-    method public static androidx.wear.compose.foundation.ScrollInfoProvider toScrollAwayInfoProvider(androidx.compose.foundation.ScrollState);
-    method public static androidx.wear.compose.foundation.ScrollInfoProvider toScrollAwayInfoProvider(androidx.wear.compose.foundation.lazy.ScalingLazyListState);
+    method public static androidx.wear.compose.foundation.ScrollInfoProvider ScrollInfoProvider(androidx.compose.foundation.lazy.LazyListState state);
+    method public static androidx.wear.compose.foundation.ScrollInfoProvider ScrollInfoProvider(androidx.compose.foundation.ScrollState state, optional float bottomButtonHeight);
+    method public static androidx.wear.compose.foundation.ScrollInfoProvider ScrollInfoProvider(androidx.wear.compose.foundation.lazy.ScalingLazyListState state);
   }
 
   public final class SwipeToDismissBoxDefaults {
diff --git a/wear/compose/compose-foundation/api/restricted_current.txt b/wear/compose/compose-foundation/api/restricted_current.txt
index c75ad3e..ad4f841 100644
--- a/wear/compose/compose-foundation/api/restricted_current.txt
+++ b/wear/compose/compose-foundation/api/restricted_current.txt
@@ -301,6 +301,7 @@
 
   public interface ScrollInfoProvider {
     method public float getAnchorItemOffset();
+    method public float getLastItemOffset();
     method public boolean isScrollAwayValid();
     method public boolean isScrollInProgress();
     method public boolean isScrollable();
@@ -308,12 +309,13 @@
     property public abstract boolean isScrollAwayValid;
     property public abstract boolean isScrollInProgress;
     property public abstract boolean isScrollable;
+    property public abstract float lastItemOffset;
   }
 
   public final class ScrollInfoProviderKt {
-    method public static androidx.wear.compose.foundation.ScrollInfoProvider toScrollAwayInfoProvider(androidx.compose.foundation.lazy.LazyListState);
-    method public static androidx.wear.compose.foundation.ScrollInfoProvider toScrollAwayInfoProvider(androidx.compose.foundation.ScrollState);
-    method public static androidx.wear.compose.foundation.ScrollInfoProvider toScrollAwayInfoProvider(androidx.wear.compose.foundation.lazy.ScalingLazyListState);
+    method public static androidx.wear.compose.foundation.ScrollInfoProvider ScrollInfoProvider(androidx.compose.foundation.lazy.LazyListState state);
+    method public static androidx.wear.compose.foundation.ScrollInfoProvider ScrollInfoProvider(androidx.compose.foundation.ScrollState state, optional float bottomButtonHeight);
+    method public static androidx.wear.compose.foundation.ScrollInfoProvider ScrollInfoProvider(androidx.wear.compose.foundation.lazy.ScalingLazyListState state);
   }
 
   public final class SwipeToDismissBoxDefaults {
diff --git a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/ScrollInfoProvider.kt b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/ScrollInfoProvider.kt
index 6fb7c9c..6cfbb43 100644
--- a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/ScrollInfoProvider.kt
+++ b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/ScrollInfoProvider.kt
@@ -19,10 +19,13 @@
 import androidx.compose.foundation.ScrollState
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.LazyListItemInfo
 import androidx.compose.foundation.lazy.LazyListState
 import androidx.compose.ui.util.fastFirstOrNull
+import androidx.compose.ui.util.fastForEach
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
 import androidx.wear.compose.foundation.lazy.ScalingLazyListAnchorType
+import androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo
 import androidx.wear.compose.foundation.lazy.ScalingLazyListState
 import androidx.wear.compose.foundation.lazy.startOffset
 
@@ -58,33 +61,45 @@
      * returned offset is Float.NaN.
      */
     val anchorItemOffset: Float
+
+    /**
+     * The amount of space between the last item (which may not be visible) and the bottom edge of
+     * the viewport. This is always greater or equal to 0, if there is no (or negative) room
+     * (including the case in which the last item is not on screen), 0 should be returned.
+     */
+    val lastItemOffset: Float
 }
 
 /**
- * Extension function for creating a [ScrollInfoProvider] from a [ScalingLazyListState], for use
- * with [ScalingLazyColumn] - used to create a ScrollAway modifier directly that can be applied to
- * an object that appears at the top of the screen, to scroll it away vertically when the
+ * Function for creating a [ScrollInfoProvider] from a [ScalingLazyListState], for use with
+ * [ScalingLazyColumn] - used to create a ScrollAway modifier directly that can be applied to an
+ * object that appears at the top of the screen, to scroll it away vertically when the
  * [ScalingLazyColumn] is scrolled upwards.
+ *
+ * @param state
  */
-fun ScalingLazyListState.toScrollAwayInfoProvider(): ScrollInfoProvider =
-    ScalingLazyListStateScrollInfoProvider(this)
+fun ScrollInfoProvider(state: ScalingLazyListState): ScrollInfoProvider =
+    ScalingLazyListStateScrollInfoProvider(state)
 
 /**
- * Extension function for creating a [ScrollInfoProvider] from a [LazyListState], for use with
- * [LazyColumn] - used to create a ScrollAway modifier directly that can be applied to an object
- * that appears at the top of the screen, to scroll it away vertically when the [LazyColumn] is
- * scrolled upwards.
+ * Function for creating a [ScrollInfoProvider] from a [LazyListState], for use with [LazyColumn] -
+ * used to create a ScrollAway modifier directly that can be applied to an object that appears at
+ * the top of the screen, to scroll it away vertically when the [LazyColumn] is scrolled upwards.
  */
-fun LazyListState.toScrollAwayInfoProvider(): ScrollInfoProvider =
-    LazyListStateScrollInfoProvider(this)
+fun ScrollInfoProvider(state: LazyListState): ScrollInfoProvider =
+    LazyListStateScrollInfoProvider(state)
 
 /**
- * Extension function for creating a [ScrollInfoProvider] from a [ScrollState], for use with
- * [Column] - used to create a ScrollAway modifier directly that can be applied to an object that
- * appears at the top of the screen, to scroll it away vertically when the [Column] is scrolled
- * upwards.
+ * Function for creating a [ScrollInfoProvider] from a [ScrollState], for use with [Column] - used
+ * to create a ScrollAway modifier directly that can be applied to an object that appears at the top
+ * of the screen, to scroll it away vertically when the [Column] is scrolled upwards.
+ *
+ * @param state the [ScrollState] to use as the base for creating the [ScrollInfoProvider]
+ * @param bottomButtonHeight optional parameter to specify the size of a bottom button if one is
+ *   provided.
  */
-fun ScrollState.toScrollAwayInfoProvider(): ScrollInfoProvider = ScrollStateScrollInfoProvider(this)
+fun ScrollInfoProvider(state: ScrollState, bottomButtonHeight: Float = 0f): ScrollInfoProvider =
+    ScrollStateScrollInfoProvider(state, bottomButtonHeight)
 
 // Implementation of [ScrollAwayInfoProvider] for [ScalingLazyColumn].
 // Being in Foundation, this implementation has access to the ScalingLazyListState
@@ -118,10 +133,25 @@
                 } ?: Float.NaN
         }
 
+    override val lastItemOffset: Float
+        get() {
+            val screenHeightPx = state.config.value?.viewportHeightPx ?: 0
+            var lastItemInfo: ScalingLazyListItemInfo? = null
+            state.layoutInfo.visibleItemsInfo.fastForEach { ii ->
+                if (ii.index == state.layoutInfo.totalItemsCount - 1) lastItemInfo = ii
+            }
+            return lastItemInfo?.let {
+                val bottomEdge = it.offset + screenHeightPx / 2 + it.size / 2
+                (screenHeightPx - bottomEdge).toFloat().coerceAtLeast(0f)
+            } ?: 0f
+        }
+
     override fun toString(): String {
-        return "ScalingLazyColumnScrollAwayInfoProvider(isScrollAwayValid=$isScrollAwayValid, " +
+        return "ScalingLazyListStateScrollInfoProvider(isScrollAwayValid=$isScrollAwayValid, " +
+            "isScrollable=$isScrollable," +
             "isScrollInProgress=$isScrollInProgress, " +
-            "trackedItemOffset=$anchorItemOffset)"
+            "anchorItemOffset=$anchorItemOffset, " +
+            "lastItemOffset=$lastItemOffset)"
     }
 
     private var initialStartOffset: Float? = null
@@ -144,15 +174,33 @@
                 .fastFirstOrNull { it.index == 0 }
                 ?.let { -it.offset.toFloat() } ?: Float.NaN
 
+    override val lastItemOffset: Float
+        get() {
+            val screenHeightPx = state.layoutInfo.viewportSize.height
+            var lastItemInfo: LazyListItemInfo? = null
+            state.layoutInfo.visibleItemsInfo.fastForEach { ii ->
+                if (ii.index == state.layoutInfo.totalItemsCount - 1) lastItemInfo = ii
+            }
+            return lastItemInfo?.let {
+                val bottomEdge = it.offset + it.size - state.layoutInfo.viewportStartOffset
+                (screenHeightPx - bottomEdge).toFloat().coerceAtLeast(0f)
+            } ?: 0f
+        }
+
     override fun toString(): String {
-        return "LazyColumnScrollAwayInfoProvider(isScrollAwayValid=$isScrollAwayValid, " +
+        return "LazyListStateScrollInfoProvider(isScrollAwayValid=$isScrollAwayValid, " +
+            "isScrollable=$isScrollable," +
             "isScrollInProgress=$isScrollInProgress, " +
-            "trackedItemOffset=$anchorItemOffset)"
+            "anchorItemOffset=$anchorItemOffset, " +
+            "lastItemOffset=$lastItemOffset)"
     }
 }
 
 // Implementation of [ScrollAwayInfoProvider] for [Column]
-private class ScrollStateScrollInfoProvider(val state: ScrollState) : ScrollInfoProvider {
+private class ScrollStateScrollInfoProvider(
+    val state: ScrollState,
+    val bottomButtonHeight: Float = 0f
+) : ScrollInfoProvider {
     override val isScrollAwayValid: Boolean
         get() = true
 
@@ -170,8 +218,17 @@
     override val anchorItemOffset: Float
         get() = state.value.toFloat()
 
-    override fun toString(): String =
-        "DefaultScrollAwayInfoProvider(isScrollAwayValid=$isScrollAwayValid, " +
+    override val lastItemOffset: Float
+        get() {
+            return if (state.maxValue == Int.MAX_VALUE || bottomButtonHeight == 0f) 0f
+            else (state.value - state.maxValue + bottomButtonHeight).coerceAtLeast(0f)
+        }
+
+    override fun toString(): String {
+        return "ScrollStateScrollInfoProvider(isScrollAwayValid=$isScrollAwayValid, " +
+            "isScrollable=$isScrollable," +
             "isScrollInProgress=$isScrollInProgress, " +
-            "trackedItemOffset=$anchorItemOffset)"
+            "anchorItemOffset=$anchorItemOffset, " +
+            "lastItemOffset=$lastItemOffset)"
+    }
 }
diff --git a/wear/compose/compose-material3/api/current.txt b/wear/compose/compose-material3/api/current.txt
index e847dac..2b55821 100644
--- a/wear/compose/compose-material3/api/current.txt
+++ b/wear/compose/compose-material3/api/current.txt
@@ -630,10 +630,12 @@
   }
 
   public final class ScreenScaffoldKt {
-    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.lazy.LazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.lazy.LazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> scrollIndicator, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? bottomButton, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.ScrollState scrollState, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> bottomButton, float bottomButtonHeight, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void ScreenScaffold(optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional androidx.wear.compose.foundation.ScrollInfoProvider? scrollInfoProvider, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? bottomButton, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> bottomButton, androidx.wear.compose.foundation.ScrollInfoProvider scrollInfoProvider, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
   }
 
   public enum ScreenStage {
@@ -658,6 +660,11 @@
     method @androidx.compose.runtime.Composable public static void ScrollIndicator(androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
   }
 
+  public final class SegmentedCircularProgressIndicatorKt {
+    method @androidx.compose.runtime.Composable public static void SegmentedCircularProgressIndicator(@IntRange(from=1L) int segmentCount, kotlin.jvm.functions.Function0<java.lang.Float> progress, optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional float endAngle, optional androidx.wear.compose.material3.ProgressIndicatorColors colors, optional float strokeWidth, optional float gapSize);
+    method @androidx.compose.runtime.Composable public static void SegmentedCircularProgressIndicator(@IntRange(from=1L) int segmentCount, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> completed, optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional float endAngle, optional androidx.wear.compose.material3.ProgressIndicatorColors colors, optional float strokeWidth, optional float gapSize);
+  }
+
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.RoundedCornerShape getExtraLarge();
     method public androidx.compose.foundation.shape.RoundedCornerShape getExtraSmall();
diff --git a/wear/compose/compose-material3/api/restricted_current.txt b/wear/compose/compose-material3/api/restricted_current.txt
index e847dac..2b55821 100644
--- a/wear/compose/compose-material3/api/restricted_current.txt
+++ b/wear/compose/compose-material3/api/restricted_current.txt
@@ -630,10 +630,12 @@
   }
 
   public final class ScreenScaffoldKt {
-    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.lazy.LazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.lazy.LazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> scrollIndicator, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? bottomButton, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.ScrollState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.compose.foundation.ScrollState scrollState, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> bottomButton, float bottomButtonHeight, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
     method @androidx.compose.runtime.Composable public static void ScreenScaffold(optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional androidx.wear.compose.foundation.ScrollInfoProvider? scrollInfoProvider, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
-    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(androidx.wear.compose.foundation.lazy.ScalingLazyListState scrollState, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? bottomButton, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
+    method @androidx.compose.runtime.Composable public static void ScreenScaffold(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> bottomButton, androidx.wear.compose.foundation.ScrollInfoProvider scrollInfoProvider, optional androidx.compose.ui.Modifier modifier, optional kotlin.jvm.functions.Function0<kotlin.Unit>? timeText, optional kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit>? scrollIndicator, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.BoxScope,kotlin.Unit> content);
   }
 
   public enum ScreenStage {
@@ -658,6 +660,11 @@
     method @androidx.compose.runtime.Composable public static void ScrollIndicator(androidx.wear.compose.foundation.lazy.ScalingLazyListState state, optional androidx.compose.ui.Modifier modifier, optional boolean reverseDirection, optional androidx.compose.animation.core.AnimationSpec<java.lang.Float> positionAnimationSpec);
   }
 
+  public final class SegmentedCircularProgressIndicatorKt {
+    method @androidx.compose.runtime.Composable public static void SegmentedCircularProgressIndicator(@IntRange(from=1L) int segmentCount, kotlin.jvm.functions.Function0<java.lang.Float> progress, optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional float endAngle, optional androidx.wear.compose.material3.ProgressIndicatorColors colors, optional float strokeWidth, optional float gapSize);
+    method @androidx.compose.runtime.Composable public static void SegmentedCircularProgressIndicator(@IntRange(from=1L) int segmentCount, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> completed, optional androidx.compose.ui.Modifier modifier, optional float startAngle, optional float endAngle, optional androidx.wear.compose.material3.ProgressIndicatorColors colors, optional float strokeWidth, optional float gapSize);
+  }
+
   public final class ShapeDefaults {
     method public androidx.compose.foundation.shape.RoundedCornerShape getExtraLarge();
     method public androidx.compose.foundation.shape.RoundedCornerShape getExtraSmall();
diff --git a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/EdgeButtonDemo.kt b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/EdgeButtonDemo.kt
index 6c02d1e..9960e0a 100644
--- a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/EdgeButtonDemo.kt
+++ b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/EdgeButtonDemo.kt
@@ -16,79 +16,76 @@
 
 package androidx.wear.compose.material3.demos
 
+import androidx.compose.foundation.gestures.ScrollableDefaults
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.rememberLazyListState
+import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.verticalScroll
 import androidx.compose.runtime.Composable
-import androidx.compose.runtime.State
-import androidx.compose.runtime.derivedStateOf
 import androidx.compose.runtime.mutableIntStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalConfiguration
-import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.util.fastForEach
+import androidx.wear.compose.foundation.ExperimentalWearFoundationApi
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
-import androidx.wear.compose.foundation.lazy.ScalingLazyListItemInfo
 import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState
+import androidx.wear.compose.foundation.rememberActiveFocusRequester
+import androidx.wear.compose.foundation.rotary.RotaryScrollableDefaults
+import androidx.wear.compose.foundation.rotary.rotaryScrollable
 import androidx.wear.compose.integration.demos.common.AdaptiveScreen
 import androidx.wear.compose.material3.ButtonDefaults
 import androidx.wear.compose.material3.ButtonDefaults.buttonColors
 import androidx.wear.compose.material3.Card
 import androidx.wear.compose.material3.CompactButton
 import androidx.wear.compose.material3.EdgeButton
+import androidx.wear.compose.material3.ScreenScaffold
 import androidx.wear.compose.material3.Text
 
 @Composable
-fun EdgeButtonBelowListDemo() {
-    // NOTE: This demo recomposes the Edge Button when it's appearing / disappearing.
+fun EdgeButtonBelowLazyColumnDemo() {
+    val labels =
+        listOf(
+            "Hi",
+            "Hello World",
+            "Hello world again?",
+            "More content as we add stuff",
+            "I don't know if this will fit now, testing",
+            "Really long text that it's going to take multiple lines",
+            "And now we are really pushing it because the screen is really small",
+        )
+    val selectedLabel = remember { mutableIntStateOf(0) }
     AdaptiveScreen {
-        val state = rememberScalingLazyListState()
-        val screenHeightPx =
-            with(LocalDensity.current) { LocalConfiguration.current.screenHeightDp.dp.toPx() }
-        val heightPx = remember {
-            derivedStateOf {
-                val marginPx = 5f // !?
-                var lastItemInfo: ScalingLazyListItemInfo? = null
-                state.layoutInfo.visibleItemsInfo.fastForEach { ii ->
-                    if (ii.index == state.layoutInfo.totalItemsCount - 1) lastItemInfo = ii
+        val state = rememberLazyListState()
+        ScreenScaffold(
+            scrollState = state,
+            bottomButton = {
+                EdgeButton(
+                    onClick = {},
+                    buttonHeight = ButtonDefaults.EdgeButtonHeightLarge,
+                    colors = buttonColors(containerColor = Color.DarkGray)
+                ) {
+                    Text(labels[selectedLabel.intValue], color = Color.White)
                 }
-                lastItemInfo?.let {
-                    val bottomEdge = it.offset + screenHeightPx / 2 + it.size / 2
-                    (screenHeightPx - bottomEdge - marginPx).coerceAtLeast(0f)
-                } ?: 0f
             }
-        }
-
-        val labels =
-            listOf(
-                "Hi",
-                "Hello World",
-                "Hello world again?",
-                "More content as we add stuff",
-                "I don't know if this will fit now, testing",
-                "Really long text that it's going to take multiple lines",
-                "And now we are really pushing it because the screen is really small",
-            )
-        val selectedLabel = remember { mutableIntStateOf(0) }
-
-        Box(Modifier.fillMaxSize(), contentAlignment = Alignment.BottomCenter) {
-            ScalingLazyColumn(
+        ) {
+            LazyColumn(
                 state = state,
                 modifier = Modifier.fillMaxSize(),
-                autoCentering = null,
-                contentPadding = PaddingValues(10.dp, 20.dp, 10.dp, 100.dp)
+                verticalArrangement = Arrangement.spacedBy(4.dp),
+                contentPadding = PaddingValues(10.dp, 20.dp, 10.dp, 80.dp),
+                horizontalAlignment = Alignment.CenterHorizontally
             ) {
                 items(labels.size) {
                     Card(
@@ -99,30 +96,116 @@
                     }
                 }
             }
-            // We isolate the call to EdgeButton to a function so only that is recomposed when the
-            // height changes.
-            EdgeButtonCall(heightPx) {
-                Text(
-                    labels[selectedLabel.intValue],
-                    color = Color.White,
-                    textAlign = TextAlign.Center,
-                    maxLines = 3,
-                )
-            }
         }
     }
 }
 
 @Composable
-private fun EdgeButtonCall(heightPx: State<Float>, content: @Composable RowScope.() -> Unit) {
-    val heightDp = with(LocalDensity.current) { heightPx.value.toDp() }
-    EdgeButton(
-        onClick = {},
-        buttonHeight = ButtonDefaults.EdgeButtonHeightLarge,
-        colors = buttonColors(containerColor = Color.DarkGray),
-        modifier = Modifier.height(heightDp),
-        content = content
-    )
+fun EdgeButtonBelowScalingLazyColumnDemo() {
+    val labels =
+        listOf(
+            "Hi",
+            "Hello World",
+            "Hello world again?",
+            "More content as we add stuff",
+            "I don't know if this will fit now, testing",
+            "Really long text that it's going to take multiple lines",
+            "And now we are really pushing it because the screen is really small",
+        )
+    val selectedLabel = remember { mutableIntStateOf(0) }
+
+    AdaptiveScreen {
+        val state = rememberScalingLazyListState()
+        ScreenScaffold(
+            scrollState = state,
+            bottomButton = {
+                EdgeButton(
+                    onClick = {},
+                    buttonHeight = ButtonDefaults.EdgeButtonHeightLarge,
+                    colors = buttonColors(containerColor = Color.DarkGray)
+                ) {
+                    Text(labels[selectedLabel.intValue], color = Color.White)
+                }
+            }
+        ) {
+            ScalingLazyColumn(
+                state = state,
+                modifier = Modifier.fillMaxSize(),
+                autoCentering = null,
+                contentPadding = PaddingValues(10.dp, 20.dp, 10.dp, 100.dp),
+                horizontalAlignment = Alignment.CenterHorizontally
+            ) {
+                items(labels.size) {
+                    Card(
+                        onClick = { selectedLabel.intValue = it },
+                        modifier = Modifier.fillMaxWidth(0.9f)
+                    ) {
+                        Text(labels[it])
+                    }
+                }
+            }
+        }
+    }
+}
+
+@OptIn(ExperimentalWearFoundationApi::class)
+@Composable
+fun EdgeButtonBelowColumnDemo() {
+    val labels =
+        listOf(
+            "Hi",
+            "Hello World",
+            "Hello world again?",
+            "More content as we add stuff",
+            "I don't know if this will fit now, testing",
+            "Really long text that it's going to take multiple lines",
+            "And now we are really pushing it because the screen is really small",
+        )
+    val selectedLabel = remember { mutableIntStateOf(0) }
+    val bottomButtonHeight = ButtonDefaults.EdgeButtonHeightLarge
+
+    AdaptiveScreen {
+        val scrollState = rememberScrollState()
+        val focusRequester = rememberActiveFocusRequester()
+
+        ScreenScaffold(
+            scrollState = scrollState,
+            bottomButton = {
+                EdgeButton(
+                    onClick = {},
+                    buttonHeight = bottomButtonHeight,
+                    colors = buttonColors(containerColor = Color.DarkGray)
+                ) {
+                    Text(labels[selectedLabel.intValue], color = Color.White)
+                }
+            },
+            bottomButtonHeight = bottomButtonHeight
+        ) {
+            Column(
+                modifier =
+                    Modifier.verticalScroll(scrollState)
+                        .rotaryScrollable(
+                            RotaryScrollableDefaults.behavior(
+                                scrollableState = scrollState,
+                                flingBehavior = ScrollableDefaults.flingBehavior()
+                            ),
+                            focusRequester = focusRequester
+                        ),
+                verticalArrangement = Arrangement.spacedBy(4.dp),
+                horizontalAlignment = Alignment.CenterHorizontally
+            ) {
+                repeat(labels.size) {
+                    Card(
+                        onClick = { selectedLabel.intValue = it },
+                        modifier = Modifier.fillMaxWidth(0.9f)
+                    ) {
+                        Text(labels[it])
+                    }
+                }
+                Spacer(Modifier.height(bottomButtonHeight))
+            }
+        }
+    }
 }
 
 @Suppress("PrimitiveInCollection")
diff --git a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ProgressIndicatorDemo.kt b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ProgressIndicatorDemo.kt
index c1c15b3..0179e50 100644
--- a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ProgressIndicatorDemo.kt
+++ b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ProgressIndicatorDemo.kt
@@ -37,6 +37,8 @@
 import androidx.wear.compose.material3.samples.FullScreenProgressIndicatorSample
 import androidx.wear.compose.material3.samples.MediaButtonProgressIndicatorSample
 import androidx.wear.compose.material3.samples.OverflowProgressIndicatorSample
+import androidx.wear.compose.material3.samples.SegmentedProgressIndicatorOnOffSample
+import androidx.wear.compose.material3.samples.SegmentedProgressIndicatorSample
 import androidx.wear.compose.material3.samples.SmallValuesProgressIndicatorSample
 
 val ProgressIndicatorDemos =
@@ -69,4 +71,8 @@
         ComposableDemo("Small progress values") {
             Centralize { SmallValuesProgressIndicatorSample() }
         },
+        ComposableDemo("Segmented progress") { Centralize { SegmentedProgressIndicatorSample() } },
+        ComposableDemo("Progress segments on/off") {
+            Centralize { SegmentedProgressIndicatorOnOffSample() }
+        },
     )
diff --git a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ScrollAwayDemos.kt b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ScrollAwayDemos.kt
index f33edc4..ce9aa66 100644
--- a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ScrollAwayDemos.kt
+++ b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/ScrollAwayDemos.kt
@@ -30,10 +30,10 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
+import androidx.wear.compose.foundation.ScrollInfoProvider
 import androidx.wear.compose.foundation.rememberActiveFocusRequester
 import androidx.wear.compose.foundation.rotary.RotaryScrollableDefaults
 import androidx.wear.compose.foundation.rotary.rotaryScrollable
-import androidx.wear.compose.foundation.toScrollAwayInfoProvider
 import androidx.wear.compose.integration.demos.common.Centralize
 import androidx.wear.compose.integration.demos.common.ComposableDemo
 import androidx.wear.compose.material3.FilledTonalButton
@@ -94,7 +94,7 @@
             // default handling is unsuitable.
             modifier =
                 Modifier.scrollAway(
-                    scrollInfoProvider = scrollState.toScrollAwayInfoProvider(),
+                    scrollInfoProvider = ScrollInfoProvider(scrollState),
                     screenStage = {
                         if (scrollState.isScrollInProgress) ScreenStage.Scrolling
                         else ScreenStage.Idle
@@ -145,7 +145,7 @@
             // default handling is unsuitable.
             modifier =
                 Modifier.scrollAway(
-                    scrollInfoProvider = scrollState.toScrollAwayInfoProvider(),
+                    scrollInfoProvider = ScrollInfoProvider(scrollState),
                     screenStage = {
                         if (scrollState.isScrollInProgress) ScreenStage.Scrolling
                         else ScreenStage.Idle
diff --git a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/WearMaterial3Demos.kt b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/WearMaterial3Demos.kt
index 7c13585..3e8e13e 100644
--- a/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/WearMaterial3Demos.kt
+++ b/wear/compose/compose-material3/integration-tests/src/main/java/androidx/wear/compose/material3/demos/WearMaterial3Demos.kt
@@ -25,6 +25,7 @@
 import androidx.wear.compose.material3.samples.AnimatedTextSample
 import androidx.wear.compose.material3.samples.AnimatedTextSampleButtonResponse
 import androidx.wear.compose.material3.samples.AnimatedTextSampleSharedFontRegistry
+import androidx.wear.compose.material3.samples.EdgeButtonListSample
 import androidx.wear.compose.material3.samples.EdgeButtonSample
 import androidx.wear.compose.material3.samples.EdgeSwipeForSwipeToDismiss
 import androidx.wear.compose.material3.samples.FixedFontSize
@@ -51,8 +52,17 @@
                         "Edge Button",
                         listOf(
                             ComposableDemo("Simple Edge Button") { EdgeButtonSample() },
+                            ComposableDemo("Simple Edge Button below SLC") {
+                                EdgeButtonListSample()
+                            },
                             ComposableDemo("Edge Button Sizes") { EdgeButtonSizeDemo() },
-                            ComposableDemo("Edge Button Below List") { EdgeButtonBelowListDemo() },
+                            ComposableDemo("Edge Button Below C") { EdgeButtonBelowColumnDemo() },
+                            ComposableDemo("Edge Button Below LC") {
+                                EdgeButtonBelowLazyColumnDemo()
+                            },
+                            ComposableDemo("Edge Button Below SLC") {
+                                EdgeButtonBelowScalingLazyColumnDemo()
+                            },
                         )
                     ),
                     ComposableDemo("Button") { ButtonDemo() },
diff --git a/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/EdgeButtonSample.kt b/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/EdgeButtonSample.kt
index 0d49823..122d612 100644
--- a/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/EdgeButtonSample.kt
+++ b/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/EdgeButtonSample.kt
@@ -18,16 +18,26 @@
 
 import androidx.annotation.Sampled
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.size
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.Check
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.unit.dp
+import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
+import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState
 import androidx.wear.compose.material3.ButtonDefaults
+import androidx.wear.compose.material3.ButtonDefaults.buttonColors
+import androidx.wear.compose.material3.Card
 import androidx.wear.compose.material3.EdgeButton
 import androidx.wear.compose.material3.Icon
+import androidx.wear.compose.material3.ScreenScaffold
 import androidx.wear.compose.material3.Text
 
 @Sampled
@@ -48,3 +58,33 @@
         }
     }
 }
+
+@Sampled
+@Composable
+fun EdgeButtonListSample() {
+    val state = rememberScalingLazyListState()
+    ScreenScaffold(
+        scrollState = state,
+        bottomButton = {
+            EdgeButton(
+                onClick = {},
+                buttonHeight = ButtonDefaults.EdgeButtonHeightLarge,
+                colors = buttonColors(containerColor = Color.DarkGray)
+            ) {
+                Text("Ok", textAlign = TextAlign.Center)
+            }
+        }
+    ) {
+        ScalingLazyColumn(
+            state = state,
+            modifier = Modifier.fillMaxSize(),
+            autoCentering = null,
+            contentPadding = PaddingValues(10.dp, 20.dp, 10.dp, 100.dp),
+            horizontalAlignment = Alignment.CenterHorizontally
+        ) {
+            items(10) {
+                Card(onClick = {}, modifier = Modifier.fillMaxWidth(0.9f)) { Text("Item #$it") }
+            }
+        }
+    }
+}
diff --git a/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ProgressIndicatorSample.kt b/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ProgressIndicatorSample.kt
index 7557fc9..9c732d4 100644
--- a/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ProgressIndicatorSample.kt
+++ b/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ProgressIndicatorSample.kt
@@ -45,7 +45,7 @@
 import androidx.wear.compose.material3.IconButtonDefaults
 import androidx.wear.compose.material3.MaterialTheme
 import androidx.wear.compose.material3.ProgressIndicatorDefaults
-import androidx.wear.compose.material3.ProgressIndicatorDefaults.FullScreenPadding
+import androidx.wear.compose.material3.SegmentedCircularProgressIndicator
 
 @Sampled
 @Composable
@@ -53,7 +53,7 @@
     Box(
         modifier =
             Modifier.background(MaterialTheme.colorScheme.background)
-                .padding(FullScreenPadding)
+                .padding(ProgressIndicatorDefaults.FullScreenPadding)
                 .fillMaxSize()
     ) {
         CircularProgressIndicator(
@@ -114,7 +114,7 @@
     Box(
         modifier =
             Modifier.background(MaterialTheme.colorScheme.background)
-                .padding(FullScreenPadding)
+                .padding(ProgressIndicatorDefaults.FullScreenPadding)
                 .fillMaxSize()
     ) {
         CircularProgressIndicator(
@@ -144,7 +144,7 @@
         CircularProgressIndicator(
             // Small progress values like 2% will be rounded up to at least the stroke width.
             progress = { 0.02f },
-            modifier = Modifier.fillMaxSize().padding(FullScreenPadding),
+            modifier = Modifier.fillMaxSize().padding(ProgressIndicatorDefaults.FullScreenPadding),
             startAngle = 120f,
             endAngle = 60f,
             strokeWidth = 10.dp,
@@ -156,3 +156,45 @@
         )
     }
 }
+
+@Sampled
+@Composable
+fun SegmentedProgressIndicatorSample() {
+    Box(
+        modifier =
+            Modifier.background(MaterialTheme.colorScheme.background)
+                .padding(ProgressIndicatorDefaults.FullScreenPadding)
+                .fillMaxSize()
+    ) {
+        SegmentedCircularProgressIndicator(
+            segmentCount = 5,
+            progress = { 0.5f },
+            colors =
+                ProgressIndicatorDefaults.colors(
+                    indicatorColor = Color.Green,
+                    trackColor = Color.Green.copy(alpha = 0.5f)
+                )
+        )
+    }
+}
+
+@Sampled
+@Composable
+fun SegmentedProgressIndicatorOnOffSample() {
+    Box(
+        modifier =
+            Modifier.background(MaterialTheme.colorScheme.background)
+                .padding(ProgressIndicatorDefaults.FullScreenPadding)
+                .fillMaxSize()
+    ) {
+        SegmentedCircularProgressIndicator(
+            segmentCount = 5,
+            completed = { it % 2 != 0 },
+            colors =
+                ProgressIndicatorDefaults.colors(
+                    indicatorColor = Color.Green,
+                    trackColor = Color.Green.copy(alpha = 0.5f)
+                )
+        )
+    }
+}
diff --git a/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ScrollAwaySample.kt b/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ScrollAwaySample.kt
index 0d8de7d..08d9fc6 100644
--- a/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ScrollAwaySample.kt
+++ b/wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/ScrollAwaySample.kt
@@ -25,10 +25,10 @@
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.unit.dp
+import androidx.wear.compose.foundation.ScrollInfoProvider
 import androidx.wear.compose.foundation.lazy.AutoCenteringParams
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
 import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState
-import androidx.wear.compose.foundation.toScrollAwayInfoProvider
 import androidx.wear.compose.material3.FilledTonalButton
 import androidx.wear.compose.material3.ListHeader
 import androidx.wear.compose.material3.ScreenStage
@@ -70,7 +70,7 @@
             // [Modifier.scrollAway] directly.
             modifier =
                 Modifier.scrollAway(
-                    scrollInfoProvider = state.toScrollAwayInfoProvider(),
+                    scrollInfoProvider = ScrollInfoProvider(state),
                     screenStage = {
                         if (state.isScrollInProgress) ScreenStage.Scrolling else ScreenStage.Idle
                     }
diff --git a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/EdgeButtonScreenshotTest.kt b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/EdgeButtonScreenshotTest.kt
index eee671e..d37e1e2 100644
--- a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/EdgeButtonScreenshotTest.kt
+++ b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/EdgeButtonScreenshotTest.kt
@@ -20,6 +20,7 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.text.BasicText
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
@@ -33,6 +34,7 @@
 import androidx.compose.ui.test.onNodeWithTag
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.LayoutDirection
+import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import androidx.test.filters.SdkSuppress
@@ -67,24 +69,53 @@
 
     @Test
     fun edge_button_xsmall() =
-        verifyScreenshot() { BasicEdgeButton(height = ButtonDefaults.EdgeButtonHeightExtraSmall) }
+        verifyScreenshot() {
+            BasicEdgeButton(buttonHeight = ButtonDefaults.EdgeButtonHeightExtraSmall)
+        }
 
     @Test
     fun edge_button_small() =
-        verifyScreenshot() { BasicEdgeButton(height = ButtonDefaults.EdgeButtonHeightSmall) }
+        verifyScreenshot() { BasicEdgeButton(buttonHeight = ButtonDefaults.EdgeButtonHeightSmall) }
 
     @Test
     fun edge_button_medium() =
-        verifyScreenshot() { BasicEdgeButton(height = ButtonDefaults.EdgeButtonHeightMedium) }
+        verifyScreenshot() { BasicEdgeButton(buttonHeight = ButtonDefaults.EdgeButtonHeightMedium) }
 
     @Test
     fun edge_button_large() =
-        verifyScreenshot() { BasicEdgeButton(height = ButtonDefaults.EdgeButtonHeightLarge) }
+        verifyScreenshot() { BasicEdgeButton(buttonHeight = ButtonDefaults.EdgeButtonHeightLarge) }
 
     @Test
     fun edge_button_disabled() =
         verifyScreenshot() {
-            BasicEdgeButton(height = ButtonDefaults.EdgeButtonHeightMedium, enabled = false)
+            BasicEdgeButton(buttonHeight = ButtonDefaults.EdgeButtonHeightMedium, enabled = false)
+        }
+
+    @Test
+    fun edge_button_small_space_very_limited() =
+        verifyScreenshot() {
+            BasicEdgeButton(
+                buttonHeight = ButtonDefaults.EdgeButtonHeightSmall,
+                constrainedHeight = 10.dp
+            )
+        }
+
+    @Test
+    fun edge_button_small_space_limited() =
+        verifyScreenshot() {
+            BasicEdgeButton(
+                buttonHeight = ButtonDefaults.EdgeButtonHeightSmall,
+                constrainedHeight = 30.dp
+            )
+        }
+
+    @Test
+    fun edge_button_small_slightly_limited() =
+        verifyScreenshot() {
+            BasicEdgeButton(
+                buttonHeight = ButtonDefaults.EdgeButtonHeightSmall,
+                constrainedHeight = 40.dp
+            )
         }
 
     private val LONG_TEXT =
@@ -94,23 +125,34 @@
     @Test
     fun edge_button_xsmall_long_text() =
         verifyScreenshot() {
-            BasicEdgeButton(height = ButtonDefaults.EdgeButtonHeightExtraSmall, text = LONG_TEXT)
+            BasicEdgeButton(
+                buttonHeight = ButtonDefaults.EdgeButtonHeightExtraSmall,
+                text = LONG_TEXT
+            )
         }
 
     @Test
     fun edge_button_large_long_text() =
         verifyScreenshot() {
-            BasicEdgeButton(height = ButtonDefaults.EdgeButtonHeightLarge, text = LONG_TEXT)
+            BasicEdgeButton(buttonHeight = ButtonDefaults.EdgeButtonHeightLarge, text = LONG_TEXT)
         }
 
     @Composable
-    private fun BasicEdgeButton(height: Dp, enabled: Boolean = true, text: String = "Text") {
+    private fun BasicEdgeButton(
+        buttonHeight: Dp,
+        constrainedHeight: Dp? = null,
+        enabled: Boolean = true,
+        text: String = "Text"
+    ) {
         Box(Modifier.fillMaxSize()) {
             EdgeButton(
                 onClick = { /* Do something */ },
                 enabled = enabled,
-                buttonHeight = height,
-                modifier = Modifier.align(Alignment.BottomEnd).testTag(TEST_TAG)
+                buttonHeight = buttonHeight,
+                modifier =
+                    Modifier.align(Alignment.BottomEnd)
+                        .testTag(TEST_TAG)
+                        .then(constrainedHeight?.let { Modifier.height(it) } ?: Modifier)
             ) {
                 BasicText(text)
             }
diff --git a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorScreenshotTest.kt b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorScreenshotTest.kt
index e6ad406..2cc06b3 100644
--- a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorScreenshotTest.kt
+++ b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorScreenshotTest.kt
@@ -129,6 +129,28 @@
         )
     }
 
+    @Test
+    fun segmented_progress_indicator_with_progress() = verifyScreenshot {
+        SegmentedCircularProgressIndicator(
+            progress = { 0.5f },
+            segmentCount = 5,
+            modifier = Modifier.aspectRatio(1f).testTag(TEST_TAG),
+            startAngle = 120f,
+            endAngle = 60f,
+        )
+    }
+
+    @Test
+    fun segmented_progress_indicator_on_off() = verifyScreenshot {
+        SegmentedCircularProgressIndicator(
+            segmentCount = 6,
+            completed = { it % 2 == 0 },
+            modifier = Modifier.aspectRatio(1f).testTag(TEST_TAG),
+            startAngle = 120f,
+            endAngle = 60f,
+        )
+    }
+
     private fun verifyScreenshot(content: @Composable () -> Unit) {
         rule.setContentWithTheme {
             CompositionLocalProvider(
diff --git a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorTest.kt b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorTest.kt
index b1b05a8..a78804c 100644
--- a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorTest.kt
+++ b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ProgressIndicatorTest.kt
@@ -134,8 +134,8 @@
             )
         }
         rule.waitForIdle()
-        // Color should take approximately a quarter of what it normally takes
-        // (a little bit less), eg 25% / 4 ≈ 6%.
+        // Color should take approximately a quarter of the full screen color percentages,
+        // eg 25% / 4 ≈ 6%.
         rule
             .onNodeWithTag(TEST_TAG)
             .captureToImage()
diff --git a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScaffoldTest.kt b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScaffoldTest.kt
index a5f4bc9..ab8ec90 100644
--- a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScaffoldTest.kt
+++ b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScaffoldTest.kt
@@ -19,14 +19,20 @@
 import android.os.Build
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.BoxWithConstraints
+import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.rememberLazyListState
 import androidx.compose.runtime.Composable
 import androidx.compose.testutils.assertContainsColor
 import androidx.compose.testutils.assertDoesNotContainColor
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.testTag
 import androidx.compose.ui.test.assertIsDisplayed
 import androidx.compose.ui.test.captureToImage
@@ -35,10 +41,13 @@
 import androidx.compose.ui.test.onNodeWithText
 import androidx.compose.ui.test.performTouchInput
 import androidx.compose.ui.test.swipeUp
+import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.test.filters.SdkSuppress
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
 import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState
+import com.google.common.truth.Truth.assertThat
+import junit.framework.TestCase.assertEquals
 import org.junit.Rule
 import org.junit.Test
 
@@ -154,8 +163,104 @@
         rule.onNodeWithTag(TEST_TAG).captureToImage().assertContainsColor(timeTextColor)
     }
 
+    @Test
+    fun no_initial_room_for_bottom_button() {
+        var spaceAvailable: Int = Int.MAX_VALUE
+
+        rule.setContentWithTheme {
+            // Ensure we use the same size no mater where this is run.
+            Box(Modifier.size(300.dp)) {
+                TestScreenScaffold(scrollIndicatorColor = Color.Blue, timeTextColor = Color.Red) {
+                    BoxWithConstraints {
+                        // Check how much space we have for the bottom button
+                        spaceAvailable = constraints.maxHeight
+                    }
+                }
+            }
+        }
+
+        assertEquals(0, spaceAvailable)
+    }
+
+    @Test
+    fun plenty_of_room_for_bottom_button_after_scroll() {
+        var spaceAvailable: Int = Int.MAX_VALUE
+        var expectedSpace = 0f
+
+        val screenSize = 300.dp
+        rule.setContentWithTheme {
+            // The available space is half the screen size minus half a Button height (converting
+            // dps to pixels).
+            expectedSpace =
+                with(LocalDensity.current) { ((screenSize - ButtonDefaults.Height) / 2).toPx() }
+
+            Box(Modifier.size(screenSize)) {
+                TestScreenScaffold(scrollIndicatorColor = Color.Blue, timeTextColor = Color.Red) {
+                    // Check how much space we have for the bottom button
+                    BoxWithConstraints { spaceAvailable = constraints.maxHeight }
+                }
+            }
+        }
+
+        rule.onNodeWithTag(SCROLL_TAG).performTouchInput { repeat(5) { swipeUp() } }
+        rule.waitForIdle()
+
+        // Use floats so we can specify a pixel of tolerance.
+        assertThat(spaceAvailable.toFloat()).isWithin(1f).of(expectedSpace)
+    }
+
+    @Test
+    fun no_initial_room_for_bottom_button_lc() {
+        var spaceAvailable: Int = Int.MAX_VALUE
+
+        rule.setContentWithTheme {
+            // Ensure we use the same size no mater where this is run.
+            Box(Modifier.size(300.dp)) {
+                TestBottomButtonLC() {
+                    BoxWithConstraints {
+                        // Check how much space we have for the bottom button
+                        spaceAvailable = constraints.maxHeight
+                    }
+                }
+            }
+        }
+
+        assertEquals(0, spaceAvailable)
+    }
+
+    @Test fun no_room_for_bottom_button_after_scroll_lc() = check_bottom_button_lc(0.dp)
+
+    @Test fun some_room_for_bottom_button_after_scroll_lc() = check_bottom_button_lc(50.dp)
+
+    private fun check_bottom_button_lc(verticalPadding: Dp = 0.dp) {
+        var spaceAvailable: Int = Int.MAX_VALUE
+        var expectedSpace: Float = Float.MAX_VALUE
+
+        val screenSize = 300.dp
+        rule.setContentWithTheme {
+            expectedSpace = with(LocalDensity.current) { verticalPadding.toPx() }
+
+            Box(Modifier.size(screenSize)) {
+                TestBottomButtonLC(verticalPadding) {
+                    // Check how much space we have for the bottom button
+                    BoxWithConstraints { spaceAvailable = constraints.maxHeight }
+                }
+            }
+        }
+
+        rule.onNodeWithTag(SCROLL_TAG).performTouchInput { repeat(5) { swipeUp() } }
+        rule.waitForIdle()
+
+        // Use floats so we can specify a pixel of tolerance.
+        assertThat(spaceAvailable.toFloat()).isWithin(1f).of(expectedSpace)
+    }
+
     @Composable
-    private fun TestScreenScaffold(scrollIndicatorColor: Color, timeTextColor: Color) {
+    private fun TestScreenScaffold(
+        scrollIndicatorColor: Color,
+        timeTextColor: Color,
+        bottomButton: @Composable BoxScope.() -> Unit = {}
+    ) {
         AppScaffold {
             val scrollState = rememberScalingLazyListState()
             ScreenScaffold(
@@ -169,7 +274,8 @@
                                 .background(scrollIndicatorColor)
                     )
                 },
-                timeText = { Box(Modifier.size(20.dp).background(timeTextColor)) }
+                timeText = { Box(Modifier.size(20.dp).background(timeTextColor)) },
+                bottomButton = bottomButton
             ) {
                 ScalingLazyColumn(
                     state = scrollState,
@@ -185,6 +291,34 @@
             }
         }
     }
+
+    @Composable
+    private fun TestBottomButtonLC(
+        verticalPadding: Dp = 0.dp,
+        bottomButton: @Composable BoxScope.() -> Unit = {}
+    ) {
+        AppScaffold {
+            val scrollState = rememberLazyListState()
+            ScreenScaffold(
+                modifier = Modifier.testTag(TEST_TAG),
+                scrollState = scrollState,
+                bottomButton = bottomButton
+            ) {
+                LazyColumn(
+                    state = scrollState,
+                    modifier = Modifier.fillMaxSize().background(Color.Black).testTag(SCROLL_TAG),
+                    contentPadding = PaddingValues(horizontal = 10.dp, vertical = verticalPadding)
+                ) {
+                    items(10) {
+                        Button(
+                            onClick = {},
+                            label = { Text("Item ${it + 1}") },
+                        )
+                    }
+                }
+            }
+        }
+    }
 }
 
 private const val CONTENT_MESSAGE = "The Content"
diff --git a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScrollAwayTest.kt b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScrollAwayTest.kt
index 5dfc424..90674cb 100644
--- a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScrollAwayTest.kt
+++ b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/ScrollAwayTest.kt
@@ -47,11 +47,11 @@
 import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
+import androidx.wear.compose.foundation.ScrollInfoProvider
 import androidx.wear.compose.foundation.lazy.AutoCenteringParams
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
 import androidx.wear.compose.foundation.lazy.ScalingLazyListState
 import androidx.wear.compose.foundation.lazy.rememberScalingLazyListState
-import androidx.wear.compose.foundation.toScrollAwayInfoProvider
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -199,7 +199,7 @@
                 TimeText(
                     modifier =
                         Modifier.scrollAway(
-                                scrollInfoProvider = scrollState.toScrollAwayInfoProvider(),
+                                scrollInfoProvider = ScrollInfoProvider(scrollState),
                                 screenStage = {
                                     if (scrollState.isScrollInProgress) ScreenStage.Scrolling
                                     else ScreenStage.Idle
@@ -225,7 +225,7 @@
                 TimeText(
                     modifier =
                         Modifier.scrollAway(
-                                scrollInfoProvider = scrollState.toScrollAwayInfoProvider(),
+                                scrollInfoProvider = ScrollInfoProvider(scrollState),
                                 screenStage = {
                                     if (scrollState.isScrollInProgress) ScreenStage.Scrolling
                                     else ScreenStage.Idle
@@ -256,7 +256,7 @@
                     contentColor = timeTextColor,
                     modifier =
                         Modifier.scrollAway(
-                                scrollInfoProvider = scrollState.toScrollAwayInfoProvider(),
+                                scrollInfoProvider = ScrollInfoProvider(scrollState),
                                 screenStage = {
                                     if (scrollState.isScrollInProgress) ScreenStage.Scrolling
                                     else ScreenStage.Idle
diff --git a/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/SegmentedCircularProgressIndicatorTest.kt b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/SegmentedCircularProgressIndicatorTest.kt
new file mode 100644
index 0000000..58e2c21
--- /dev/null
+++ b/wear/compose/compose-material3/src/androidTest/kotlin/androidx/wear/compose/material3/SegmentedCircularProgressIndicatorTest.kt
@@ -0,0 +1,291 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.compose.material3
+
+import android.os.Build
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.testutils.assertDoesNotContainColor
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.ProgressBarRangeInfo
+import androidx.compose.ui.semantics.progressBarRangeInfo
+import androidx.compose.ui.semantics.semantics
+import androidx.compose.ui.test.assertRangeInfoEquals
+import androidx.compose.ui.test.captureToImage
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onNodeWithTag
+import androidx.compose.ui.unit.dp
+import androidx.test.filters.SdkSuppress
+import org.junit.Rule
+import org.junit.Test
+
+class SegmentedCircularProgressIndicatorTest {
+    @get:Rule val rule = createComposeRule()
+
+    @Test
+    fun supports_testtag() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                segmentCount = 5,
+                progress = { 0.5f },
+                modifier = Modifier.testTag(TEST_TAG)
+            )
+        }
+
+        rule.onNodeWithTag(TEST_TAG).assertExists()
+    }
+
+    @Test
+    fun allows_semantics_to_be_added_correctly() {
+        val progress = mutableStateOf(0f)
+
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                progress = { progress.value },
+                segmentCount = 5,
+                modifier =
+                    Modifier.testTag(TEST_TAG).semantics {
+                        progressBarRangeInfo = ProgressBarRangeInfo(progress.value, 0f..1f)
+                    },
+            )
+        }
+
+        rule.onNodeWithTag(TEST_TAG).assertRangeInfoEquals(ProgressBarRangeInfo(0f, 0f..1f))
+
+        rule.runOnIdle { progress.value = 0.5f }
+
+        rule.onNodeWithTag(TEST_TAG).assertRangeInfoEquals(ProgressBarRangeInfo(0.5f, 0f..1f))
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun progress_full_contains_progress_color() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                progress = { 1f },
+                segmentCount = 5,
+                modifier = Modifier.testTag(TEST_TAG),
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+            )
+        }
+        rule.waitForIdle()
+        // by default fully filled progress approximately takes 25% of the control.
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Yellow, 20f..25f)
+        rule.onNodeWithTag(TEST_TAG).captureToImage().assertDoesNotContainColor(Color.Red)
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun progress_zero_contains_track_color() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                progress = { 0f },
+                segmentCount = 5,
+                modifier = Modifier.testTag(TEST_TAG),
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+            )
+        }
+        rule.waitForIdle()
+        rule.onNodeWithTag(TEST_TAG).captureToImage().assertDoesNotContainColor(Color.Yellow)
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Red, 20f..25f)
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun change_start_end_angle() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                progress = { 0.5f },
+                segmentCount = 5,
+                modifier = Modifier.testTag(TEST_TAG),
+                startAngle = 0f,
+                endAngle = 180f,
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+            )
+        }
+        rule.waitForIdle()
+        // Color should take approximately a quarter of the full screen color percentages,
+        // eg 25% / 4 ≈ 6%.
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Yellow, 4f..8f)
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Red, 4f..8f)
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun set_small_stroke_width() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                progress = { 0.5f },
+                segmentCount = 5,
+                modifier = Modifier.testTag(TEST_TAG),
+                strokeWidth = 4.dp,
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+            )
+        }
+        rule.waitForIdle()
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Yellow, 2f..6f)
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Red, 2f..6f)
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun set_large_stroke_width() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                progress = { 0.5f },
+                segmentCount = 5,
+                modifier = Modifier.testTag(TEST_TAG),
+                strokeWidth = 36.dp,
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+            )
+        }
+        rule.waitForIdle()
+        // Because of the stroke cap, progress color takes same amount as track color.
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Yellow, 15f..20f)
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Red, 15f..20f)
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun set_segments_on_off() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                segmentCount = 6,
+                completed = { it % 2 != 0 },
+                modifier = Modifier.testTag(TEST_TAG),
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+                strokeWidth = 36.dp,
+            )
+        }
+
+        rule.waitForIdle()
+        // Because of the stroke cap, progress color takes same amount as track color.
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Yellow, 15f..20f)
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Red, 15f..20f)
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun set_segments_all_on() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                segmentCount = 6,
+                completed = { true },
+                modifier = Modifier.testTag(TEST_TAG),
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+            )
+        }
+
+        rule.waitForIdle()
+        rule.onNodeWithTag(TEST_TAG).captureToImage().assertDoesNotContainColor(Color.Red)
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Yellow, 20f..25f)
+    }
+
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
+    @Test
+    fun set_segments_all_off() {
+        setContentWithTheme {
+            SegmentedCircularProgressIndicator(
+                segmentCount = 6,
+                completed = { false },
+                modifier = Modifier.testTag(TEST_TAG),
+                colors =
+                    ProgressIndicatorDefaults.colors(
+                        indicatorColor = Color.Yellow,
+                        trackColor = Color.Red
+                    ),
+            )
+        }
+
+        rule.waitForIdle()
+        rule.onNodeWithTag(TEST_TAG).captureToImage().assertDoesNotContainColor(Color.Yellow)
+        rule
+            .onNodeWithTag(TEST_TAG)
+            .captureToImage()
+            .assertColorInPercentageRange(Color.Red, 20f..25f)
+    }
+
+    private fun setContentWithTheme(composable: @Composable BoxScope.() -> Unit) {
+        // Use constant size modifier to limit relative color percentage ranges.
+        rule.setContentWithTheme(modifier = Modifier.size(204.dp), composable = composable)
+    }
+}
diff --git a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/EdgeButton.kt b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/EdgeButton.kt
index c95871c..da576d4 100644
--- a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/EdgeButton.kt
+++ b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/EdgeButton.kt
@@ -58,6 +58,8 @@
 import androidx.compose.ui.platform.LocalConfiguration
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.Dp
@@ -97,6 +99,10 @@
  * Example of an [EdgeButton]:
  *
  * @sample androidx.wear.compose.material3.samples.EdgeButtonSample
+ *
+ * For a sample integrating with ScalingLazyColumn, see:
+ *
+ * @sample androidx.wear.compose.material3.samples.EdgeButtonListSample
  * @param onClick Will be called when the user clicks the button
  * @param modifier Modifier to be applied to the button. When animating the button to appear/
  *   disappear from the screen, a Modifier.height can be used to change the height of the component,
@@ -155,7 +161,7 @@
         horizontalArrangement = Arrangement.Center,
         modifier =
             modifier
-                .padding(bottom = BOTTOM_PADDING)
+                .padding(vertical = VERTICAL_PADDING)
                 .layout { measurable, constraints ->
                     // Compute the actual size of the button, and save it for later.
                     // We take the max width available, and the height is determined by the
@@ -233,6 +239,9 @@
             provideScopeContent(
                 colors.contentColor(enabled = enabled),
                 MaterialTheme.typography.labelMedium,
+                TextOverflow.Ellipsis,
+                maxLines = 3, // TODO(): Change according to buttonHeight
+                TextAlign.Center,
                 content
             )
     )
@@ -264,7 +273,7 @@
 internal class ShapeHelper(private val density: Density) {
     private val extraSmallHeightPx =
         with(density) { ButtonDefaults.EdgeButtonHeightExtraSmall.toPx() }
-    private val bottomPaddingPx = with(density) { BOTTOM_PADDING.toPx() }
+    private val bottomPaddingPx = with(density) { VERTICAL_PADDING.toPx() }
     private val extraSmallEllipsisHeightPx = with(density) { EXTRA_SMALL_ELLIPSIS_HEIGHT.toPx() }
     private val targetSidePadding = with(density) { TARGET_SIDE_PADDING.toPx() }
 
@@ -439,5 +448,5 @@
 // straight line parallel to the x axis.
 private val TARGET_SIDE_PADDING = 20.dp
 
-// Padding between the Edge Button and the bottom of the screen
-private val BOTTOM_PADDING = 3.dp
+// Padding around the Edge Button on it's top and bottom.
+private val VERTICAL_PADDING = 3.dp
diff --git a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ProgressIndicator.kt b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ProgressIndicator.kt
index 0362590..7290311 100644
--- a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ProgressIndicator.kt
+++ b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ProgressIndicator.kt
@@ -34,8 +34,6 @@
 import androidx.compose.ui.semantics.clearAndSetSemantics
 import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
-import androidx.wear.compose.material3.ProgressIndicatorDefaults.StartAngle
-import androidx.wear.compose.material3.ProgressIndicatorDefaults.StrokeWidth
 import androidx.wear.compose.material3.tokens.ColorSchemeKeyTokens
 import androidx.wear.compose.materialcore.toRadians
 import kotlin.math.asin
@@ -85,10 +83,10 @@
 fun CircularProgressIndicator(
     progress: () -> Float,
     modifier: Modifier = Modifier,
-    startAngle: Float = StartAngle,
+    startAngle: Float = ProgressIndicatorDefaults.StartAngle,
     endAngle: Float = startAngle,
     colors: ProgressIndicatorColors = ProgressIndicatorDefaults.colors(),
-    strokeWidth: Dp = StrokeWidth,
+    strokeWidth: Dp = ProgressIndicatorDefaults.StrokeWidth,
     gapSize: Dp = ProgressIndicatorDefaults.gapSize(strokeWidth),
 ) {
     val coercedProgress = { progress().coerceIn(0f, 1f) }
@@ -264,7 +262,7 @@
  *
  * If indicator gets too small, the circle that proportionally scales down is drawn instead.
  */
-private fun DrawScope.drawIndicatorSegment(
+internal fun DrawScope.drawIndicatorSegment(
     startAngle: Float,
     sweep: Float,
     gapSweep: Float,
diff --git a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScreenScaffold.kt b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScreenScaffold.kt
index 1842f55..c88b35f 100644
--- a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScreenScaffold.kt
+++ b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScreenScaffold.kt
@@ -35,11 +35,21 @@
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.graphicsLayer
+import androidx.compose.ui.layout.Measurable
+import androidx.compose.ui.layout.MeasureResult
+import androidx.compose.ui.layout.MeasureScope
+import androidx.compose.ui.node.LayoutModifierNode
+import androidx.compose.ui.node.ModifierNodeElement
+import androidx.compose.ui.platform.InspectorInfo
+import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.IntOffset
 import androidx.wear.compose.foundation.ActiveFocusListener
 import androidx.wear.compose.foundation.ScrollInfoProvider
 import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
 import androidx.wear.compose.foundation.lazy.ScalingLazyListState
-import androidx.wear.compose.foundation.toScrollAwayInfoProvider
+import kotlin.math.roundToInt
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.launch
@@ -53,6 +63,9 @@
  * [ScreenScaffold] displays the [ScrollIndicator] at the center-end of the screen by default and
  * coordinates showing/hiding [TimeText] and [ScrollIndicator] according to [scrollState].
  *
+ * This version of [ScreenScaffold] has a special slot for a button at the bottom, that grows and
+ * shrinks to take the available space after the scrollable content.
+ *
  * Example of using AppScaffold and ScreenScaffold:
  *
  * @sample androidx.wear.compose.material3.samples.ScaffoldSample
@@ -65,6 +78,9 @@
  * @param scrollIndicator The [ScrollIndicator] to display on this screen, which is expected to be
  *   aligned to Center-End. It is recommended to use the Material3 [ScrollIndicator] which is
  *   provided by default. No scroll indicator is displayed if null is passed.
+ * @param bottomButton Optional slot for a Button (usually an [EdgeButton]) that takes the available
+ *   space below a scrolling list. It will scale up and fade in when the user scrolls to the end of
+ *   the list, and scale down and fade out as the user scrolls up.
  * @param content The body content for this screen.
  */
 @Composable
@@ -75,15 +91,27 @@
     scrollIndicator: (@Composable BoxScope.() -> Unit)? = {
         ScrollIndicator(scrollState, modifier = Modifier.align(Alignment.CenterEnd))
     },
+    bottomButton: (@Composable BoxScope.() -> Unit)? = null,
     content: @Composable BoxScope.() -> Unit,
 ) =
-    ScreenScaffold(
-        modifier,
-        timeText,
-        scrollState.toScrollAwayInfoProvider(),
-        scrollIndicator,
-        content
-    )
+    if (bottomButton != null) {
+        ScreenScaffold(
+            bottomButton,
+            ScrollInfoProvider(scrollState),
+            modifier,
+            timeText,
+            scrollIndicator,
+            content
+        )
+    } else {
+        ScreenScaffold(
+            modifier,
+            timeText,
+            ScrollInfoProvider(scrollState),
+            scrollIndicator,
+            content
+        )
+    }
 
 /**
  * [ScreenScaffold] is one of the Wear Material3 scaffold components.
@@ -94,6 +122,9 @@
  * [ScreenScaffold] displays the [ScrollIndicator] at the center-end of the screen by default and
  * coordinates showing/hiding [TimeText] and [ScrollIndicator] according to [scrollState].
  *
+ * This version of [ScreenScaffold] has a special slot for a button at the bottom, that grows and
+ * shrinks to take the available space after the scrollable content.
+ *
  * Example of using AppScaffold and ScreenScaffold:
  *
  * @sample androidx.wear.compose.material3.samples.ScaffoldSample
@@ -106,25 +137,93 @@
  * @param scrollIndicator The [ScrollIndicator] to display on this screen, which is expected to be
  *   aligned to Center-End. It is recommended to use the Material3 [ScrollIndicator] which is
  *   provided by default. No scroll indicator is displayed if null is passed.
+ * @param bottomButton Optional slot for a Button (usually an [EdgeButton]) that takes the available
+ *   space below a scrolling list. It will scale up and fade in when the user scrolls to the end of
+ *   the list, and scale down and fade out as the user scrolls up.
  * @param content The body content for this screen.
  */
 @Composable
 fun ScreenScaffold(
     scrollState: LazyListState,
     modifier: Modifier = Modifier,
+    scrollIndicator: @Composable BoxScope.() -> Unit = {
+        ScrollIndicator(scrollState, modifier = Modifier.align(Alignment.CenterEnd))
+    },
+    timeText: (@Composable () -> Unit)? = null,
+    bottomButton: (@Composable BoxScope.() -> Unit)? = null,
+    content: @Composable BoxScope.() -> Unit,
+) =
+    if (bottomButton != null) {
+        ScreenScaffold(
+            bottomButton,
+            ScrollInfoProvider(scrollState),
+            modifier,
+            timeText,
+            scrollIndicator,
+            content
+        )
+    } else {
+        ScreenScaffold(
+            modifier,
+            timeText,
+            ScrollInfoProvider(scrollState),
+            scrollIndicator,
+            content
+        )
+    }
+
+/**
+ * [ScreenScaffold] is one of the Wear Material3 scaffold components.
+ *
+ * The scaffold components [AppScaffold] and [ScreenScaffold] lay out the structure of a screen and
+ * coordinate transitions of the [ScrollIndicator] and [TimeText] components.
+ *
+ * [ScreenScaffold] displays the [ScrollIndicator] at the center-end of the screen by default and
+ * coordinates showing/hiding [TimeText] and [ScrollIndicator] according to [scrollState].
+ *
+ * This version of [ScreenScaffold] has a special slot for a button at the bottom, that grows and
+ * shrinks to take the available space after the scrollable content.
+ *
+ * Example of using AppScaffold and ScreenScaffold:
+ *
+ * @sample androidx.wear.compose.material3.samples.ScaffoldSample
+ * @param scrollState The scroll state for a Column, used to drive screen transitions such as
+ *   [TimeText] scroll away and showing/hiding [ScrollIndicator].
+ * @param bottomButton Optional slot for a Button (usually an [EdgeButton]) that takes the available
+ *   space below a scrolling list. It will scale up and fade in when the user scrolls to the end of
+ *   the list, and scale down and fade out as the user scrolls up.
+ * @param bottomButtonHeight the maximum height of the space taken by the bottom button.
+ * @param modifier The modifier for the screen scaffold.
+ * @param timeText Time text (both time and potentially status message) for this screen, if
+ *   different to the time text at the [AppScaffold] level. When null, the time text from the
+ *   [AppScaffold] is displayed for this screen.
+ * @param scrollIndicator The [ScrollIndicator] to display on this screen, which is expected to be
+ *   aligned to Center-End. It is recommended to use the Material3 [ScrollIndicator] which is
+ *   provided by default. No scroll indicator is displayed if null is passed.
+ * @param content The body content for this screen.
+ */
+@Composable
+fun ScreenScaffold(
+    scrollState: ScrollState,
+    bottomButton: @Composable BoxScope.() -> Unit,
+    bottomButtonHeight: Dp,
+    modifier: Modifier = Modifier,
     timeText: (@Composable () -> Unit)? = null,
     scrollIndicator: (@Composable BoxScope.() -> Unit)? = {
         ScrollIndicator(scrollState, modifier = Modifier.align(Alignment.CenterEnd))
     },
     content: @Composable BoxScope.() -> Unit,
-) =
+) {
+    val bottomButtonHeightPx = with(LocalDensity.current) { bottomButtonHeight.toPx() }
     ScreenScaffold(
+        bottomButton,
+        ScrollInfoProvider(scrollState, bottomButtonHeightPx),
         modifier,
         timeText,
-        scrollState.toScrollAwayInfoProvider(),
         scrollIndicator,
         content
     )
+}
 
 /**
  * [ScreenScaffold] is one of the Wear Material3 scaffold components.
@@ -158,13 +257,64 @@
         ScrollIndicator(scrollState, modifier = Modifier.align(Alignment.CenterEnd))
     },
     content: @Composable BoxScope.() -> Unit,
+) = ScreenScaffold(modifier, timeText, ScrollInfoProvider(scrollState), scrollIndicator, content)
+
+/**
+ * [ScreenScaffold] is one of the Wear Material3 scaffold components.
+ *
+ * The scaffold components [AppScaffold] and [ScreenScaffold] lay out the structure of a screen and
+ * coordinate transitions of the [ScrollIndicator] and [TimeText] components.
+ *
+ * [ScreenScaffold] displays the [ScrollIndicator] at the center-end of the screen by default and
+ * coordinates showing/hiding [TimeText], [ScrollIndicator] and the bottom button according to a
+ * [scrollInfoProvider].
+ *
+ * This version of [ScreenScaffold] has a special slot for a button at the bottom, that grows and
+ * shrinks to take the available space after the scrollable content. In this overload, both
+ * bottomButton and scrollInfoProvider must be specified.
+ *
+ * Example of using AppScaffold and ScreenScaffold:
+ *
+ * @sample androidx.wear.compose.material3.samples.ScaffoldSample
+ * @param bottomButton slot for a Button (usually an [EdgeButton]) that takes the available space
+ *   below a scrolling list. It will scale up and fade in when the user scrolls to the end of the
+ *   list, and scale down and fade out as the user scrolls up.
+ * @param scrollInfoProvider Provider for scroll information used to scroll away screen elements
+ *   such as [TimeText] and coordinate showing/hiding the [ScrollIndicator], this needs to be a
+ *   [ScrollInfoProvider].
+ * @param modifier The modifier for the screen scaffold.
+ * @param timeText Time text (both time and potentially status message) for this screen, if
+ *   different to the time text at the [AppScaffold] level. When null, the time text from the
+ *   [AppScaffold] is displayed for this screen.
+ * @param scrollIndicator The [ScrollIndicator] to display on this screen, which is expected to be
+ *   aligned to Center-End. It is recommended to use the Material3 [ScrollIndicator] which is
+ *   provided by default. No scroll indicator is displayed if null is passed.
+ * @param content The body content for this screen.
+ */
+@Composable
+fun ScreenScaffold(
+    bottomButton: @Composable BoxScope.() -> Unit,
+    scrollInfoProvider: ScrollInfoProvider,
+    modifier: Modifier = Modifier,
+    timeText: (@Composable () -> Unit)? = null,
+    scrollIndicator: (@Composable BoxScope.() -> Unit)? = null,
+    content: @Composable BoxScope.() -> Unit,
 ) =
     ScreenScaffold(
         modifier,
         timeText,
-        scrollState.toScrollAwayInfoProvider(),
+        scrollInfoProvider,
         scrollIndicator,
-        content
+        content = {
+            content()
+            Box(
+                Modifier.align(Alignment.BottomCenter).dynamicHeight {
+                    scrollInfoProvider.lastItemOffset.coerceAtLeast(0f)
+                },
+                contentAlignment = Alignment.BottomCenter,
+                content = bottomButton
+            )
+        }
     )
 
 /**
@@ -261,3 +411,54 @@
         )
     }
 }
+
+// Sets the height that will be used down the line, using a state as parameter, to avoid
+// recompositions when the height changes.
+internal fun Modifier.dynamicHeight(heightState: () -> Float) =
+    this.then(DynamicHeightElement(heightState))
+
+// Following classes 'inspired' by 'WrapContentElement' / 'WrapContentNode'
+private class DynamicHeightElement(val heightState: () -> Float) :
+    ModifierNodeElement<DynamicHeightNode>() {
+    override fun create(): DynamicHeightNode = DynamicHeightNode(heightState)
+
+    override fun update(node: DynamicHeightNode) {
+        node.heightState = heightState
+    }
+
+    override fun InspectorInfo.inspectableProperties() {
+        name = "MyHeightElement"
+    }
+
+    override fun equals(other: Any?) =
+        other is DynamicHeightElement && heightState === other.heightState
+
+    override fun hashCode() = heightState.hashCode()
+}
+
+private class DynamicHeightNode(var heightState: () -> Float) :
+    LayoutModifierNode, Modifier.Node() {
+    override fun MeasureScope.measure(
+        measurable: Measurable,
+        constraints: Constraints
+    ): MeasureResult {
+        // Similar to .fillMaxWidth().height(heightState.value) but we observe the state in the
+        // measurement pass, not on Composition.
+        val height = heightState().roundToInt()
+
+        val wrappedConstraints =
+            Constraints(constraints.maxWidth, constraints.maxWidth, height, height)
+        val placeable = measurable.measure(wrappedConstraints)
+        // Report that we take the full space, and BottomCenter align the content.
+        val wrapperWidth = constraints.maxWidth
+        val wrapperHeight = constraints.maxHeight
+        return layout(wrapperWidth, wrapperHeight) {
+            val position =
+                IntOffset(
+                    x = (wrapperWidth - placeable.width) / 2,
+                    y = wrapperHeight - placeable.height
+                )
+            placeable.place(position)
+        }
+    }
+}
diff --git a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScrollAway.kt b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScrollAway.kt
index b561f85..7239dbe 100644
--- a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScrollAway.kt
+++ b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/ScrollAway.kt
@@ -33,7 +33,6 @@
 import androidx.compose.ui.util.lerp
 import androidx.wear.compose.foundation.ScrollInfoProvider
 import androidx.wear.compose.foundation.lazy.ScalingLazyListState
-import androidx.wear.compose.foundation.toScrollAwayInfoProvider
 import androidx.wear.compose.material3.tokens.MotionTokens
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
@@ -48,8 +47,8 @@
  *
  * @sample androidx.wear.compose.material3.samples.ScrollAwaySample
  * @param scrollInfoProvider Used as the basis for the scroll-away implementation, based on the
- *   state of the scrollable container. See [toScrollAwayInfoProvider] extension methods for
- *   creating a ScrollAwayInfoProvider from common lists such as [ScalingLazyListState].
+ *   state of the scrollable container. See [ScrollInfoProvider] methods for creating a
+ *   ScrollInfoProvider from common lists such as [ScalingLazyListState].
  * @param screenStage Function that returns the screen stage of the active screen. Scrolled away
  *   items are shown when the screen is new, then scrolled away or hidden when scrolling, and
  *   finally shown again when idle.
diff --git a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/SegmentedCircularProgressIndicator.kt b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/SegmentedCircularProgressIndicator.kt
new file mode 100644
index 0000000..edd8780
--- /dev/null
+++ b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/SegmentedCircularProgressIndicator.kt
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.compose.material3
+
+import androidx.annotation.IntRange
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.drawWithCache
+import androidx.compose.ui.graphics.StrokeCap
+import androidx.compose.ui.graphics.drawscope.Stroke
+import androidx.compose.ui.semantics.clearAndSetSemantics
+import androidx.compose.ui.unit.Dp
+import kotlin.math.asin
+import kotlin.math.floor
+import kotlin.math.min
+
+/**
+ * Material Design segmented circular progress indicator.
+ *
+ * A segmented variant of [CircularProgressIndicator] that is divided into equally sized segments.
+ *
+ * Example of [SegmentedCircularProgressIndicator] with progress value:
+ *
+ * @sample androidx.wear.compose.material3.samples.SegmentedProgressIndicatorSample
+ * @param segmentCount Number of equal segments that the progress indicator should be divided into.
+ *   Has to be a number equal or greater to 1.
+ * @param progress The progress of this progress indicator where 0.0 represents no progress and 1.0
+ *   represents completion. Values outside of this range are coerced into the range 0..1. The
+ *   progress is applied to the entire [SegmentedCircularProgressIndicator] across all segments.
+ * @param modifier Modifier to be applied to the SegmentedCircularProgressIndicator.
+ * @param startAngle The starting position of the progress arc, measured clockwise in degrees (0
+ *   to 360) from the 3 o'clock position. For example, 0 and 360 represent 3 o'clock, 90 and 180
+ *   represent 6 o'clock and 9 o'clock respectively. Default is 270 degrees
+ *   [ProgressIndicatorDefaults.StartAngle] (top of the screen).
+ * @param endAngle The ending position of the progress arc, measured clockwise in degrees (0 to 360)
+ *   from the 3 o'clock position. For example, 0 and 360 represent 3 o'clock, 90 and 180 represent 6
+ *   o'clock and 9 o'clock respectively. By default equal to [startAngle].
+ * @param colors [ProgressIndicatorColors] that will be used to resolve the indicator and track
+ *   color for this progress indicator in different states.
+ * @param strokeWidth The stroke width for the progress indicator.
+ * @param gapSize The size of the gap between segments (in Dp).
+ */
+@Composable
+fun SegmentedCircularProgressIndicator(
+    @IntRange(from = 1) segmentCount: Int,
+    progress: () -> Float,
+    modifier: Modifier = Modifier,
+    startAngle: Float = ProgressIndicatorDefaults.StartAngle,
+    endAngle: Float = startAngle,
+    colors: ProgressIndicatorColors = ProgressIndicatorDefaults.colors(),
+    strokeWidth: Dp = ProgressIndicatorDefaults.StrokeWidth,
+    gapSize: Dp = ProgressIndicatorDefaults.gapSize(strokeWidth),
+) =
+    SegmentedCircularProgressIndicatorImpl(
+        segmentParams = SegmentParams.Progress(progress),
+        modifier = modifier,
+        segmentCount = segmentCount,
+        startAngle = startAngle,
+        endAngle = endAngle,
+        colors = colors,
+        strokeWidth = strokeWidth,
+        gapSize = gapSize,
+    )
+
+/**
+ * Material Design segmented circular progress indicator.
+ *
+ * A segmented variant of [CircularProgressIndicator] that is divided into equally sized segments.
+ * This overload of [SegmentedCircularProgressIndicator] allows for each segment to be individually
+ * indicated as completed, such as for showing activity for intervals within a longer period
+ *
+ * Example of [SegmentedCircularProgressIndicator] where the segments are turned on/off:
+ *
+ * @sample androidx.wear.compose.material3.samples.SegmentedProgressIndicatorOnOffSample
+ * @param segmentCount Number of equal segments that the progress indicator should be divided into.
+ *   Has to be a number equal or greater to 1.
+ * @param completed A function that for each segment between 1..[segmentCount] returns true if this
+ *   segment has been completed, and false if this segment has not been completed.
+ * @param modifier Modifier to be applied to the SegmentedCircularProgressIndicator.
+ * @param startAngle The starting position of the progress arc, measured clockwise in degrees (0
+ *   to 360) from the 3 o'clock position. For example, 0 and 360 represent 3 o'clock, 90 and 180
+ *   represent 6 o'clock and 9 o'clock respectively. Default is 270 degrees
+ *   [ProgressIndicatorDefaults.StartAngle] (top of the screen).
+ * @param endAngle The ending position of the progress arc, measured clockwise in degrees (0 to 360)
+ *   from the 3 o'clock position. For example, 0 and 360 represent 3 o'clock, 90 and 180 represent 6
+ *   o'clock and 9 o'clock respectively. By default equal to [startAngle].
+ * @param colors [ProgressIndicatorColors] that will be used to resolve the indicator and track
+ *   color for this progress indicator in different states.
+ * @param strokeWidth The stroke width for the progress indicator.
+ * @param gapSize The size of the gap between segments (in Dp).
+ */
+@Composable
+fun SegmentedCircularProgressIndicator(
+    @IntRange(from = 1) segmentCount: Int,
+    completed: (segmentIndex: Int) -> Boolean,
+    modifier: Modifier = Modifier,
+    startAngle: Float = ProgressIndicatorDefaults.StartAngle,
+    endAngle: Float = startAngle,
+    colors: ProgressIndicatorColors = ProgressIndicatorDefaults.colors(),
+    strokeWidth: Dp = ProgressIndicatorDefaults.StrokeWidth,
+    gapSize: Dp = ProgressIndicatorDefaults.gapSize(strokeWidth),
+) =
+    SegmentedCircularProgressIndicatorImpl(
+        segmentParams = SegmentParams.Completed(completed),
+        modifier = modifier,
+        segmentCount = segmentCount,
+        startAngle = startAngle,
+        endAngle = endAngle,
+        colors = colors,
+        strokeWidth = strokeWidth,
+        gapSize = gapSize,
+    )
+
+@Composable
+private fun SegmentedCircularProgressIndicatorImpl(
+    segmentParams: SegmentParams,
+    @IntRange(from = 1) segmentCount: Int,
+    modifier: Modifier,
+    startAngle: Float,
+    endAngle: Float,
+    colors: ProgressIndicatorColors,
+    strokeWidth: Dp,
+    gapSize: Dp,
+) {
+    Spacer(
+        modifier
+            .clearAndSetSemantics {}
+            .fillMaxSize()
+            .drawWithCache {
+                onDrawWithContent {
+                    val fullSweep = 360f - ((startAngle - endAngle) % 360 + 360) % 360
+                    val stroke = Stroke(width = strokeWidth.toPx(), cap = StrokeCap.Round)
+                    val minSize = min(size.height, size.width)
+                    // Sweep angle between two progress indicator segments.
+                    val gapSweep =
+                        asin((stroke.width + gapSize.toPx()) / (minSize - stroke.width))
+                            .toDegrees() * 2f
+                    val segmentSweepAngle =
+                        if (segmentCount > 1) fullSweep / segmentCount - gapSweep else fullSweep
+
+                    for (segment in 0 until segmentCount) {
+                        val segmentStartAngle =
+                            startAngle +
+                                fullSweep * segment / segmentCount +
+                                (if (segmentCount > 1) gapSweep / 2 else 0f)
+
+                        when (segmentParams) {
+                            is SegmentParams.Completed -> {
+                                val color =
+                                    if (segmentParams.completed(segment)) colors.indicatorBrush
+                                    else colors.trackBrush
+
+                                drawIndicatorSegment(
+                                    startAngle = segmentStartAngle,
+                                    sweep = segmentSweepAngle,
+                                    gapSweep = 0f,
+                                    brush = color,
+                                    stroke = stroke
+                                )
+                            }
+                            is SegmentParams.Progress -> {
+                                val progressInSegments =
+                                    segmentCount * segmentParams.progress().coerceIn(0f, 1f)
+
+                                if (segment >= floor(progressInSegments)) {
+                                    drawIndicatorSegment(
+                                        startAngle = segmentStartAngle,
+                                        sweep = segmentSweepAngle,
+                                        gapSweep = 0f, // Overlay, no gap
+                                        brush = colors.trackBrush,
+                                        stroke = stroke
+                                    )
+                                }
+                                if (segment < progressInSegments) {
+                                    val progressSweepAngle =
+                                        segmentSweepAngle *
+                                            (progressInSegments - segment).coerceAtMost(1f)
+
+                                    drawIndicatorSegment(
+                                        startAngle = segmentStartAngle,
+                                        sweep = progressSweepAngle,
+                                        gapSweep = 0f, // Overlay, no gap
+                                        brush = colors.indicatorBrush,
+                                        stroke = stroke
+                                    )
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+    )
+}
+
+private sealed interface SegmentParams {
+    data class Completed(val completed: (segmentIndex: Int) -> Boolean) : SegmentParams
+
+    data class Progress(val progress: () -> Float) : SegmentParams
+}
diff --git a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/SwitchButton.kt b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/SwitchButton.kt
index eddc0b9..e5ca690 100644
--- a/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/SwitchButton.kt
+++ b/wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/SwitchButton.kt
@@ -23,24 +23,35 @@
 import androidx.compose.animation.core.updateTransition
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
+import androidx.compose.foundation.clickable
 import androidx.compose.foundation.interaction.Interaction
 import androidx.compose.foundation.interaction.MutableInteractionSource
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.IntrinsicSize
 import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.defaultMinSize
+import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.layout.wrapContentSize
+import androidx.compose.foundation.selection.toggleable
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Immutable
 import androidx.compose.runtime.State
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
 import androidx.compose.ui.draw.drawBehind
+import androidx.compose.ui.draw.drawWithCache
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
@@ -52,9 +63,11 @@
 import androidx.compose.ui.semantics.semantics
 import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.unit.Dp
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.util.lerp
 import androidx.wear.compose.material3.tokens.MotionTokens
+import androidx.wear.compose.material3.tokens.ShapeTokens
 import androidx.wear.compose.material3.tokens.SplitSwitchButtonTokens
 import androidx.wear.compose.material3.tokens.SwitchButtonTokens
 import androidx.wear.compose.materialcore.SelectionStage
@@ -253,21 +266,85 @@
     contentPadding: PaddingValues = SwitchButtonDefaults.ContentPadding,
     secondaryLabel: @Composable (RowScope.() -> Unit)? = null,
     label: @Composable RowScope.() -> Unit
-) =
-    androidx.wear.compose.materialcore.SplitToggleButton(
-        checked = checked,
-        onCheckedChange = onCheckedChange,
-        label =
-            provideScopeContent(
-                contentColor = colors.contentColor(enabled = enabled, checked = checked),
-                textStyle = SplitSwitchButtonTokens.LabelFont.value,
-                overflow = TextOverflow.Ellipsis,
-                maxLines = 3,
-                textAlign = TextAlign.Start,
-                content = label
-            ),
-        onClick = onContainerClick,
-        toggleControl = {
+) {
+    val containerColor = colors.containerColor(enabled, checked).value
+
+    Row(
+        verticalAlignment = Alignment.CenterVertically,
+        modifier =
+            modifier
+                .defaultMinSize(minHeight = MIN_HEIGHT)
+                .height(IntrinsicSize.Min)
+                .width(IntrinsicSize.Max)
+                .clip(shape = shape)
+    ) {
+        Row(
+            modifier =
+                Modifier.clickable(
+                        enabled = enabled,
+                        onClick = onContainerClick,
+                        indication = ripple(),
+                        interactionSource = containerInteractionSource,
+                        onClickLabel = containerClickLabel,
+                    )
+                    .semantics { role = Role.Button }
+                    .fillMaxHeight()
+                    .clip(SPLIT_SECTIONS_SHAPE)
+                    .background(containerColor)
+                    .padding(contentPadding)
+                    .weight(1.0f),
+            verticalAlignment = Alignment.CenterVertically,
+        ) {
+            Labels(
+                label =
+                    provideScopeContent(
+                        contentColor = colors.contentColor(enabled = enabled, checked = checked),
+                        textStyle = SplitSwitchButtonTokens.LabelFont.value,
+                        overflow = TextOverflow.Ellipsis,
+                        maxLines = 3,
+                        textAlign = TextAlign.Start,
+                        content = label
+                    ),
+                secondaryLabel =
+                    provideNullableScopeContent(
+                        contentColor =
+                            colors.secondaryContentColor(enabled = enabled, checked = checked),
+                        textStyle = SplitSwitchButtonTokens.SecondaryLabelFont.value,
+                        overflow = TextOverflow.Ellipsis,
+                        maxLines = 2,
+                        textAlign = TextAlign.Start,
+                        content = secondaryLabel
+                    ),
+                spacerSize = SwitchButtonDefaults.LabelSpacerSize
+            )
+        }
+
+        Spacer(modifier = Modifier.size(2.dp))
+
+        val splitBackground = colors.splitContainerColor(enabled, checked).value
+        Box(
+            modifier =
+                Modifier.toggleable(
+                        enabled = enabled,
+                        value = checked,
+                        onValueChange = onCheckedChange,
+                        indication = ripple(),
+                        interactionSource = toggleInteractionSource
+                    )
+                    .fillMaxHeight()
+                    .clip(SPLIT_SECTIONS_SHAPE)
+                    .background(containerColor)
+                    .drawWithCache {
+                        onDrawWithContent {
+                            drawRect(color = splitBackground)
+                            drawContent()
+                        }
+                    }
+                    .align(Alignment.CenterVertically)
+                    .width(SPLIT_WIDTH)
+                    .wrapContentHeight(align = Alignment.CenterVertically)
+                    .padding(contentPadding)
+        ) {
             Switch(
                 checked = checked,
                 enabled = enabled,
@@ -290,33 +367,9 @@
                     colors.trackBorderColor(enabled = enabled, checked = checked)
                 }
             )
-        },
-        selectionControl = null,
-        modifier = modifier.defaultMinSize(minHeight = MIN_HEIGHT).height(IntrinsicSize.Min),
-        secondaryLabel =
-            provideNullableScopeContent(
-                contentColor = colors.secondaryContentColor(enabled = enabled, checked = checked),
-                textStyle = SplitSwitchButtonTokens.SecondaryLabelFont.value,
-                overflow = TextOverflow.Ellipsis,
-                maxLines = 2,
-                textAlign = TextAlign.Start,
-                content = secondaryLabel
-            ),
-        backgroundColor = { isEnabled, isChecked ->
-            colors.containerColor(enabled = isEnabled, checked = isChecked)
-        },
-        splitBackgroundColor = { isEnabled, isChecked ->
-            colors.splitContainerColor(enabled = isEnabled, checked = isChecked)
-        },
-        enabled = enabled,
-        checkedInteractionSource = toggleInteractionSource,
-        clickInteractionSource = containerInteractionSource,
-        onClickLabel = containerClickLabel,
-        contentPadding = contentPadding,
-        shape = shape,
-        labelSpacerSize = SwitchButtonDefaults.LabelSpacerSize,
-        ripple = ripple()
-    )
+        }
+    }
+}
 
 /** Contains the default values used by [SwitchButton]s and [SplitSwitchButton]s */
 object SwitchButtonDefaults {
@@ -1744,6 +1797,21 @@
     )
 }
 
+@Composable
+private fun RowScope.Labels(
+    label: @Composable RowScope.() -> Unit,
+    secondaryLabel: @Composable (RowScope.() -> Unit)?,
+    spacerSize: Dp
+) {
+    Column(modifier = Modifier.weight(1.0f)) {
+        Row(content = label)
+        if (secondaryLabel != null) {
+            Spacer(modifier = Modifier.size(spacerSize))
+            Row(content = secondaryLabel)
+        }
+    }
+}
+
 private val SWITCH_WIDTH = 32.dp
 private val SWITCH_OUTER_HEIGHT = 24.dp
 private val SWITCH_INNER_HEIGHT = 22.dp
@@ -1754,6 +1822,9 @@
 private val ICON_SPACING = 6.dp
 private val MIN_HEIGHT = 52.dp
 
+private val SPLIT_WIDTH = 60.dp
+private val SPLIT_SECTIONS_SHAPE = ShapeTokens.CornerExtraSmall
+
 private val COLOR_ANIMATION_SPEC: AnimationSpec<Color> =
     tween(MotionTokens.DurationMedium1, 0, MotionTokens.EasingStandardDecelerate)
 private val SWITCH_PROGRESS_ANIMATION_SPEC: TweenSpec<Float> =
diff --git a/wear/compose/integration-tests/demos/build.gradle b/wear/compose/integration-tests/demos/build.gradle
index e43fb98..0da615f 100644
--- a/wear/compose/integration-tests/demos/build.gradle
+++ b/wear/compose/integration-tests/demos/build.gradle
@@ -25,8 +25,8 @@
     defaultConfig {
         applicationId "androidx.wear.compose.integration.demos"
         minSdk 25
-        versionCode 32
-        versionName "1.32"
+        versionCode 33
+        versionName "1.33"
     }
 
     buildTypes {
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
index 2d88c40..bfbf053 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/CurrentUserStyleRepository.kt
@@ -24,6 +24,7 @@
 import androidx.wear.watchface.complications.IllegalNodeException
 import androidx.wear.watchface.complications.iterate
 import androidx.wear.watchface.style.UserStyleSetting.ComplicationSlotsUserStyleSetting.ComplicationSlotsOption
+import androidx.wear.watchface.style.UserStyleSetting.LargeCustomValueUserStyleSetting.Companion.CUSTOM_VALUE_USER_STYLE_SETTING_ID
 import androidx.wear.watchface.style.UserStyleSetting.Option
 import androidx.wear.watchface.style.data.UserStyleSchemaWireFormat
 import androidx.wear.watchface.style.data.UserStyleWireFormat
@@ -379,10 +380,20 @@
         "{" +
             userStyleMap.entries.joinToString(
                 transform = {
-                    try {
-                        it.key + "=" + it.value.decodeToString()
-                    } catch (e: Exception) {
-                        it.key + "=" + it.value
+                    when (it.key) {
+                        /**
+                         * For CustomValueUserStyleSetting and LargeCustomValueUserStyleSetting, we
+                         * display only the length of the value. These style settings is always use
+                         * the same key (CustomValue).
+                         */
+                        CUSTOM_VALUE_USER_STYLE_SETTING_ID ->
+                            it.key + "=[binary data, length: ${it.value.size}]"
+                        else ->
+                            try {
+                                it.key + "=" + it.value.decodeToString()
+                            } catch (e: Exception) {
+                                it.key + "=" + it.value
+                            }
                     }
                 }
             ) +
diff --git a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
index 0f7ca2d..847a4ee 100644
--- a/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
+++ b/wear/watchface/watchface-style/src/main/java/androidx/wear/watchface/style/UserStyleSetting.kt
@@ -2896,6 +2896,8 @@
             override fun write(dos: DataOutputStream) {
                 dos.write(id.value)
             }
+
+            override fun toString(): String = "[binary data, length: ${customValue.size}]"
         }
 
         override fun getOptionForId(optionId: Option.Id): Option =
diff --git a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt
index 3029d3e..d4014c6 100644
--- a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt
+++ b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/CurrentUserStyleRepositoryTest.kt
@@ -600,7 +600,8 @@
         assertThat(gothicStyleOption.toString()).isEqualTo("gothic_style")
         assertThat(DoubleRangeUserStyleSetting.DoubleRangeOption(12.3).toString()).isEqualTo("12.3")
         assertThat(LongRangeUserStyleSetting.LongRangeOption(123).toString()).isEqualTo("123")
-        assertThat(CustomValueOption("test".encodeToByteArray()).toString()).isEqualTo("test")
+        assertThat(CustomValueOption("test".encodeToByteArray()).toString())
+            .isEqualTo("[binary data, length: 4]")
     }
 
     @Test
diff --git a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
index c98331c..ffb9f38 100644
--- a/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
+++ b/wear/watchface/watchface-style/src/test/java/androidx/wear/watchface/style/StyleParcelableTest.kt
@@ -738,7 +738,10 @@
             UserStyleSchema(listOf(styleSetting1, styleSetting2, styleSetting3, styleSetting4))
 
         assertThat(schema.toString())
-            .isEqualTo("[{id1 : 1, 2}, {id2 : 3, 4}, {id3 : true, false}, {CustomValue : default}]")
+            .isEqualTo(
+                "[{id1 : 1, 2}, {id2 : 3, 4}, {id3 : true, false}, " +
+                    "{CustomValue : [binary data, length: 7]}]"
+            )
     }
 
     @Ignore
diff --git a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
index 0e19a63..0725ecc 100644
--- a/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
+++ b/wear/watchface/watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
@@ -1739,9 +1739,7 @@
             synchronized(lock) {
                 val complications = overriddenComplications ?: HashMap(complicationsFlow.value)
                 for ((frozenSlot, previewData) in editedComplicationPreviewData) {
-                    if (
-                        complicationsFlow.value[frozenSlot]!!.dataSource != previewData.dataSource
-                    ) {
+                    if (complicationsFlow.value[frozenSlot]?.dataSource != previewData.dataSource) {
                         complications[frozenSlot] = EmptyComplicationData()
                     }
                 }