[go: nahoru, domu]

Merge "Rename fullTracing.enable -> perfettoSdkTracing.enable" into androidx-main
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt
index 1d045d0..8cb0a3d 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXComposeImplPlugin.kt
@@ -84,10 +84,6 @@
                 val isPublished = androidXExtension.shouldPublish()
 
                 it.lint {
-                    // Too many Kotlin features require synthetic accessors - we want to rely on R8
-                    // to
-                    // remove these accessors
-                    disable.add("SyntheticAccessor")
                     // These lint checks are normally a warning (or lower), but we ignore (in
                     // AndroidX)
                     // warnings in Lint, so we make it an error here so it will fail the build.
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
index 7cc787b..21fb3f1 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
@@ -61,6 +61,9 @@
 import org.gradle.api.Plugin
 import org.gradle.api.Project
 import org.gradle.api.Task
+import org.gradle.api.artifacts.CacheableRule
+import org.gradle.api.artifacts.ComponentMetadataContext
+import org.gradle.api.artifacts.ComponentMetadataRule
 import org.gradle.api.artifacts.Configuration
 import org.gradle.api.component.SoftwareComponentFactory
 import org.gradle.api.file.DuplicatesStrategy
@@ -82,6 +85,7 @@
 import org.gradle.kotlin.dsl.extra
 import org.gradle.kotlin.dsl.findByType
 import org.gradle.kotlin.dsl.getByType
+import org.gradle.kotlin.dsl.withModule
 import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
 import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
 import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
@@ -297,20 +301,16 @@
     private fun Project.configureKotlinVersion() {
         val kotlinVersionStringProvider = androidXConfiguration.kotlinBomVersion
 
-        // Resolve Kotlin versions to the target version or higher.
+        // Resolve unspecified Kotlin versions to the target version.
         configurations.all { configuration ->
             configuration.resolutionStrategy { strategy ->
                 strategy.eachDependency { details ->
                     if (details.requested.group == "org.jetbrains.kotlin") {
-                        val requestedVersion =
-                            if (details.requested.version.isNullOrEmpty()) {
-                                null
-                            } else {
-                                Version(details.requested.version!!)
-                            }
-                        val bomVersion = kotlinVersionStringProvider.get()
-                        if (requestedVersion == null || requestedVersion < Version(bomVersion)) {
-                            details.useVersion(bomVersion)
+                        if (
+                            details.requested.group == "org.jetbrains.kotlin" &&
+                            details.requested.version == null
+                        ) {
+                            details.useVersion(kotlinVersionStringProvider.get())
                         }
                     }
                 }
@@ -335,6 +335,35 @@
                 kotlinExtension.coreLibrariesVersion = kotlinVersionStringProvider.get()
             }
         }
+
+        // Resolve classpath conflicts caused by kotlin-stdlib-jdk7 and -jdk8 artifacts by amending
+        // the kotlin-stdlib artifact metadata to add same-version constraints.
+        project.dependencies {
+            components { componentMetadata ->
+                componentMetadata.withModule<KotlinStdlibDependenciesRule>(
+                    "org.jetbrains.kotlin:kotlin-stdlib"
+                )
+            }
+        }
+    }
+
+    @CacheableRule
+    internal abstract class KotlinStdlibDependenciesRule : ComponentMetadataRule {
+        override fun execute(context: ComponentMetadataContext) {
+            val module = context.details.id
+            val version = module.version
+            context.details.allVariants { variantMetadata ->
+                variantMetadata.withDependencyConstraints { constraintsMetadata ->
+                    val reason = "${module.name} is in atomic group ${module.group}"
+                    constraintsMetadata.add("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$version") {
+                        it.because(reason)
+                    }
+                    constraintsMetadata.add("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$version") {
+                        it.because(reason)
+                    }
+                }
+            }
+        }
     }
 
     private fun configureWithKotlinPlugin(
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt b/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt
index 2552af0..28200ee 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/LintConfiguration.kt
@@ -397,15 +397,9 @@
             fatal.add("LambdaLast")
             fatal.add("UnknownNullness")
 
-            // Only override if not set explicitly.
-            // Some Kotlin projects may wish to disable this.
-            if (
-                isLibrary &&
-                    !disable.contains("SyntheticAccessor") &&
-                    extension.type != LibraryType.SAMPLES
-            ) {
-                fatal.add("SyntheticAccessor")
-            }
+            // Too many Kotlin features require synthetic accessors - we want to rely on R8 to
+            // remove these accessors
+            disable.add("SyntheticAccessor")
 
             // Only check for missing translations in finalized (beta and later) modules.
             if (extension.mavenVersion?.isFinalApi() == true) {
diff --git a/camera/camera-camera2/api/1.3.0-beta03.txt b/camera/camera-camera2/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..87c79d0
--- /dev/null
+++ b/camera/camera-camera2/api/1.3.0-beta03.txt
@@ -0,0 +1,54 @@
+// Signature format: 4.0
+package androidx.camera.camera2 {
+
+  @RequiresApi(21) public final class Camera2Config {
+    method public static androidx.camera.core.CameraXConfig defaultConfig();
+  }
+
+}
+
+package androidx.camera.camera2.interop {
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public final class Camera2CameraControl {
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> addCaptureRequestOptions(androidx.camera.camera2.interop.CaptureRequestOptions);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> clearCaptureRequestOptions();
+    method public static androidx.camera.camera2.interop.Camera2CameraControl from(androidx.camera.core.CameraControl);
+    method public androidx.camera.camera2.interop.CaptureRequestOptions getCaptureRequestOptions();
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setCaptureRequestOptions(androidx.camera.camera2.interop.CaptureRequestOptions);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public final class Camera2CameraInfo {
+    method public static androidx.camera.camera2.interop.Camera2CameraInfo from(androidx.camera.core.CameraInfo);
+    method public <T> T? getCameraCharacteristic(android.hardware.camera2.CameraCharacteristics.Key<T!>);
+    method public String getCameraId();
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public final class Camera2Interop {
+  }
+
+  @RequiresApi(21) public static final class Camera2Interop.Extender<T> {
+    ctor public Camera2Interop.Extender(androidx.camera.core.ExtendableBuilder<T!>);
+    method public <ValueT> androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>, ValueT);
+    method public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setDeviceStateCallback(android.hardware.camera2.CameraDevice.StateCallback);
+    method @RequiresApi(28) public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setPhysicalCameraId(String);
+    method public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setSessionCaptureCallback(android.hardware.camera2.CameraCaptureSession.CaptureCallback);
+    method public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setSessionStateCallback(android.hardware.camera2.CameraCaptureSession.StateCallback);
+    method @RequiresApi(33) public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setStreamUseCase(long);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public class CaptureRequestOptions {
+    method public <ValueT> ValueT? getCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
+  }
+
+  @RequiresApi(21) public static final class CaptureRequestOptions.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.camera2.interop.CaptureRequestOptions> {
+    ctor public CaptureRequestOptions.Builder();
+    method public androidx.camera.camera2.interop.CaptureRequestOptions build();
+    method public <ValueT> androidx.camera.camera2.interop.CaptureRequestOptions.Builder clearCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
+    method public <ValueT> androidx.camera.camera2.interop.CaptureRequestOptions.Builder setCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>, ValueT);
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalCamera2Interop {
+  }
+
+}
+
diff --git a/camera/camera-camera2/api/res-1.3.0-beta03.txt b/camera/camera-camera2/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-camera2/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-camera2/api/restricted_1.3.0-beta03.txt b/camera/camera-camera2/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..87c79d0
--- /dev/null
+++ b/camera/camera-camera2/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,54 @@
+// Signature format: 4.0
+package androidx.camera.camera2 {
+
+  @RequiresApi(21) public final class Camera2Config {
+    method public static androidx.camera.core.CameraXConfig defaultConfig();
+  }
+
+}
+
+package androidx.camera.camera2.interop {
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public final class Camera2CameraControl {
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> addCaptureRequestOptions(androidx.camera.camera2.interop.CaptureRequestOptions);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> clearCaptureRequestOptions();
+    method public static androidx.camera.camera2.interop.Camera2CameraControl from(androidx.camera.core.CameraControl);
+    method public androidx.camera.camera2.interop.CaptureRequestOptions getCaptureRequestOptions();
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setCaptureRequestOptions(androidx.camera.camera2.interop.CaptureRequestOptions);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public final class Camera2CameraInfo {
+    method public static androidx.camera.camera2.interop.Camera2CameraInfo from(androidx.camera.core.CameraInfo);
+    method public <T> T? getCameraCharacteristic(android.hardware.camera2.CameraCharacteristics.Key<T!>);
+    method public String getCameraId();
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public final class Camera2Interop {
+  }
+
+  @RequiresApi(21) public static final class Camera2Interop.Extender<T> {
+    ctor public Camera2Interop.Extender(androidx.camera.core.ExtendableBuilder<T!>);
+    method public <ValueT> androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>, ValueT);
+    method public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setDeviceStateCallback(android.hardware.camera2.CameraDevice.StateCallback);
+    method @RequiresApi(28) public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setPhysicalCameraId(String);
+    method public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setSessionCaptureCallback(android.hardware.camera2.CameraCaptureSession.CaptureCallback);
+    method public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setSessionStateCallback(android.hardware.camera2.CameraCaptureSession.StateCallback);
+    method @RequiresApi(33) public androidx.camera.camera2.interop.Camera2Interop.Extender<T!> setStreamUseCase(long);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @androidx.camera.camera2.interop.ExperimentalCamera2Interop public class CaptureRequestOptions {
+    method public <ValueT> ValueT? getCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
+  }
+
+  @RequiresApi(21) public static final class CaptureRequestOptions.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.camera2.interop.CaptureRequestOptions> {
+    ctor public CaptureRequestOptions.Builder();
+    method public androidx.camera.camera2.interop.CaptureRequestOptions build();
+    method public <ValueT> androidx.camera.camera2.interop.CaptureRequestOptions.Builder clearCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>);
+    method public <ValueT> androidx.camera.camera2.interop.CaptureRequestOptions.Builder setCaptureRequestOption(android.hardware.camera2.CaptureRequest.Key<ValueT!>, ValueT);
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalCamera2Interop {
+  }
+
+}
+
diff --git a/camera/camera-core/api/1.3.0-beta03.txt b/camera/camera-core/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..adace2b
--- /dev/null
+++ b/camera/camera-core/api/1.3.0-beta03.txt
@@ -0,0 +1,612 @@
+// Signature format: 4.0
+package androidx.camera.core {
+
+  @RequiresApi(21) public class AspectRatio {
+    field public static final int RATIO_16_9 = 1; // 0x1
+    field public static final int RATIO_4_3 = 0; // 0x0
+    field public static final int RATIO_DEFAULT = -1; // 0xffffffff
+  }
+
+  @RequiresApi(21) public interface Camera {
+    method public androidx.camera.core.CameraControl getCameraControl();
+    method public androidx.camera.core.CameraInfo getCameraInfo();
+  }
+
+  @RequiresApi(21) public interface CameraControl {
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> cancelFocusAndMetering();
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> enableTorch(boolean);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Integer!> setExposureCompensationIndex(int);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setLinearZoom(@FloatRange(from=0.0f, to=1.0f) float);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setZoomRatio(float);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.camera.core.FocusMeteringResult!> startFocusAndMetering(androidx.camera.core.FocusMeteringAction);
+  }
+
+  public static final class CameraControl.OperationCanceledException extends java.lang.Exception {
+  }
+
+  @RequiresApi(21) public abstract class CameraEffect {
+    ctor protected CameraEffect(int, java.util.concurrent.Executor, androidx.camera.core.ImageProcessor, androidx.core.util.Consumer<java.lang.Throwable!>);
+    ctor protected CameraEffect(int, java.util.concurrent.Executor, androidx.camera.core.SurfaceProcessor, androidx.core.util.Consumer<java.lang.Throwable!>);
+    method public androidx.core.util.Consumer<java.lang.Throwable!> getErrorListener();
+    method public java.util.concurrent.Executor getExecutor();
+    method public androidx.camera.core.SurfaceProcessor? getSurfaceProcessor();
+    method public int getTargets();
+    field public static final int IMAGE_CAPTURE = 4; // 0x4
+    field public static final int PREVIEW = 1; // 0x1
+    field public static final int VIDEO_CAPTURE = 2; // 0x2
+  }
+
+  @RequiresApi(21) public interface CameraFilter {
+    method public java.util.List<androidx.camera.core.CameraInfo!> filter(java.util.List<androidx.camera.core.CameraInfo!>);
+  }
+
+  @RequiresApi(21) public interface CameraInfo {
+    method public androidx.camera.core.CameraSelector getCameraSelector();
+    method public androidx.lifecycle.LiveData<androidx.camera.core.CameraState!> getCameraState();
+    method public androidx.camera.core.ExposureState getExposureState();
+    method @FloatRange(from=0, fromInclusive=false) public default float getIntrinsicZoomRatio();
+    method public default int getLensFacing();
+    method public int getSensorRotationDegrees();
+    method public int getSensorRotationDegrees(int);
+    method public default java.util.Set<android.util.Range<java.lang.Integer!>!> getSupportedFrameRateRanges();
+    method public androidx.lifecycle.LiveData<java.lang.Integer!> getTorchState();
+    method public androidx.lifecycle.LiveData<androidx.camera.core.ZoomState!> getZoomState();
+    method public boolean hasFlashUnit();
+    method public default boolean isFocusMeteringSupported(androidx.camera.core.FocusMeteringAction);
+    method @SuppressCompatibility @androidx.camera.core.ExperimentalZeroShutterLag public default boolean isZslSupported();
+  }
+
+  @RequiresApi(21) public final class CameraInfoUnavailableException extends java.lang.Exception {
+  }
+
+  @RequiresApi(21) public interface CameraProvider {
+    method public java.util.List<androidx.camera.core.CameraInfo!> getAvailableCameraInfos();
+    method public boolean hasCamera(androidx.camera.core.CameraSelector) throws androidx.camera.core.CameraInfoUnavailableException;
+  }
+
+  @RequiresApi(21) public final class CameraSelector {
+    method public java.util.List<androidx.camera.core.CameraInfo!> filter(java.util.List<androidx.camera.core.CameraInfo!>);
+    field public static final androidx.camera.core.CameraSelector DEFAULT_BACK_CAMERA;
+    field public static final androidx.camera.core.CameraSelector DEFAULT_FRONT_CAMERA;
+    field public static final int LENS_FACING_BACK = 1; // 0x1
+    field @SuppressCompatibility @androidx.camera.core.ExperimentalLensFacing public static final int LENS_FACING_EXTERNAL = 2; // 0x2
+    field public static final int LENS_FACING_FRONT = 0; // 0x0
+    field public static final int LENS_FACING_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public static final class CameraSelector.Builder {
+    ctor public CameraSelector.Builder();
+    method public androidx.camera.core.CameraSelector.Builder addCameraFilter(androidx.camera.core.CameraFilter);
+    method public androidx.camera.core.CameraSelector build();
+    method public androidx.camera.core.CameraSelector.Builder requireLensFacing(int);
+  }
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class CameraState {
+    ctor public CameraState();
+    method public static androidx.camera.core.CameraState create(androidx.camera.core.CameraState.Type);
+    method public static androidx.camera.core.CameraState create(androidx.camera.core.CameraState.Type, androidx.camera.core.CameraState.StateError?);
+    method public abstract androidx.camera.core.CameraState.StateError? getError();
+    method public abstract androidx.camera.core.CameraState.Type getType();
+    field public static final int ERROR_CAMERA_DISABLED = 5; // 0x5
+    field public static final int ERROR_CAMERA_FATAL_ERROR = 6; // 0x6
+    field public static final int ERROR_CAMERA_IN_USE = 2; // 0x2
+    field public static final int ERROR_DO_NOT_DISTURB_MODE_ENABLED = 7; // 0x7
+    field public static final int ERROR_MAX_CAMERAS_IN_USE = 1; // 0x1
+    field public static final int ERROR_OTHER_RECOVERABLE_ERROR = 3; // 0x3
+    field public static final int ERROR_STREAM_CONFIG = 4; // 0x4
+  }
+
+  public enum CameraState.ErrorType {
+    enum_constant public static final androidx.camera.core.CameraState.ErrorType CRITICAL;
+    enum_constant public static final androidx.camera.core.CameraState.ErrorType RECOVERABLE;
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class CameraState.StateError {
+    ctor public CameraState.StateError();
+    method public static androidx.camera.core.CameraState.StateError create(int);
+    method public static androidx.camera.core.CameraState.StateError create(int, Throwable?);
+    method public abstract Throwable? getCause();
+    method public abstract int getCode();
+    method public androidx.camera.core.CameraState.ErrorType getType();
+  }
+
+  public enum CameraState.Type {
+    enum_constant public static final androidx.camera.core.CameraState.Type CLOSED;
+    enum_constant public static final androidx.camera.core.CameraState.Type CLOSING;
+    enum_constant public static final androidx.camera.core.CameraState.Type OPEN;
+    enum_constant public static final androidx.camera.core.CameraState.Type OPENING;
+    enum_constant public static final androidx.camera.core.CameraState.Type PENDING_OPEN;
+  }
+
+  @RequiresApi(21) public class CameraUnavailableException extends java.lang.Exception {
+    ctor public CameraUnavailableException(int);
+    ctor public CameraUnavailableException(int, String?);
+    ctor public CameraUnavailableException(int, String?, Throwable?);
+    ctor public CameraUnavailableException(int, Throwable?);
+    method public int getReason();
+    field public static final int CAMERA_DISABLED = 1; // 0x1
+    field public static final int CAMERA_DISCONNECTED = 2; // 0x2
+    field public static final int CAMERA_ERROR = 3; // 0x3
+    field public static final int CAMERA_IN_USE = 4; // 0x4
+    field public static final int CAMERA_MAX_IN_USE = 5; // 0x5
+    field public static final int CAMERA_UNAVAILABLE_DO_NOT_DISTURB = 6; // 0x6
+    field public static final int CAMERA_UNKNOWN_ERROR = 0; // 0x0
+  }
+
+  @RequiresApi(21) public final class CameraXConfig {
+    method public androidx.camera.core.CameraSelector? getAvailableCamerasLimiter(androidx.camera.core.CameraSelector?);
+    method public java.util.concurrent.Executor? getCameraExecutor(java.util.concurrent.Executor?);
+    method public int getMinimumLoggingLevel();
+    method public android.os.Handler? getSchedulerHandler(android.os.Handler?);
+  }
+
+  public static final class CameraXConfig.Builder {
+    method public androidx.camera.core.CameraXConfig build();
+    method public static androidx.camera.core.CameraXConfig.Builder fromConfig(androidx.camera.core.CameraXConfig);
+    method public androidx.camera.core.CameraXConfig.Builder setAvailableCamerasLimiter(androidx.camera.core.CameraSelector);
+    method public androidx.camera.core.CameraXConfig.Builder setCameraExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.core.CameraXConfig.Builder setMinimumLoggingLevel(@IntRange(from=android.util.Log.DEBUG, to=android.util.Log.ERROR) int);
+    method public androidx.camera.core.CameraXConfig.Builder setSchedulerHandler(android.os.Handler);
+  }
+
+  public static interface CameraXConfig.Provider {
+    method public androidx.camera.core.CameraXConfig getCameraXConfig();
+  }
+
+  @RequiresApi(21) public class ConcurrentCamera {
+    ctor public ConcurrentCamera(java.util.List<androidx.camera.core.Camera!>);
+    method public java.util.List<androidx.camera.core.Camera!> getCameras();
+  }
+
+  public static final class ConcurrentCamera.SingleCameraConfig {
+    ctor public ConcurrentCamera.SingleCameraConfig(androidx.camera.core.CameraSelector, androidx.camera.core.UseCaseGroup, androidx.lifecycle.LifecycleOwner);
+    method public androidx.camera.core.CameraSelector getCameraSelector();
+    method public androidx.lifecycle.LifecycleOwner getLifecycleOwner();
+    method public androidx.camera.core.UseCaseGroup getUseCaseGroup();
+  }
+
+  @RequiresApi(21) public final class DisplayOrientedMeteringPointFactory extends androidx.camera.core.MeteringPointFactory {
+    ctor public DisplayOrientedMeteringPointFactory(android.view.Display, androidx.camera.core.CameraInfo, float, float);
+  }
+
+  @RequiresApi(21) public final class DynamicRange {
+    ctor public DynamicRange(int, int);
+    method public int getBitDepth();
+    method public int getEncoding();
+    field public static final int BIT_DEPTH_10_BIT = 10; // 0xa
+    field public static final int BIT_DEPTH_8_BIT = 8; // 0x8
+    field public static final int BIT_DEPTH_UNSPECIFIED = 0; // 0x0
+    field public static final androidx.camera.core.DynamicRange DOLBY_VISION_10_BIT;
+    field public static final androidx.camera.core.DynamicRange DOLBY_VISION_8_BIT;
+    field public static final int ENCODING_DOLBY_VISION = 6; // 0x6
+    field public static final int ENCODING_HDR10 = 4; // 0x4
+    field public static final int ENCODING_HDR10_PLUS = 5; // 0x5
+    field public static final int ENCODING_HDR_UNSPECIFIED = 2; // 0x2
+    field public static final int ENCODING_HLG = 3; // 0x3
+    field public static final int ENCODING_SDR = 1; // 0x1
+    field public static final int ENCODING_UNSPECIFIED = 0; // 0x0
+    field public static final androidx.camera.core.DynamicRange HDR10_10_BIT;
+    field public static final androidx.camera.core.DynamicRange HDR10_PLUS_10_BIT;
+    field public static final androidx.camera.core.DynamicRange HDR_UNSPECIFIED_10_BIT;
+    field public static final androidx.camera.core.DynamicRange HLG_10_BIT;
+    field public static final androidx.camera.core.DynamicRange SDR;
+    field public static final androidx.camera.core.DynamicRange UNSPECIFIED;
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalGetImage {
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalLensFacing {
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalUseCaseApi {
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalZeroShutterLag {
+  }
+
+  @RequiresApi(21) public interface ExposureState {
+    method public int getExposureCompensationIndex();
+    method public android.util.Range<java.lang.Integer!> getExposureCompensationRange();
+    method public android.util.Rational getExposureCompensationStep();
+    method public boolean isExposureCompensationSupported();
+  }
+
+  @RequiresApi(21) public interface ExtendableBuilder<T> {
+    method public T build();
+  }
+
+  @RequiresApi(21) public final class FocusMeteringAction {
+    method public long getAutoCancelDurationInMillis();
+    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAe();
+    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAf();
+    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAwb();
+    method public boolean isAutoCancelEnabled();
+    field public static final int FLAG_AE = 2; // 0x2
+    field public static final int FLAG_AF = 1; // 0x1
+    field public static final int FLAG_AWB = 4; // 0x4
+  }
+
+  public static class FocusMeteringAction.Builder {
+    ctor public FocusMeteringAction.Builder(androidx.camera.core.MeteringPoint);
+    ctor public FocusMeteringAction.Builder(androidx.camera.core.MeteringPoint, int);
+    method public androidx.camera.core.FocusMeteringAction.Builder addPoint(androidx.camera.core.MeteringPoint);
+    method public androidx.camera.core.FocusMeteringAction.Builder addPoint(androidx.camera.core.MeteringPoint, int);
+    method public androidx.camera.core.FocusMeteringAction build();
+    method public androidx.camera.core.FocusMeteringAction.Builder disableAutoCancel();
+    method public androidx.camera.core.FocusMeteringAction.Builder setAutoCancelDuration(@IntRange(from=1) long, java.util.concurrent.TimeUnit);
+  }
+
+  @RequiresApi(21) public final class FocusMeteringResult {
+    method public boolean isFocusSuccessful();
+  }
+
+  @RequiresApi(21) public final class ImageAnalysis extends androidx.camera.core.UseCase {
+    method public void clearAnalyzer();
+    method @SuppressCompatibility @androidx.camera.core.ExperimentalUseCaseApi public java.util.concurrent.Executor? getBackgroundExecutor();
+    method public int getBackpressureStrategy();
+    method public int getImageQueueDepth();
+    method public int getOutputImageFormat();
+    method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
+    method public int getTargetRotation();
+    method public boolean isOutputImageRotationEnabled();
+    method public void setAnalyzer(java.util.concurrent.Executor, androidx.camera.core.ImageAnalysis.Analyzer);
+    method public void setTargetRotation(int);
+    field public static final int COORDINATE_SYSTEM_ORIGINAL = 0; // 0x0
+    field public static final int OUTPUT_IMAGE_FORMAT_RGBA_8888 = 2; // 0x2
+    field public static final int OUTPUT_IMAGE_FORMAT_YUV_420_888 = 1; // 0x1
+    field public static final int STRATEGY_BLOCK_PRODUCER = 1; // 0x1
+    field public static final int STRATEGY_KEEP_ONLY_LATEST = 0; // 0x0
+  }
+
+  public static interface ImageAnalysis.Analyzer {
+    method public void analyze(androidx.camera.core.ImageProxy);
+    method public default android.util.Size? getDefaultTargetResolution();
+    method public default int getTargetCoordinateSystem();
+    method public default void updateTransform(android.graphics.Matrix?);
+  }
+
+  public static final class ImageAnalysis.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageAnalysis> {
+    ctor public ImageAnalysis.Builder();
+    method public androidx.camera.core.ImageAnalysis build();
+    method public androidx.camera.core.ImageAnalysis.Builder setBackgroundExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.core.ImageAnalysis.Builder setBackpressureStrategy(int);
+    method public androidx.camera.core.ImageAnalysis.Builder setImageQueueDepth(int);
+    method public androidx.camera.core.ImageAnalysis.Builder setOutputImageFormat(int);
+    method @RequiresApi(23) public androidx.camera.core.ImageAnalysis.Builder setOutputImageRotationEnabled(boolean);
+    method public androidx.camera.core.ImageAnalysis.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
+    method @Deprecated public androidx.camera.core.ImageAnalysis.Builder setTargetAspectRatio(int);
+    method public androidx.camera.core.ImageAnalysis.Builder setTargetName(String);
+    method @Deprecated public androidx.camera.core.ImageAnalysis.Builder setTargetResolution(android.util.Size);
+    method public androidx.camera.core.ImageAnalysis.Builder setTargetRotation(int);
+  }
+
+  @RequiresApi(21) public final class ImageCapture extends androidx.camera.core.UseCase {
+    method public int getCaptureMode();
+    method public int getFlashMode();
+    method @IntRange(from=1, to=100) public int getJpegQuality();
+    method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
+    method public int getTargetRotation();
+    method public void setCropAspectRatio(android.util.Rational);
+    method public void setFlashMode(int);
+    method public void setTargetRotation(int);
+    method public void takePicture(androidx.camera.core.ImageCapture.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
+    method public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
+    field public static final int CAPTURE_MODE_MAXIMIZE_QUALITY = 0; // 0x0
+    field public static final int CAPTURE_MODE_MINIMIZE_LATENCY = 1; // 0x1
+    field @SuppressCompatibility @androidx.camera.core.ExperimentalZeroShutterLag public static final int CAPTURE_MODE_ZERO_SHUTTER_LAG = 2; // 0x2
+    field public static final int ERROR_CAMERA_CLOSED = 3; // 0x3
+    field public static final int ERROR_CAPTURE_FAILED = 2; // 0x2
+    field public static final int ERROR_FILE_IO = 1; // 0x1
+    field public static final int ERROR_INVALID_CAMERA = 4; // 0x4
+    field public static final int ERROR_UNKNOWN = 0; // 0x0
+    field public static final int FLASH_MODE_AUTO = 0; // 0x0
+    field public static final int FLASH_MODE_OFF = 2; // 0x2
+    field public static final int FLASH_MODE_ON = 1; // 0x1
+  }
+
+  public static final class ImageCapture.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageCapture> {
+    ctor public ImageCapture.Builder();
+    method public androidx.camera.core.ImageCapture build();
+    method public androidx.camera.core.ImageCapture.Builder setCaptureMode(int);
+    method public androidx.camera.core.ImageCapture.Builder setFlashMode(int);
+    method public androidx.camera.core.ImageCapture.Builder setIoExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.core.ImageCapture.Builder setJpegQuality(@IntRange(from=1, to=100) int);
+    method public androidx.camera.core.ImageCapture.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
+    method @Deprecated public androidx.camera.core.ImageCapture.Builder setTargetAspectRatio(int);
+    method public androidx.camera.core.ImageCapture.Builder setTargetName(String);
+    method @Deprecated public androidx.camera.core.ImageCapture.Builder setTargetResolution(android.util.Size);
+    method public androidx.camera.core.ImageCapture.Builder setTargetRotation(int);
+  }
+
+  public static final class ImageCapture.Metadata {
+    ctor public ImageCapture.Metadata();
+    method public android.location.Location? getLocation();
+    method public boolean isReversedHorizontal();
+    method public boolean isReversedVertical();
+    method public void setLocation(android.location.Location?);
+    method public void setReversedHorizontal(boolean);
+    method public void setReversedVertical(boolean);
+  }
+
+  public abstract static class ImageCapture.OnImageCapturedCallback {
+    ctor public ImageCapture.OnImageCapturedCallback();
+    method public void onCaptureSuccess(androidx.camera.core.ImageProxy);
+    method public void onError(androidx.camera.core.ImageCaptureException);
+  }
+
+  public static interface ImageCapture.OnImageSavedCallback {
+    method public void onError(androidx.camera.core.ImageCaptureException);
+    method public void onImageSaved(androidx.camera.core.ImageCapture.OutputFileResults);
+  }
+
+  public static final class ImageCapture.OutputFileOptions {
+  }
+
+  public static final class ImageCapture.OutputFileOptions.Builder {
+    ctor public ImageCapture.OutputFileOptions.Builder(android.content.ContentResolver, android.net.Uri, android.content.ContentValues);
+    ctor public ImageCapture.OutputFileOptions.Builder(java.io.File);
+    ctor public ImageCapture.OutputFileOptions.Builder(java.io.OutputStream);
+    method public androidx.camera.core.ImageCapture.OutputFileOptions build();
+    method public androidx.camera.core.ImageCapture.OutputFileOptions.Builder setMetadata(androidx.camera.core.ImageCapture.Metadata);
+  }
+
+  public static class ImageCapture.OutputFileResults {
+    method public android.net.Uri? getSavedUri();
+  }
+
+  @RequiresApi(21) public class ImageCaptureException extends java.lang.Exception {
+    ctor public ImageCaptureException(int, String, Throwable?);
+    method public int getImageCaptureError();
+  }
+
+  @RequiresApi(21) public interface ImageInfo {
+    method public int getRotationDegrees();
+    method public default android.graphics.Matrix getSensorToBufferTransformMatrix();
+    method public long getTimestamp();
+  }
+
+  public interface ImageProcessor {
+    method public androidx.camera.core.ImageProcessor.Response process(androidx.camera.core.ImageProcessor.Request) throws androidx.camera.core.ProcessingException;
+  }
+
+  public static interface ImageProcessor.Request {
+    method public androidx.camera.core.ImageProxy getInputImage();
+    method public int getOutputFormat();
+  }
+
+  public static interface ImageProcessor.Response {
+    method public androidx.camera.core.ImageProxy getOutputImage();
+  }
+
+  @RequiresApi(21) public interface ImageProxy extends java.lang.AutoCloseable {
+    method public void close();
+    method public android.graphics.Rect getCropRect();
+    method public int getFormat();
+    method public int getHeight();
+    method @SuppressCompatibility @androidx.camera.core.ExperimentalGetImage public android.media.Image? getImage();
+    method public androidx.camera.core.ImageInfo getImageInfo();
+    method public androidx.camera.core.ImageProxy.PlaneProxy![] getPlanes();
+    method public int getWidth();
+    method public void setCropRect(android.graphics.Rect?);
+    method public default android.graphics.Bitmap toBitmap();
+  }
+
+  public static interface ImageProxy.PlaneProxy {
+    method public java.nio.ByteBuffer getBuffer();
+    method public int getPixelStride();
+    method public int getRowStride();
+  }
+
+  @RequiresApi(21) public class InitializationException extends java.lang.Exception {
+    ctor public InitializationException(String?);
+    ctor public InitializationException(String?, Throwable?);
+    ctor public InitializationException(Throwable?);
+  }
+
+  @RequiresApi(21) public class MeteringPoint {
+    method public float getSize();
+  }
+
+  @RequiresApi(21) public abstract class MeteringPointFactory {
+    method public final androidx.camera.core.MeteringPoint createPoint(float, float);
+    method public final androidx.camera.core.MeteringPoint createPoint(float, float, float);
+    method public static float getDefaultPointSize();
+  }
+
+  @RequiresApi(21) public class MirrorMode {
+    field public static final int MIRROR_MODE_OFF = 0; // 0x0
+    field public static final int MIRROR_MODE_ON = 1; // 0x1
+    field public static final int MIRROR_MODE_ON_FRONT_ONLY = 2; // 0x2
+  }
+
+  @RequiresApi(21) public final class Preview extends androidx.camera.core.UseCase {
+    method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
+    method public android.util.Range<java.lang.Integer!> getTargetFrameRate();
+    method public int getTargetRotation();
+    method @UiThread public void setSurfaceProvider(androidx.camera.core.Preview.SurfaceProvider?);
+    method @UiThread public void setSurfaceProvider(java.util.concurrent.Executor, androidx.camera.core.Preview.SurfaceProvider?);
+    method public void setTargetRotation(int);
+  }
+
+  public static final class Preview.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.Preview> {
+    ctor public Preview.Builder();
+    method public androidx.camera.core.Preview build();
+    method public androidx.camera.core.Preview.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
+    method @Deprecated public androidx.camera.core.Preview.Builder setTargetAspectRatio(int);
+    method public androidx.camera.core.Preview.Builder setTargetFrameRate(android.util.Range<java.lang.Integer!>);
+    method public androidx.camera.core.Preview.Builder setTargetName(String);
+    method @Deprecated public androidx.camera.core.Preview.Builder setTargetResolution(android.util.Size);
+    method public androidx.camera.core.Preview.Builder setTargetRotation(int);
+  }
+
+  public static interface Preview.SurfaceProvider {
+    method public void onSurfaceRequested(androidx.camera.core.SurfaceRequest);
+  }
+
+  public class ProcessingException extends java.lang.Exception {
+    ctor public ProcessingException();
+  }
+
+  @RequiresApi(21) public class ResolutionInfo {
+    ctor public ResolutionInfo(android.util.Size, android.graphics.Rect, int);
+    method public android.graphics.Rect getCropRect();
+    method public android.util.Size getResolution();
+    method public int getRotationDegrees();
+  }
+
+  @RequiresApi(21) public class SurfaceOrientedMeteringPointFactory extends androidx.camera.core.MeteringPointFactory {
+    ctor public SurfaceOrientedMeteringPointFactory(float, float);
+    ctor public SurfaceOrientedMeteringPointFactory(float, float, androidx.camera.core.UseCase);
+  }
+
+  public interface SurfaceOutput extends java.io.Closeable {
+    method public void close();
+    method public android.util.Size getSize();
+    method public android.view.Surface getSurface(java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.core.SurfaceOutput.Event!>);
+    method public int getTargets();
+    method public void updateTransformMatrix(float[], float[]);
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class SurfaceOutput.Event {
+    method public abstract int getEventCode();
+    method public abstract androidx.camera.core.SurfaceOutput getSurfaceOutput();
+    field public static final int EVENT_REQUEST_CLOSE = 0; // 0x0
+  }
+
+  public interface SurfaceProcessor {
+    method public void onInputSurface(androidx.camera.core.SurfaceRequest) throws androidx.camera.core.ProcessingException;
+    method public void onOutputSurface(androidx.camera.core.SurfaceOutput) throws androidx.camera.core.ProcessingException;
+  }
+
+  @RequiresApi(21) public final class SurfaceRequest {
+    method public void addRequestCancellationListener(java.util.concurrent.Executor, Runnable);
+    method public void clearTransformationInfoListener();
+    method public androidx.camera.core.DynamicRange getDynamicRange();
+    method public android.util.Size getResolution();
+    method public boolean invalidate();
+    method public void provideSurface(android.view.Surface, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.core.SurfaceRequest.Result!>);
+    method public void setTransformationInfoListener(java.util.concurrent.Executor, androidx.camera.core.SurfaceRequest.TransformationInfoListener);
+    method public boolean willNotProvideSurface();
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class SurfaceRequest.Result {
+    method public abstract int getResultCode();
+    method public abstract android.view.Surface getSurface();
+    field public static final int RESULT_INVALID_SURFACE = 2; // 0x2
+    field public static final int RESULT_REQUEST_CANCELLED = 1; // 0x1
+    field public static final int RESULT_SURFACE_ALREADY_PROVIDED = 3; // 0x3
+    field public static final int RESULT_SURFACE_USED_SUCCESSFULLY = 0; // 0x0
+    field public static final int RESULT_WILL_NOT_PROVIDE_SURFACE = 4; // 0x4
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class SurfaceRequest.TransformationInfo {
+    method public abstract android.graphics.Rect getCropRect();
+    method public abstract int getRotationDegrees();
+  }
+
+  public static interface SurfaceRequest.TransformationInfoListener {
+    method public void onTransformationInfoUpdate(androidx.camera.core.SurfaceRequest.TransformationInfo);
+  }
+
+  @RequiresApi(21) public class TorchState {
+    field public static final int OFF = 0; // 0x0
+    field public static final int ON = 1; // 0x1
+  }
+
+  @RequiresApi(21) public abstract class UseCase {
+    method public static int snapToSurfaceRotation(@IntRange(from=0, to=359) int);
+  }
+
+  @RequiresApi(21) public final class UseCaseGroup {
+    method public java.util.List<androidx.camera.core.CameraEffect!> getEffects();
+    method public java.util.List<androidx.camera.core.UseCase!> getUseCases();
+    method public androidx.camera.core.ViewPort? getViewPort();
+  }
+
+  public static final class UseCaseGroup.Builder {
+    ctor public UseCaseGroup.Builder();
+    method public androidx.camera.core.UseCaseGroup.Builder addEffect(androidx.camera.core.CameraEffect);
+    method public androidx.camera.core.UseCaseGroup.Builder addUseCase(androidx.camera.core.UseCase);
+    method public androidx.camera.core.UseCaseGroup build();
+    method public androidx.camera.core.UseCaseGroup.Builder setViewPort(androidx.camera.core.ViewPort);
+  }
+
+  @RequiresApi(21) public final class ViewPort {
+    method public android.util.Rational getAspectRatio();
+    method public int getLayoutDirection();
+    method public int getRotation();
+    method public int getScaleType();
+    field public static final int FILL_CENTER = 1; // 0x1
+    field public static final int FILL_END = 2; // 0x2
+    field public static final int FILL_START = 0; // 0x0
+    field public static final int FIT = 3; // 0x3
+  }
+
+  public static final class ViewPort.Builder {
+    ctor public ViewPort.Builder(android.util.Rational, int);
+    method public androidx.camera.core.ViewPort build();
+    method public androidx.camera.core.ViewPort.Builder setLayoutDirection(int);
+    method public androidx.camera.core.ViewPort.Builder setScaleType(int);
+  }
+
+  @RequiresApi(21) public interface ZoomState {
+    method public float getLinearZoom();
+    method public float getMaxZoomRatio();
+    method public float getMinZoomRatio();
+    method public float getZoomRatio();
+  }
+
+}
+
+package androidx.camera.core.resolutionselector {
+
+  @RequiresApi(21) public final class AspectRatioStrategy {
+    ctor public AspectRatioStrategy(int, int);
+    method public int getFallbackRule();
+    method public int getPreferredAspectRatio();
+    field public static final int FALLBACK_RULE_AUTO = 1; // 0x1
+    field public static final int FALLBACK_RULE_NONE = 0; // 0x0
+    field public static final androidx.camera.core.resolutionselector.AspectRatioStrategy RATIO_16_9_FALLBACK_AUTO_STRATEGY;
+    field public static final androidx.camera.core.resolutionselector.AspectRatioStrategy RATIO_4_3_FALLBACK_AUTO_STRATEGY;
+  }
+
+  @RequiresApi(21) public interface ResolutionFilter {
+    method public java.util.List<android.util.Size!> filter(java.util.List<android.util.Size!>, int);
+  }
+
+  @RequiresApi(21) public final class ResolutionSelector {
+    method public int getAllowedResolutionMode();
+    method public androidx.camera.core.resolutionselector.AspectRatioStrategy getAspectRatioStrategy();
+    method public androidx.camera.core.resolutionselector.ResolutionFilter? getResolutionFilter();
+    method public androidx.camera.core.resolutionselector.ResolutionStrategy? getResolutionStrategy();
+    field public static final int PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION = 0; // 0x0
+    field public static final int PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE = 1; // 0x1
+  }
+
+  public static final class ResolutionSelector.Builder {
+    ctor public ResolutionSelector.Builder();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector build();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setAllowedResolutionMode(int);
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setAspectRatioStrategy(androidx.camera.core.resolutionselector.AspectRatioStrategy);
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setResolutionFilter(androidx.camera.core.resolutionselector.ResolutionFilter);
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setResolutionStrategy(androidx.camera.core.resolutionselector.ResolutionStrategy);
+  }
+
+  @RequiresApi(21) public final class ResolutionStrategy {
+    ctor public ResolutionStrategy(android.util.Size, int);
+    method public android.util.Size? getBoundSize();
+    method public int getFallbackRule();
+    field public static final int FALLBACK_RULE_CLOSEST_HIGHER = 2; // 0x2
+    field public static final int FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER = 1; // 0x1
+    field public static final int FALLBACK_RULE_CLOSEST_LOWER = 4; // 0x4
+    field public static final int FALLBACK_RULE_CLOSEST_LOWER_THEN_HIGHER = 3; // 0x3
+    field public static final int FALLBACK_RULE_NONE = 0; // 0x0
+    field public static final androidx.camera.core.resolutionselector.ResolutionStrategy HIGHEST_AVAILABLE_STRATEGY;
+  }
+
+}
+
diff --git a/camera/camera-core/api/res-1.3.0-beta03.txt b/camera/camera-core/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-core/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-core/api/restricted_1.3.0-beta03.txt b/camera/camera-core/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..adace2b
--- /dev/null
+++ b/camera/camera-core/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,612 @@
+// Signature format: 4.0
+package androidx.camera.core {
+
+  @RequiresApi(21) public class AspectRatio {
+    field public static final int RATIO_16_9 = 1; // 0x1
+    field public static final int RATIO_4_3 = 0; // 0x0
+    field public static final int RATIO_DEFAULT = -1; // 0xffffffff
+  }
+
+  @RequiresApi(21) public interface Camera {
+    method public androidx.camera.core.CameraControl getCameraControl();
+    method public androidx.camera.core.CameraInfo getCameraInfo();
+  }
+
+  @RequiresApi(21) public interface CameraControl {
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> cancelFocusAndMetering();
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> enableTorch(boolean);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Integer!> setExposureCompensationIndex(int);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setLinearZoom(@FloatRange(from=0.0f, to=1.0f) float);
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setZoomRatio(float);
+    method public com.google.common.util.concurrent.ListenableFuture<androidx.camera.core.FocusMeteringResult!> startFocusAndMetering(androidx.camera.core.FocusMeteringAction);
+  }
+
+  public static final class CameraControl.OperationCanceledException extends java.lang.Exception {
+  }
+
+  @RequiresApi(21) public abstract class CameraEffect {
+    ctor protected CameraEffect(int, java.util.concurrent.Executor, androidx.camera.core.ImageProcessor, androidx.core.util.Consumer<java.lang.Throwable!>);
+    ctor protected CameraEffect(int, java.util.concurrent.Executor, androidx.camera.core.SurfaceProcessor, androidx.core.util.Consumer<java.lang.Throwable!>);
+    method public androidx.core.util.Consumer<java.lang.Throwable!> getErrorListener();
+    method public java.util.concurrent.Executor getExecutor();
+    method public androidx.camera.core.SurfaceProcessor? getSurfaceProcessor();
+    method public int getTargets();
+    field public static final int IMAGE_CAPTURE = 4; // 0x4
+    field public static final int PREVIEW = 1; // 0x1
+    field public static final int VIDEO_CAPTURE = 2; // 0x2
+  }
+
+  @RequiresApi(21) public interface CameraFilter {
+    method public java.util.List<androidx.camera.core.CameraInfo!> filter(java.util.List<androidx.camera.core.CameraInfo!>);
+  }
+
+  @RequiresApi(21) public interface CameraInfo {
+    method public androidx.camera.core.CameraSelector getCameraSelector();
+    method public androidx.lifecycle.LiveData<androidx.camera.core.CameraState!> getCameraState();
+    method public androidx.camera.core.ExposureState getExposureState();
+    method @FloatRange(from=0, fromInclusive=false) public default float getIntrinsicZoomRatio();
+    method public default int getLensFacing();
+    method public int getSensorRotationDegrees();
+    method public int getSensorRotationDegrees(int);
+    method public default java.util.Set<android.util.Range<java.lang.Integer!>!> getSupportedFrameRateRanges();
+    method public androidx.lifecycle.LiveData<java.lang.Integer!> getTorchState();
+    method public androidx.lifecycle.LiveData<androidx.camera.core.ZoomState!> getZoomState();
+    method public boolean hasFlashUnit();
+    method public default boolean isFocusMeteringSupported(androidx.camera.core.FocusMeteringAction);
+    method @SuppressCompatibility @androidx.camera.core.ExperimentalZeroShutterLag public default boolean isZslSupported();
+  }
+
+  @RequiresApi(21) public final class CameraInfoUnavailableException extends java.lang.Exception {
+  }
+
+  @RequiresApi(21) public interface CameraProvider {
+    method public java.util.List<androidx.camera.core.CameraInfo!> getAvailableCameraInfos();
+    method public boolean hasCamera(androidx.camera.core.CameraSelector) throws androidx.camera.core.CameraInfoUnavailableException;
+  }
+
+  @RequiresApi(21) public final class CameraSelector {
+    method public java.util.List<androidx.camera.core.CameraInfo!> filter(java.util.List<androidx.camera.core.CameraInfo!>);
+    field public static final androidx.camera.core.CameraSelector DEFAULT_BACK_CAMERA;
+    field public static final androidx.camera.core.CameraSelector DEFAULT_FRONT_CAMERA;
+    field public static final int LENS_FACING_BACK = 1; // 0x1
+    field @SuppressCompatibility @androidx.camera.core.ExperimentalLensFacing public static final int LENS_FACING_EXTERNAL = 2; // 0x2
+    field public static final int LENS_FACING_FRONT = 0; // 0x0
+    field public static final int LENS_FACING_UNKNOWN = -1; // 0xffffffff
+  }
+
+  public static final class CameraSelector.Builder {
+    ctor public CameraSelector.Builder();
+    method public androidx.camera.core.CameraSelector.Builder addCameraFilter(androidx.camera.core.CameraFilter);
+    method public androidx.camera.core.CameraSelector build();
+    method public androidx.camera.core.CameraSelector.Builder requireLensFacing(int);
+  }
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class CameraState {
+    ctor public CameraState();
+    method public static androidx.camera.core.CameraState create(androidx.camera.core.CameraState.Type);
+    method public static androidx.camera.core.CameraState create(androidx.camera.core.CameraState.Type, androidx.camera.core.CameraState.StateError?);
+    method public abstract androidx.camera.core.CameraState.StateError? getError();
+    method public abstract androidx.camera.core.CameraState.Type getType();
+    field public static final int ERROR_CAMERA_DISABLED = 5; // 0x5
+    field public static final int ERROR_CAMERA_FATAL_ERROR = 6; // 0x6
+    field public static final int ERROR_CAMERA_IN_USE = 2; // 0x2
+    field public static final int ERROR_DO_NOT_DISTURB_MODE_ENABLED = 7; // 0x7
+    field public static final int ERROR_MAX_CAMERAS_IN_USE = 1; // 0x1
+    field public static final int ERROR_OTHER_RECOVERABLE_ERROR = 3; // 0x3
+    field public static final int ERROR_STREAM_CONFIG = 4; // 0x4
+  }
+
+  public enum CameraState.ErrorType {
+    enum_constant public static final androidx.camera.core.CameraState.ErrorType CRITICAL;
+    enum_constant public static final androidx.camera.core.CameraState.ErrorType RECOVERABLE;
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class CameraState.StateError {
+    ctor public CameraState.StateError();
+    method public static androidx.camera.core.CameraState.StateError create(int);
+    method public static androidx.camera.core.CameraState.StateError create(int, Throwable?);
+    method public abstract Throwable? getCause();
+    method public abstract int getCode();
+    method public androidx.camera.core.CameraState.ErrorType getType();
+  }
+
+  public enum CameraState.Type {
+    enum_constant public static final androidx.camera.core.CameraState.Type CLOSED;
+    enum_constant public static final androidx.camera.core.CameraState.Type CLOSING;
+    enum_constant public static final androidx.camera.core.CameraState.Type OPEN;
+    enum_constant public static final androidx.camera.core.CameraState.Type OPENING;
+    enum_constant public static final androidx.camera.core.CameraState.Type PENDING_OPEN;
+  }
+
+  @RequiresApi(21) public class CameraUnavailableException extends java.lang.Exception {
+    ctor public CameraUnavailableException(int);
+    ctor public CameraUnavailableException(int, String?);
+    ctor public CameraUnavailableException(int, String?, Throwable?);
+    ctor public CameraUnavailableException(int, Throwable?);
+    method public int getReason();
+    field public static final int CAMERA_DISABLED = 1; // 0x1
+    field public static final int CAMERA_DISCONNECTED = 2; // 0x2
+    field public static final int CAMERA_ERROR = 3; // 0x3
+    field public static final int CAMERA_IN_USE = 4; // 0x4
+    field public static final int CAMERA_MAX_IN_USE = 5; // 0x5
+    field public static final int CAMERA_UNAVAILABLE_DO_NOT_DISTURB = 6; // 0x6
+    field public static final int CAMERA_UNKNOWN_ERROR = 0; // 0x0
+  }
+
+  @RequiresApi(21) public final class CameraXConfig {
+    method public androidx.camera.core.CameraSelector? getAvailableCamerasLimiter(androidx.camera.core.CameraSelector?);
+    method public java.util.concurrent.Executor? getCameraExecutor(java.util.concurrent.Executor?);
+    method public int getMinimumLoggingLevel();
+    method public android.os.Handler? getSchedulerHandler(android.os.Handler?);
+  }
+
+  public static final class CameraXConfig.Builder {
+    method public androidx.camera.core.CameraXConfig build();
+    method public static androidx.camera.core.CameraXConfig.Builder fromConfig(androidx.camera.core.CameraXConfig);
+    method public androidx.camera.core.CameraXConfig.Builder setAvailableCamerasLimiter(androidx.camera.core.CameraSelector);
+    method public androidx.camera.core.CameraXConfig.Builder setCameraExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.core.CameraXConfig.Builder setMinimumLoggingLevel(@IntRange(from=android.util.Log.DEBUG, to=android.util.Log.ERROR) int);
+    method public androidx.camera.core.CameraXConfig.Builder setSchedulerHandler(android.os.Handler);
+  }
+
+  public static interface CameraXConfig.Provider {
+    method public androidx.camera.core.CameraXConfig getCameraXConfig();
+  }
+
+  @RequiresApi(21) public class ConcurrentCamera {
+    ctor public ConcurrentCamera(java.util.List<androidx.camera.core.Camera!>);
+    method public java.util.List<androidx.camera.core.Camera!> getCameras();
+  }
+
+  public static final class ConcurrentCamera.SingleCameraConfig {
+    ctor public ConcurrentCamera.SingleCameraConfig(androidx.camera.core.CameraSelector, androidx.camera.core.UseCaseGroup, androidx.lifecycle.LifecycleOwner);
+    method public androidx.camera.core.CameraSelector getCameraSelector();
+    method public androidx.lifecycle.LifecycleOwner getLifecycleOwner();
+    method public androidx.camera.core.UseCaseGroup getUseCaseGroup();
+  }
+
+  @RequiresApi(21) public final class DisplayOrientedMeteringPointFactory extends androidx.camera.core.MeteringPointFactory {
+    ctor public DisplayOrientedMeteringPointFactory(android.view.Display, androidx.camera.core.CameraInfo, float, float);
+  }
+
+  @RequiresApi(21) public final class DynamicRange {
+    ctor public DynamicRange(int, int);
+    method public int getBitDepth();
+    method public int getEncoding();
+    field public static final int BIT_DEPTH_10_BIT = 10; // 0xa
+    field public static final int BIT_DEPTH_8_BIT = 8; // 0x8
+    field public static final int BIT_DEPTH_UNSPECIFIED = 0; // 0x0
+    field public static final androidx.camera.core.DynamicRange DOLBY_VISION_10_BIT;
+    field public static final androidx.camera.core.DynamicRange DOLBY_VISION_8_BIT;
+    field public static final int ENCODING_DOLBY_VISION = 6; // 0x6
+    field public static final int ENCODING_HDR10 = 4; // 0x4
+    field public static final int ENCODING_HDR10_PLUS = 5; // 0x5
+    field public static final int ENCODING_HDR_UNSPECIFIED = 2; // 0x2
+    field public static final int ENCODING_HLG = 3; // 0x3
+    field public static final int ENCODING_SDR = 1; // 0x1
+    field public static final int ENCODING_UNSPECIFIED = 0; // 0x0
+    field public static final androidx.camera.core.DynamicRange HDR10_10_BIT;
+    field public static final androidx.camera.core.DynamicRange HDR10_PLUS_10_BIT;
+    field public static final androidx.camera.core.DynamicRange HDR_UNSPECIFIED_10_BIT;
+    field public static final androidx.camera.core.DynamicRange HLG_10_BIT;
+    field public static final androidx.camera.core.DynamicRange SDR;
+    field public static final androidx.camera.core.DynamicRange UNSPECIFIED;
+  }
+
+  @SuppressCompatibility @RequiresApi(21) @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalGetImage {
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalLensFacing {
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalUseCaseApi {
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalZeroShutterLag {
+  }
+
+  @RequiresApi(21) public interface ExposureState {
+    method public int getExposureCompensationIndex();
+    method public android.util.Range<java.lang.Integer!> getExposureCompensationRange();
+    method public android.util.Rational getExposureCompensationStep();
+    method public boolean isExposureCompensationSupported();
+  }
+
+  @RequiresApi(21) public interface ExtendableBuilder<T> {
+    method public T build();
+  }
+
+  @RequiresApi(21) public final class FocusMeteringAction {
+    method public long getAutoCancelDurationInMillis();
+    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAe();
+    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAf();
+    method public java.util.List<androidx.camera.core.MeteringPoint!> getMeteringPointsAwb();
+    method public boolean isAutoCancelEnabled();
+    field public static final int FLAG_AE = 2; // 0x2
+    field public static final int FLAG_AF = 1; // 0x1
+    field public static final int FLAG_AWB = 4; // 0x4
+  }
+
+  public static class FocusMeteringAction.Builder {
+    ctor public FocusMeteringAction.Builder(androidx.camera.core.MeteringPoint);
+    ctor public FocusMeteringAction.Builder(androidx.camera.core.MeteringPoint, int);
+    method public androidx.camera.core.FocusMeteringAction.Builder addPoint(androidx.camera.core.MeteringPoint);
+    method public androidx.camera.core.FocusMeteringAction.Builder addPoint(androidx.camera.core.MeteringPoint, int);
+    method public androidx.camera.core.FocusMeteringAction build();
+    method public androidx.camera.core.FocusMeteringAction.Builder disableAutoCancel();
+    method public androidx.camera.core.FocusMeteringAction.Builder setAutoCancelDuration(@IntRange(from=1) long, java.util.concurrent.TimeUnit);
+  }
+
+  @RequiresApi(21) public final class FocusMeteringResult {
+    method public boolean isFocusSuccessful();
+  }
+
+  @RequiresApi(21) public final class ImageAnalysis extends androidx.camera.core.UseCase {
+    method public void clearAnalyzer();
+    method @SuppressCompatibility @androidx.camera.core.ExperimentalUseCaseApi public java.util.concurrent.Executor? getBackgroundExecutor();
+    method public int getBackpressureStrategy();
+    method public int getImageQueueDepth();
+    method public int getOutputImageFormat();
+    method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
+    method public int getTargetRotation();
+    method public boolean isOutputImageRotationEnabled();
+    method public void setAnalyzer(java.util.concurrent.Executor, androidx.camera.core.ImageAnalysis.Analyzer);
+    method public void setTargetRotation(int);
+    field public static final int COORDINATE_SYSTEM_ORIGINAL = 0; // 0x0
+    field public static final int OUTPUT_IMAGE_FORMAT_RGBA_8888 = 2; // 0x2
+    field public static final int OUTPUT_IMAGE_FORMAT_YUV_420_888 = 1; // 0x1
+    field public static final int STRATEGY_BLOCK_PRODUCER = 1; // 0x1
+    field public static final int STRATEGY_KEEP_ONLY_LATEST = 0; // 0x0
+  }
+
+  public static interface ImageAnalysis.Analyzer {
+    method public void analyze(androidx.camera.core.ImageProxy);
+    method public default android.util.Size? getDefaultTargetResolution();
+    method public default int getTargetCoordinateSystem();
+    method public default void updateTransform(android.graphics.Matrix?);
+  }
+
+  public static final class ImageAnalysis.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageAnalysis> {
+    ctor public ImageAnalysis.Builder();
+    method public androidx.camera.core.ImageAnalysis build();
+    method public androidx.camera.core.ImageAnalysis.Builder setBackgroundExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.core.ImageAnalysis.Builder setBackpressureStrategy(int);
+    method public androidx.camera.core.ImageAnalysis.Builder setImageQueueDepth(int);
+    method public androidx.camera.core.ImageAnalysis.Builder setOutputImageFormat(int);
+    method @RequiresApi(23) public androidx.camera.core.ImageAnalysis.Builder setOutputImageRotationEnabled(boolean);
+    method public androidx.camera.core.ImageAnalysis.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
+    method @Deprecated public androidx.camera.core.ImageAnalysis.Builder setTargetAspectRatio(int);
+    method public androidx.camera.core.ImageAnalysis.Builder setTargetName(String);
+    method @Deprecated public androidx.camera.core.ImageAnalysis.Builder setTargetResolution(android.util.Size);
+    method public androidx.camera.core.ImageAnalysis.Builder setTargetRotation(int);
+  }
+
+  @RequiresApi(21) public final class ImageCapture extends androidx.camera.core.UseCase {
+    method public int getCaptureMode();
+    method public int getFlashMode();
+    method @IntRange(from=1, to=100) public int getJpegQuality();
+    method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
+    method public int getTargetRotation();
+    method public void setCropAspectRatio(android.util.Rational);
+    method public void setFlashMode(int);
+    method public void setTargetRotation(int);
+    method public void takePicture(androidx.camera.core.ImageCapture.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
+    method public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
+    field public static final int CAPTURE_MODE_MAXIMIZE_QUALITY = 0; // 0x0
+    field public static final int CAPTURE_MODE_MINIMIZE_LATENCY = 1; // 0x1
+    field @SuppressCompatibility @androidx.camera.core.ExperimentalZeroShutterLag public static final int CAPTURE_MODE_ZERO_SHUTTER_LAG = 2; // 0x2
+    field public static final int ERROR_CAMERA_CLOSED = 3; // 0x3
+    field public static final int ERROR_CAPTURE_FAILED = 2; // 0x2
+    field public static final int ERROR_FILE_IO = 1; // 0x1
+    field public static final int ERROR_INVALID_CAMERA = 4; // 0x4
+    field public static final int ERROR_UNKNOWN = 0; // 0x0
+    field public static final int FLASH_MODE_AUTO = 0; // 0x0
+    field public static final int FLASH_MODE_OFF = 2; // 0x2
+    field public static final int FLASH_MODE_ON = 1; // 0x1
+  }
+
+  public static final class ImageCapture.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.ImageCapture> {
+    ctor public ImageCapture.Builder();
+    method public androidx.camera.core.ImageCapture build();
+    method public androidx.camera.core.ImageCapture.Builder setCaptureMode(int);
+    method public androidx.camera.core.ImageCapture.Builder setFlashMode(int);
+    method public androidx.camera.core.ImageCapture.Builder setIoExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.core.ImageCapture.Builder setJpegQuality(@IntRange(from=1, to=100) int);
+    method public androidx.camera.core.ImageCapture.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
+    method @Deprecated public androidx.camera.core.ImageCapture.Builder setTargetAspectRatio(int);
+    method public androidx.camera.core.ImageCapture.Builder setTargetName(String);
+    method @Deprecated public androidx.camera.core.ImageCapture.Builder setTargetResolution(android.util.Size);
+    method public androidx.camera.core.ImageCapture.Builder setTargetRotation(int);
+  }
+
+  public static final class ImageCapture.Metadata {
+    ctor public ImageCapture.Metadata();
+    method public android.location.Location? getLocation();
+    method public boolean isReversedHorizontal();
+    method public boolean isReversedVertical();
+    method public void setLocation(android.location.Location?);
+    method public void setReversedHorizontal(boolean);
+    method public void setReversedVertical(boolean);
+  }
+
+  public abstract static class ImageCapture.OnImageCapturedCallback {
+    ctor public ImageCapture.OnImageCapturedCallback();
+    method public void onCaptureSuccess(androidx.camera.core.ImageProxy);
+    method public void onError(androidx.camera.core.ImageCaptureException);
+  }
+
+  public static interface ImageCapture.OnImageSavedCallback {
+    method public void onError(androidx.camera.core.ImageCaptureException);
+    method public void onImageSaved(androidx.camera.core.ImageCapture.OutputFileResults);
+  }
+
+  public static final class ImageCapture.OutputFileOptions {
+  }
+
+  public static final class ImageCapture.OutputFileOptions.Builder {
+    ctor public ImageCapture.OutputFileOptions.Builder(android.content.ContentResolver, android.net.Uri, android.content.ContentValues);
+    ctor public ImageCapture.OutputFileOptions.Builder(java.io.File);
+    ctor public ImageCapture.OutputFileOptions.Builder(java.io.OutputStream);
+    method public androidx.camera.core.ImageCapture.OutputFileOptions build();
+    method public androidx.camera.core.ImageCapture.OutputFileOptions.Builder setMetadata(androidx.camera.core.ImageCapture.Metadata);
+  }
+
+  public static class ImageCapture.OutputFileResults {
+    method public android.net.Uri? getSavedUri();
+  }
+
+  @RequiresApi(21) public class ImageCaptureException extends java.lang.Exception {
+    ctor public ImageCaptureException(int, String, Throwable?);
+    method public int getImageCaptureError();
+  }
+
+  @RequiresApi(21) public interface ImageInfo {
+    method public int getRotationDegrees();
+    method public default android.graphics.Matrix getSensorToBufferTransformMatrix();
+    method public long getTimestamp();
+  }
+
+  public interface ImageProcessor {
+    method public androidx.camera.core.ImageProcessor.Response process(androidx.camera.core.ImageProcessor.Request) throws androidx.camera.core.ProcessingException;
+  }
+
+  public static interface ImageProcessor.Request {
+    method public androidx.camera.core.ImageProxy getInputImage();
+    method public int getOutputFormat();
+  }
+
+  public static interface ImageProcessor.Response {
+    method public androidx.camera.core.ImageProxy getOutputImage();
+  }
+
+  @RequiresApi(21) public interface ImageProxy extends java.lang.AutoCloseable {
+    method public void close();
+    method public android.graphics.Rect getCropRect();
+    method public int getFormat();
+    method public int getHeight();
+    method @SuppressCompatibility @androidx.camera.core.ExperimentalGetImage public android.media.Image? getImage();
+    method public androidx.camera.core.ImageInfo getImageInfo();
+    method public androidx.camera.core.ImageProxy.PlaneProxy![] getPlanes();
+    method public int getWidth();
+    method public void setCropRect(android.graphics.Rect?);
+    method public default android.graphics.Bitmap toBitmap();
+  }
+
+  public static interface ImageProxy.PlaneProxy {
+    method public java.nio.ByteBuffer getBuffer();
+    method public int getPixelStride();
+    method public int getRowStride();
+  }
+
+  @RequiresApi(21) public class InitializationException extends java.lang.Exception {
+    ctor public InitializationException(String?);
+    ctor public InitializationException(String?, Throwable?);
+    ctor public InitializationException(Throwable?);
+  }
+
+  @RequiresApi(21) public class MeteringPoint {
+    method public float getSize();
+  }
+
+  @RequiresApi(21) public abstract class MeteringPointFactory {
+    method public final androidx.camera.core.MeteringPoint createPoint(float, float);
+    method public final androidx.camera.core.MeteringPoint createPoint(float, float, float);
+    method public static float getDefaultPointSize();
+  }
+
+  @RequiresApi(21) public class MirrorMode {
+    field public static final int MIRROR_MODE_OFF = 0; // 0x0
+    field public static final int MIRROR_MODE_ON = 1; // 0x1
+    field public static final int MIRROR_MODE_ON_FRONT_ONLY = 2; // 0x2
+  }
+
+  @RequiresApi(21) public final class Preview extends androidx.camera.core.UseCase {
+    method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
+    method public android.util.Range<java.lang.Integer!> getTargetFrameRate();
+    method public int getTargetRotation();
+    method @UiThread public void setSurfaceProvider(androidx.camera.core.Preview.SurfaceProvider?);
+    method @UiThread public void setSurfaceProvider(java.util.concurrent.Executor, androidx.camera.core.Preview.SurfaceProvider?);
+    method public void setTargetRotation(int);
+  }
+
+  public static final class Preview.Builder implements androidx.camera.core.ExtendableBuilder<androidx.camera.core.Preview> {
+    ctor public Preview.Builder();
+    method public androidx.camera.core.Preview build();
+    method public androidx.camera.core.Preview.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
+    method @Deprecated public androidx.camera.core.Preview.Builder setTargetAspectRatio(int);
+    method public androidx.camera.core.Preview.Builder setTargetFrameRate(android.util.Range<java.lang.Integer!>);
+    method public androidx.camera.core.Preview.Builder setTargetName(String);
+    method @Deprecated public androidx.camera.core.Preview.Builder setTargetResolution(android.util.Size);
+    method public androidx.camera.core.Preview.Builder setTargetRotation(int);
+  }
+
+  public static interface Preview.SurfaceProvider {
+    method public void onSurfaceRequested(androidx.camera.core.SurfaceRequest);
+  }
+
+  public class ProcessingException extends java.lang.Exception {
+    ctor public ProcessingException();
+  }
+
+  @RequiresApi(21) public class ResolutionInfo {
+    ctor public ResolutionInfo(android.util.Size, android.graphics.Rect, int);
+    method public android.graphics.Rect getCropRect();
+    method public android.util.Size getResolution();
+    method public int getRotationDegrees();
+  }
+
+  @RequiresApi(21) public class SurfaceOrientedMeteringPointFactory extends androidx.camera.core.MeteringPointFactory {
+    ctor public SurfaceOrientedMeteringPointFactory(float, float);
+    ctor public SurfaceOrientedMeteringPointFactory(float, float, androidx.camera.core.UseCase);
+  }
+
+  public interface SurfaceOutput extends java.io.Closeable {
+    method public void close();
+    method public android.util.Size getSize();
+    method public android.view.Surface getSurface(java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.core.SurfaceOutput.Event!>);
+    method public int getTargets();
+    method public void updateTransformMatrix(float[], float[]);
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class SurfaceOutput.Event {
+    method public abstract int getEventCode();
+    method public abstract androidx.camera.core.SurfaceOutput getSurfaceOutput();
+    field public static final int EVENT_REQUEST_CLOSE = 0; // 0x0
+  }
+
+  public interface SurfaceProcessor {
+    method public void onInputSurface(androidx.camera.core.SurfaceRequest) throws androidx.camera.core.ProcessingException;
+    method public void onOutputSurface(androidx.camera.core.SurfaceOutput) throws androidx.camera.core.ProcessingException;
+  }
+
+  @RequiresApi(21) public final class SurfaceRequest {
+    method public void addRequestCancellationListener(java.util.concurrent.Executor, Runnable);
+    method public void clearTransformationInfoListener();
+    method public androidx.camera.core.DynamicRange getDynamicRange();
+    method public android.util.Size getResolution();
+    method public boolean invalidate();
+    method public void provideSurface(android.view.Surface, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.core.SurfaceRequest.Result!>);
+    method public void setTransformationInfoListener(java.util.concurrent.Executor, androidx.camera.core.SurfaceRequest.TransformationInfoListener);
+    method public boolean willNotProvideSurface();
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class SurfaceRequest.Result {
+    method public abstract int getResultCode();
+    method public abstract android.view.Surface getSurface();
+    field public static final int RESULT_INVALID_SURFACE = 2; // 0x2
+    field public static final int RESULT_REQUEST_CANCELLED = 1; // 0x1
+    field public static final int RESULT_SURFACE_ALREADY_PROVIDED = 3; // 0x3
+    field public static final int RESULT_SURFACE_USED_SUCCESSFULLY = 0; // 0x0
+    field public static final int RESULT_WILL_NOT_PROVIDE_SURFACE = 4; // 0x4
+  }
+
+  @com.google.auto.value.AutoValue public abstract static class SurfaceRequest.TransformationInfo {
+    method public abstract android.graphics.Rect getCropRect();
+    method public abstract int getRotationDegrees();
+  }
+
+  public static interface SurfaceRequest.TransformationInfoListener {
+    method public void onTransformationInfoUpdate(androidx.camera.core.SurfaceRequest.TransformationInfo);
+  }
+
+  @RequiresApi(21) public class TorchState {
+    field public static final int OFF = 0; // 0x0
+    field public static final int ON = 1; // 0x1
+  }
+
+  @RequiresApi(21) public abstract class UseCase {
+    method public static int snapToSurfaceRotation(@IntRange(from=0, to=359) int);
+  }
+
+  @RequiresApi(21) public final class UseCaseGroup {
+    method public java.util.List<androidx.camera.core.CameraEffect!> getEffects();
+    method public java.util.List<androidx.camera.core.UseCase!> getUseCases();
+    method public androidx.camera.core.ViewPort? getViewPort();
+  }
+
+  public static final class UseCaseGroup.Builder {
+    ctor public UseCaseGroup.Builder();
+    method public androidx.camera.core.UseCaseGroup.Builder addEffect(androidx.camera.core.CameraEffect);
+    method public androidx.camera.core.UseCaseGroup.Builder addUseCase(androidx.camera.core.UseCase);
+    method public androidx.camera.core.UseCaseGroup build();
+    method public androidx.camera.core.UseCaseGroup.Builder setViewPort(androidx.camera.core.ViewPort);
+  }
+
+  @RequiresApi(21) public final class ViewPort {
+    method public android.util.Rational getAspectRatio();
+    method public int getLayoutDirection();
+    method public int getRotation();
+    method public int getScaleType();
+    field public static final int FILL_CENTER = 1; // 0x1
+    field public static final int FILL_END = 2; // 0x2
+    field public static final int FILL_START = 0; // 0x0
+    field public static final int FIT = 3; // 0x3
+  }
+
+  public static final class ViewPort.Builder {
+    ctor public ViewPort.Builder(android.util.Rational, int);
+    method public androidx.camera.core.ViewPort build();
+    method public androidx.camera.core.ViewPort.Builder setLayoutDirection(int);
+    method public androidx.camera.core.ViewPort.Builder setScaleType(int);
+  }
+
+  @RequiresApi(21) public interface ZoomState {
+    method public float getLinearZoom();
+    method public float getMaxZoomRatio();
+    method public float getMinZoomRatio();
+    method public float getZoomRatio();
+  }
+
+}
+
+package androidx.camera.core.resolutionselector {
+
+  @RequiresApi(21) public final class AspectRatioStrategy {
+    ctor public AspectRatioStrategy(int, int);
+    method public int getFallbackRule();
+    method public int getPreferredAspectRatio();
+    field public static final int FALLBACK_RULE_AUTO = 1; // 0x1
+    field public static final int FALLBACK_RULE_NONE = 0; // 0x0
+    field public static final androidx.camera.core.resolutionselector.AspectRatioStrategy RATIO_16_9_FALLBACK_AUTO_STRATEGY;
+    field public static final androidx.camera.core.resolutionselector.AspectRatioStrategy RATIO_4_3_FALLBACK_AUTO_STRATEGY;
+  }
+
+  @RequiresApi(21) public interface ResolutionFilter {
+    method public java.util.List<android.util.Size!> filter(java.util.List<android.util.Size!>, int);
+  }
+
+  @RequiresApi(21) public final class ResolutionSelector {
+    method public int getAllowedResolutionMode();
+    method public androidx.camera.core.resolutionselector.AspectRatioStrategy getAspectRatioStrategy();
+    method public androidx.camera.core.resolutionselector.ResolutionFilter? getResolutionFilter();
+    method public androidx.camera.core.resolutionselector.ResolutionStrategy? getResolutionStrategy();
+    field public static final int PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION = 0; // 0x0
+    field public static final int PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE = 1; // 0x1
+  }
+
+  public static final class ResolutionSelector.Builder {
+    ctor public ResolutionSelector.Builder();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector build();
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setAllowedResolutionMode(int);
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setAspectRatioStrategy(androidx.camera.core.resolutionselector.AspectRatioStrategy);
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setResolutionFilter(androidx.camera.core.resolutionselector.ResolutionFilter);
+    method public androidx.camera.core.resolutionselector.ResolutionSelector.Builder setResolutionStrategy(androidx.camera.core.resolutionselector.ResolutionStrategy);
+  }
+
+  @RequiresApi(21) public final class ResolutionStrategy {
+    ctor public ResolutionStrategy(android.util.Size, int);
+    method public android.util.Size? getBoundSize();
+    method public int getFallbackRule();
+    field public static final int FALLBACK_RULE_CLOSEST_HIGHER = 2; // 0x2
+    field public static final int FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER = 1; // 0x1
+    field public static final int FALLBACK_RULE_CLOSEST_LOWER = 4; // 0x4
+    field public static final int FALLBACK_RULE_CLOSEST_LOWER_THEN_HIGHER = 3; // 0x3
+    field public static final int FALLBACK_RULE_NONE = 0; // 0x0
+    field public static final androidx.camera.core.resolutionselector.ResolutionStrategy HIGHEST_AVAILABLE_STRATEGY;
+  }
+
+}
+
diff --git a/camera/camera-effects-still-portrait/api/1.3.0-beta03.txt b/camera/camera-effects-still-portrait/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-effects-still-portrait/api/1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-effects-still-portrait/api/res-1.3.0-beta03.txt b/camera/camera-effects-still-portrait/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-effects-still-portrait/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-effects-still-portrait/api/restricted_1.3.0-beta03.txt b/camera/camera-effects-still-portrait/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-effects-still-portrait/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-effects/api/1.3.0-beta03.txt b/camera/camera-effects/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-effects/api/1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-effects/api/res-1.3.0-beta03.txt b/camera/camera-effects/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-effects/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-effects/api/restricted_1.3.0-beta03.txt b/camera/camera-effects/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-effects/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-extensions/api/1.3.0-beta03.txt b/camera/camera-extensions/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..5c6e740
--- /dev/null
+++ b/camera/camera-extensions/api/1.3.0-beta03.txt
@@ -0,0 +1,22 @@
+// Signature format: 4.0
+package androidx.camera.extensions {
+
+  @RequiresApi(21) public final class ExtensionMode {
+    field public static final int AUTO = 5; // 0x5
+    field public static final int BOKEH = 1; // 0x1
+    field public static final int FACE_RETOUCH = 4; // 0x4
+    field public static final int HDR = 2; // 0x2
+    field public static final int NIGHT = 3; // 0x3
+    field public static final int NONE = 0; // 0x0
+  }
+
+  @RequiresApi(21) public final class ExtensionsManager {
+    method public android.util.Range<java.lang.Long!>? getEstimatedCaptureLatencyRange(androidx.camera.core.CameraSelector, int);
+    method public androidx.camera.core.CameraSelector getExtensionEnabledCameraSelector(androidx.camera.core.CameraSelector, int);
+    method public static com.google.common.util.concurrent.ListenableFuture<androidx.camera.extensions.ExtensionsManager!> getInstanceAsync(android.content.Context, androidx.camera.core.CameraProvider);
+    method public boolean isExtensionAvailable(androidx.camera.core.CameraSelector, int);
+    method public boolean isImageAnalysisSupported(androidx.camera.core.CameraSelector, int);
+  }
+
+}
+
diff --git a/camera/camera-extensions/api/res-1.3.0-beta03.txt b/camera/camera-extensions/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-extensions/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-extensions/api/restricted_1.3.0-beta03.txt b/camera/camera-extensions/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..5c6e740
--- /dev/null
+++ b/camera/camera-extensions/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,22 @@
+// Signature format: 4.0
+package androidx.camera.extensions {
+
+  @RequiresApi(21) public final class ExtensionMode {
+    field public static final int AUTO = 5; // 0x5
+    field public static final int BOKEH = 1; // 0x1
+    field public static final int FACE_RETOUCH = 4; // 0x4
+    field public static final int HDR = 2; // 0x2
+    field public static final int NIGHT = 3; // 0x3
+    field public static final int NONE = 0; // 0x0
+  }
+
+  @RequiresApi(21) public final class ExtensionsManager {
+    method public android.util.Range<java.lang.Long!>? getEstimatedCaptureLatencyRange(androidx.camera.core.CameraSelector, int);
+    method public androidx.camera.core.CameraSelector getExtensionEnabledCameraSelector(androidx.camera.core.CameraSelector, int);
+    method public static com.google.common.util.concurrent.ListenableFuture<androidx.camera.extensions.ExtensionsManager!> getInstanceAsync(android.content.Context, androidx.camera.core.CameraProvider);
+    method public boolean isExtensionAvailable(androidx.camera.core.CameraSelector, int);
+    method public boolean isImageAnalysisSupported(androidx.camera.core.CameraSelector, int);
+  }
+
+}
+
diff --git a/camera/camera-lifecycle/api/1.3.0-beta03.txt b/camera/camera-lifecycle/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..d0621cb
--- /dev/null
+++ b/camera/camera-lifecycle/api/1.3.0-beta03.txt
@@ -0,0 +1,23 @@
+// Signature format: 4.0
+package androidx.camera.lifecycle {
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalCameraProviderConfiguration {
+  }
+
+  @RequiresApi(21) public final class ProcessCameraProvider implements androidx.camera.core.CameraProvider {
+    method @MainThread public androidx.camera.core.Camera bindToLifecycle(androidx.lifecycle.LifecycleOwner, androidx.camera.core.CameraSelector, androidx.camera.core.UseCase!...);
+    method @MainThread public androidx.camera.core.Camera bindToLifecycle(androidx.lifecycle.LifecycleOwner, androidx.camera.core.CameraSelector, androidx.camera.core.UseCaseGroup);
+    method @MainThread public androidx.camera.core.ConcurrentCamera bindToLifecycle(java.util.List<androidx.camera.core.ConcurrentCamera.SingleCameraConfig!>);
+    method @SuppressCompatibility @androidx.camera.lifecycle.ExperimentalCameraProviderConfiguration public static void configureInstance(androidx.camera.core.CameraXConfig);
+    method public java.util.List<androidx.camera.core.CameraInfo!> getAvailableCameraInfos();
+    method public java.util.List<java.util.List<androidx.camera.core.CameraInfo!>!> getAvailableConcurrentCameraInfos();
+    method public static com.google.common.util.concurrent.ListenableFuture<androidx.camera.lifecycle.ProcessCameraProvider!> getInstance(android.content.Context);
+    method public boolean hasCamera(androidx.camera.core.CameraSelector) throws androidx.camera.core.CameraInfoUnavailableException;
+    method public boolean isBound(androidx.camera.core.UseCase);
+    method @MainThread public boolean isConcurrentCameraModeOn();
+    method @MainThread public void unbind(androidx.camera.core.UseCase!...);
+    method @MainThread public void unbindAll();
+  }
+
+}
+
diff --git a/camera/camera-lifecycle/api/res-1.3.0-beta03.txt b/camera/camera-lifecycle/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-lifecycle/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-lifecycle/api/restricted_1.3.0-beta03.txt b/camera/camera-lifecycle/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..d0621cb
--- /dev/null
+++ b/camera/camera-lifecycle/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,23 @@
+// Signature format: 4.0
+package androidx.camera.lifecycle {
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalCameraProviderConfiguration {
+  }
+
+  @RequiresApi(21) public final class ProcessCameraProvider implements androidx.camera.core.CameraProvider {
+    method @MainThread public androidx.camera.core.Camera bindToLifecycle(androidx.lifecycle.LifecycleOwner, androidx.camera.core.CameraSelector, androidx.camera.core.UseCase!...);
+    method @MainThread public androidx.camera.core.Camera bindToLifecycle(androidx.lifecycle.LifecycleOwner, androidx.camera.core.CameraSelector, androidx.camera.core.UseCaseGroup);
+    method @MainThread public androidx.camera.core.ConcurrentCamera bindToLifecycle(java.util.List<androidx.camera.core.ConcurrentCamera.SingleCameraConfig!>);
+    method @SuppressCompatibility @androidx.camera.lifecycle.ExperimentalCameraProviderConfiguration public static void configureInstance(androidx.camera.core.CameraXConfig);
+    method public java.util.List<androidx.camera.core.CameraInfo!> getAvailableCameraInfos();
+    method public java.util.List<java.util.List<androidx.camera.core.CameraInfo!>!> getAvailableConcurrentCameraInfos();
+    method public static com.google.common.util.concurrent.ListenableFuture<androidx.camera.lifecycle.ProcessCameraProvider!> getInstance(android.content.Context);
+    method public boolean hasCamera(androidx.camera.core.CameraSelector) throws androidx.camera.core.CameraInfoUnavailableException;
+    method public boolean isBound(androidx.camera.core.UseCase);
+    method @MainThread public boolean isConcurrentCameraModeOn();
+    method @MainThread public void unbind(androidx.camera.core.UseCase!...);
+    method @MainThread public void unbindAll();
+  }
+
+}
+
diff --git a/camera/camera-mlkit-vision/api/1.3.0-beta03.txt b/camera/camera-mlkit-vision/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..0599c25
--- /dev/null
+++ b/camera/camera-mlkit-vision/api/1.3.0-beta03.txt
@@ -0,0 +1,20 @@
+// Signature format: 4.0
+package androidx.camera.mlkit.vision {
+
+  @RequiresApi(21) public class MlKitAnalyzer implements androidx.camera.core.ImageAnalysis.Analyzer {
+    ctor public MlKitAnalyzer(java.util.List<com.google.mlkit.vision.interfaces.Detector<?>!>, int, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.mlkit.vision.MlKitAnalyzer.Result!>);
+    method public final void analyze(androidx.camera.core.ImageProxy);
+    method public final android.util.Size getDefaultTargetResolution();
+    method public final int getTargetCoordinateSystem();
+    method public final void updateTransform(android.graphics.Matrix?);
+  }
+
+  public static final class MlKitAnalyzer.Result {
+    ctor public MlKitAnalyzer.Result(java.util.Map<com.google.mlkit.vision.interfaces.Detector<?>!,java.lang.Object!>, long, java.util.Map<com.google.mlkit.vision.interfaces.Detector<?>!,java.lang.Throwable!>);
+    method public Throwable? getThrowable(com.google.mlkit.vision.interfaces.Detector<?>);
+    method public long getTimestamp();
+    method public <T> T? getValue(com.google.mlkit.vision.interfaces.Detector<T!>);
+  }
+
+}
+
diff --git a/camera/camera-mlkit-vision/api/res-1.3.0-beta03.txt b/camera/camera-mlkit-vision/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-mlkit-vision/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-mlkit-vision/api/restricted_1.3.0-beta03.txt b/camera/camera-mlkit-vision/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..0599c25
--- /dev/null
+++ b/camera/camera-mlkit-vision/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,20 @@
+// Signature format: 4.0
+package androidx.camera.mlkit.vision {
+
+  @RequiresApi(21) public class MlKitAnalyzer implements androidx.camera.core.ImageAnalysis.Analyzer {
+    ctor public MlKitAnalyzer(java.util.List<com.google.mlkit.vision.interfaces.Detector<?>!>, int, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.mlkit.vision.MlKitAnalyzer.Result!>);
+    method public final void analyze(androidx.camera.core.ImageProxy);
+    method public final android.util.Size getDefaultTargetResolution();
+    method public final int getTargetCoordinateSystem();
+    method public final void updateTransform(android.graphics.Matrix?);
+  }
+
+  public static final class MlKitAnalyzer.Result {
+    ctor public MlKitAnalyzer.Result(java.util.Map<com.google.mlkit.vision.interfaces.Detector<?>!,java.lang.Object!>, long, java.util.Map<com.google.mlkit.vision.interfaces.Detector<?>!,java.lang.Throwable!>);
+    method public Throwable? getThrowable(com.google.mlkit.vision.interfaces.Detector<?>);
+    method public long getTimestamp();
+    method public <T> T? getValue(com.google.mlkit.vision.interfaces.Detector<T!>);
+  }
+
+}
+
diff --git a/camera/camera-video/api/1.3.0-beta03.txt b/camera/camera-video/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..b9cc77a
--- /dev/null
+++ b/camera/camera-video/api/1.3.0-beta03.txt
@@ -0,0 +1,207 @@
+// Signature format: 4.0
+package androidx.camera.video {
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class AudioStats {
+    method public abstract int getAudioState();
+    method public abstract Throwable? getErrorCause();
+    method public boolean hasAudio();
+    method public boolean hasError();
+    field public static final int AUDIO_STATE_ACTIVE = 0; // 0x0
+    field public static final int AUDIO_STATE_DISABLED = 1; // 0x1
+    field public static final int AUDIO_STATE_ENCODER_ERROR = 3; // 0x3
+    field public static final int AUDIO_STATE_MUTED = 5; // 0x5
+    field public static final int AUDIO_STATE_SOURCE_ERROR = 4; // 0x4
+    field public static final int AUDIO_STATE_SOURCE_SILENCED = 2; // 0x2
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalPersistentRecording {
+  }
+
+  @RequiresApi(21) public class FallbackStrategy {
+    method public static androidx.camera.video.FallbackStrategy higherQualityOrLowerThan(androidx.camera.video.Quality);
+    method public static androidx.camera.video.FallbackStrategy higherQualityThan(androidx.camera.video.Quality);
+    method public static androidx.camera.video.FallbackStrategy lowerQualityOrHigherThan(androidx.camera.video.Quality);
+    method public static androidx.camera.video.FallbackStrategy lowerQualityThan(androidx.camera.video.Quality);
+  }
+
+  @RequiresApi(21) public final class FileDescriptorOutputOptions extends androidx.camera.video.OutputOptions {
+    method public android.os.ParcelFileDescriptor getParcelFileDescriptor();
+  }
+
+  @RequiresApi(21) public static final class FileDescriptorOutputOptions.Builder {
+    ctor public FileDescriptorOutputOptions.Builder(android.os.ParcelFileDescriptor);
+    method public androidx.camera.video.FileDescriptorOutputOptions build();
+    method public androidx.camera.video.FileDescriptorOutputOptions.Builder setDurationLimitMillis(@IntRange(from=0) long);
+    method public androidx.camera.video.FileDescriptorOutputOptions.Builder setFileSizeLimit(@IntRange(from=0) long);
+    method public androidx.camera.video.FileDescriptorOutputOptions.Builder setLocation(android.location.Location?);
+  }
+
+  @RequiresApi(21) public final class FileOutputOptions extends androidx.camera.video.OutputOptions {
+    method public java.io.File getFile();
+  }
+
+  @RequiresApi(21) public static final class FileOutputOptions.Builder {
+    ctor public FileOutputOptions.Builder(java.io.File);
+    method public androidx.camera.video.FileOutputOptions build();
+    method public androidx.camera.video.FileOutputOptions.Builder setDurationLimitMillis(@IntRange(from=0) long);
+    method public androidx.camera.video.FileOutputOptions.Builder setFileSizeLimit(@IntRange(from=0) long);
+    method public androidx.camera.video.FileOutputOptions.Builder setLocation(android.location.Location?);
+  }
+
+  @RequiresApi(21) public final class MediaStoreOutputOptions extends androidx.camera.video.OutputOptions {
+    method public android.net.Uri getCollectionUri();
+    method public android.content.ContentResolver getContentResolver();
+    method public android.content.ContentValues getContentValues();
+    field public static final android.content.ContentValues EMPTY_CONTENT_VALUES;
+  }
+
+  public static final class MediaStoreOutputOptions.Builder {
+    ctor public MediaStoreOutputOptions.Builder(android.content.ContentResolver, android.net.Uri);
+    method public androidx.camera.video.MediaStoreOutputOptions build();
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setContentValues(android.content.ContentValues);
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setDurationLimitMillis(@IntRange(from=0) long);
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setFileSizeLimit(@IntRange(from=0) long);
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setLocation(android.location.Location?);
+  }
+
+  @RequiresApi(21) public abstract class OutputOptions {
+    method @IntRange(from=0) public long getDurationLimitMillis();
+    method @IntRange(from=0) public long getFileSizeLimit();
+    method public android.location.Location? getLocation();
+    field public static final int DURATION_UNLIMITED = 0; // 0x0
+    field public static final int FILE_SIZE_UNLIMITED = 0; // 0x0
+  }
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class OutputResults {
+    ctor public OutputResults();
+    method public abstract android.net.Uri getOutputUri();
+  }
+
+  @RequiresApi(21) public final class PendingRecording {
+    method @SuppressCompatibility @androidx.camera.video.ExperimentalPersistentRecording public androidx.camera.video.PendingRecording asPersistentRecording();
+    method @CheckResult public androidx.camera.video.Recording start(java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public androidx.camera.video.PendingRecording withAudioEnabled();
+  }
+
+  @RequiresApi(21) public class Quality {
+    field public static final androidx.camera.video.Quality FHD;
+    field public static final androidx.camera.video.Quality HD;
+    field public static final androidx.camera.video.Quality HIGHEST;
+    field public static final androidx.camera.video.Quality LOWEST;
+    field public static final androidx.camera.video.Quality SD;
+    field public static final androidx.camera.video.Quality UHD;
+  }
+
+  @RequiresApi(21) public final class QualitySelector {
+    method public static androidx.camera.video.QualitySelector from(androidx.camera.video.Quality);
+    method public static androidx.camera.video.QualitySelector from(androidx.camera.video.Quality, androidx.camera.video.FallbackStrategy);
+    method public static androidx.camera.video.QualitySelector fromOrderedList(java.util.List<androidx.camera.video.Quality!>);
+    method public static androidx.camera.video.QualitySelector fromOrderedList(java.util.List<androidx.camera.video.Quality!>, androidx.camera.video.FallbackStrategy);
+    method public static android.util.Size? getResolution(androidx.camera.core.CameraInfo, androidx.camera.video.Quality);
+    method @Deprecated public static java.util.List<androidx.camera.video.Quality!> getSupportedQualities(androidx.camera.core.CameraInfo);
+    method @Deprecated public static boolean isQualitySupported(androidx.camera.core.CameraInfo, androidx.camera.video.Quality);
+  }
+
+  @RequiresApi(21) public final class Recorder implements androidx.camera.video.VideoOutput {
+    method public int getAspectRatio();
+    method public java.util.concurrent.Executor? getExecutor();
+    method public androidx.camera.video.QualitySelector getQualitySelector();
+    method public int getTargetVideoEncodingBitRate();
+    method public static androidx.camera.video.VideoCapabilities getVideoCapabilities(androidx.camera.core.CameraInfo);
+    method public void onSurfaceRequested(androidx.camera.core.SurfaceRequest);
+    method @RequiresApi(26) public androidx.camera.video.PendingRecording prepareRecording(android.content.Context, androidx.camera.video.FileDescriptorOutputOptions);
+    method public androidx.camera.video.PendingRecording prepareRecording(android.content.Context, androidx.camera.video.FileOutputOptions);
+    method public androidx.camera.video.PendingRecording prepareRecording(android.content.Context, androidx.camera.video.MediaStoreOutputOptions);
+    field public static final androidx.camera.video.QualitySelector DEFAULT_QUALITY_SELECTOR;
+  }
+
+  @RequiresApi(21) public static final class Recorder.Builder {
+    ctor public Recorder.Builder();
+    method public androidx.camera.video.Recorder build();
+    method public androidx.camera.video.Recorder.Builder setAspectRatio(int);
+    method public androidx.camera.video.Recorder.Builder setExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.video.Recorder.Builder setQualitySelector(androidx.camera.video.QualitySelector);
+    method public androidx.camera.video.Recorder.Builder setTargetVideoEncodingBitRate(@IntRange(from=1) int);
+  }
+
+  @RequiresApi(21) public final class Recording implements java.lang.AutoCloseable {
+    method public void close();
+    method @SuppressCompatibility @androidx.camera.video.ExperimentalPersistentRecording public boolean isPersistent();
+    method public void mute(boolean);
+    method public void pause();
+    method public void resume();
+    method public void stop();
+  }
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class RecordingStats {
+    method public abstract androidx.camera.video.AudioStats getAudioStats();
+    method public abstract long getNumBytesRecorded();
+    method public abstract long getRecordedDurationNanos();
+  }
+
+  @RequiresApi(21) public interface VideoCapabilities {
+    method public java.util.Set<androidx.camera.core.DynamicRange!> getSupportedDynamicRanges();
+    method public java.util.List<androidx.camera.video.Quality!> getSupportedQualities(androidx.camera.core.DynamicRange);
+    method public boolean isQualitySupported(androidx.camera.video.Quality, androidx.camera.core.DynamicRange);
+  }
+
+  @RequiresApi(21) public final class VideoCapture<T extends androidx.camera.video.VideoOutput> extends androidx.camera.core.UseCase {
+    method public androidx.camera.core.DynamicRange getDynamicRange();
+    method public int getMirrorMode();
+    method public T getOutput();
+    method public android.util.Range<java.lang.Integer!> getTargetFrameRate();
+    method public int getTargetRotation();
+    method public void setTargetRotation(int);
+    method public static <T extends androidx.camera.video.VideoOutput> androidx.camera.video.VideoCapture<T!> withOutput(T);
+  }
+
+  @RequiresApi(21) public static final class VideoCapture.Builder<T extends androidx.camera.video.VideoOutput> implements androidx.camera.core.ExtendableBuilder<androidx.camera.video.VideoCapture> {
+    ctor public VideoCapture.Builder(T);
+    method public androidx.camera.video.VideoCapture<T!> build();
+    method public androidx.camera.video.VideoCapture.Builder<T!> setDynamicRange(androidx.camera.core.DynamicRange);
+    method public androidx.camera.video.VideoCapture.Builder<T!> setMirrorMode(int);
+    method public androidx.camera.video.VideoCapture.Builder<T!> setTargetFrameRate(android.util.Range<java.lang.Integer!>);
+    method public androidx.camera.video.VideoCapture.Builder<T!> setTargetRotation(int);
+  }
+
+  @RequiresApi(21) public interface VideoOutput {
+    method public void onSurfaceRequested(androidx.camera.core.SurfaceRequest);
+  }
+
+  @RequiresApi(21) public abstract class VideoRecordEvent {
+    method public androidx.camera.video.OutputOptions getOutputOptions();
+    method public androidx.camera.video.RecordingStats getRecordingStats();
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Finalize extends androidx.camera.video.VideoRecordEvent {
+    method public Throwable? getCause();
+    method public int getError();
+    method public androidx.camera.video.OutputResults getOutputResults();
+    method public boolean hasError();
+    field public static final int ERROR_DURATION_LIMIT_REACHED = 9; // 0x9
+    field public static final int ERROR_ENCODING_FAILED = 6; // 0x6
+    field public static final int ERROR_FILE_SIZE_LIMIT_REACHED = 2; // 0x2
+    field public static final int ERROR_INSUFFICIENT_STORAGE = 3; // 0x3
+    field public static final int ERROR_INVALID_OUTPUT_OPTIONS = 5; // 0x5
+    field public static final int ERROR_NONE = 0; // 0x0
+    field public static final int ERROR_NO_VALID_DATA = 8; // 0x8
+    field public static final int ERROR_RECORDER_ERROR = 7; // 0x7
+    field public static final int ERROR_RECORDING_GARBAGE_COLLECTED = 10; // 0xa
+    field public static final int ERROR_SOURCE_INACTIVE = 4; // 0x4
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Pause extends androidx.camera.video.VideoRecordEvent {
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Resume extends androidx.camera.video.VideoRecordEvent {
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Start extends androidx.camera.video.VideoRecordEvent {
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Status extends androidx.camera.video.VideoRecordEvent {
+  }
+
+}
+
diff --git a/camera/camera-video/api/res-1.3.0-beta03.txt b/camera/camera-video/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-video/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-video/api/restricted_1.3.0-beta03.txt b/camera/camera-video/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..b9cc77a
--- /dev/null
+++ b/camera/camera-video/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,207 @@
+// Signature format: 4.0
+package androidx.camera.video {
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class AudioStats {
+    method public abstract int getAudioState();
+    method public abstract Throwable? getErrorCause();
+    method public boolean hasAudio();
+    method public boolean hasError();
+    field public static final int AUDIO_STATE_ACTIVE = 0; // 0x0
+    field public static final int AUDIO_STATE_DISABLED = 1; // 0x1
+    field public static final int AUDIO_STATE_ENCODER_ERROR = 3; // 0x3
+    field public static final int AUDIO_STATE_MUTED = 5; // 0x5
+    field public static final int AUDIO_STATE_SOURCE_ERROR = 4; // 0x4
+    field public static final int AUDIO_STATE_SOURCE_SILENCED = 2; // 0x2
+  }
+
+  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalPersistentRecording {
+  }
+
+  @RequiresApi(21) public class FallbackStrategy {
+    method public static androidx.camera.video.FallbackStrategy higherQualityOrLowerThan(androidx.camera.video.Quality);
+    method public static androidx.camera.video.FallbackStrategy higherQualityThan(androidx.camera.video.Quality);
+    method public static androidx.camera.video.FallbackStrategy lowerQualityOrHigherThan(androidx.camera.video.Quality);
+    method public static androidx.camera.video.FallbackStrategy lowerQualityThan(androidx.camera.video.Quality);
+  }
+
+  @RequiresApi(21) public final class FileDescriptorOutputOptions extends androidx.camera.video.OutputOptions {
+    method public android.os.ParcelFileDescriptor getParcelFileDescriptor();
+  }
+
+  @RequiresApi(21) public static final class FileDescriptorOutputOptions.Builder {
+    ctor public FileDescriptorOutputOptions.Builder(android.os.ParcelFileDescriptor);
+    method public androidx.camera.video.FileDescriptorOutputOptions build();
+    method public androidx.camera.video.FileDescriptorOutputOptions.Builder setDurationLimitMillis(@IntRange(from=0) long);
+    method public androidx.camera.video.FileDescriptorOutputOptions.Builder setFileSizeLimit(@IntRange(from=0) long);
+    method public androidx.camera.video.FileDescriptorOutputOptions.Builder setLocation(android.location.Location?);
+  }
+
+  @RequiresApi(21) public final class FileOutputOptions extends androidx.camera.video.OutputOptions {
+    method public java.io.File getFile();
+  }
+
+  @RequiresApi(21) public static final class FileOutputOptions.Builder {
+    ctor public FileOutputOptions.Builder(java.io.File);
+    method public androidx.camera.video.FileOutputOptions build();
+    method public androidx.camera.video.FileOutputOptions.Builder setDurationLimitMillis(@IntRange(from=0) long);
+    method public androidx.camera.video.FileOutputOptions.Builder setFileSizeLimit(@IntRange(from=0) long);
+    method public androidx.camera.video.FileOutputOptions.Builder setLocation(android.location.Location?);
+  }
+
+  @RequiresApi(21) public final class MediaStoreOutputOptions extends androidx.camera.video.OutputOptions {
+    method public android.net.Uri getCollectionUri();
+    method public android.content.ContentResolver getContentResolver();
+    method public android.content.ContentValues getContentValues();
+    field public static final android.content.ContentValues EMPTY_CONTENT_VALUES;
+  }
+
+  public static final class MediaStoreOutputOptions.Builder {
+    ctor public MediaStoreOutputOptions.Builder(android.content.ContentResolver, android.net.Uri);
+    method public androidx.camera.video.MediaStoreOutputOptions build();
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setContentValues(android.content.ContentValues);
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setDurationLimitMillis(@IntRange(from=0) long);
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setFileSizeLimit(@IntRange(from=0) long);
+    method public androidx.camera.video.MediaStoreOutputOptions.Builder setLocation(android.location.Location?);
+  }
+
+  @RequiresApi(21) public abstract class OutputOptions {
+    method @IntRange(from=0) public long getDurationLimitMillis();
+    method @IntRange(from=0) public long getFileSizeLimit();
+    method public android.location.Location? getLocation();
+    field public static final int DURATION_UNLIMITED = 0; // 0x0
+    field public static final int FILE_SIZE_UNLIMITED = 0; // 0x0
+  }
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class OutputResults {
+    ctor public OutputResults();
+    method public abstract android.net.Uri getOutputUri();
+  }
+
+  @RequiresApi(21) public final class PendingRecording {
+    method @SuppressCompatibility @androidx.camera.video.ExperimentalPersistentRecording public androidx.camera.video.PendingRecording asPersistentRecording();
+    method @CheckResult public androidx.camera.video.Recording start(java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public androidx.camera.video.PendingRecording withAudioEnabled();
+  }
+
+  @RequiresApi(21) public class Quality {
+    field public static final androidx.camera.video.Quality FHD;
+    field public static final androidx.camera.video.Quality HD;
+    field public static final androidx.camera.video.Quality HIGHEST;
+    field public static final androidx.camera.video.Quality LOWEST;
+    field public static final androidx.camera.video.Quality SD;
+    field public static final androidx.camera.video.Quality UHD;
+  }
+
+  @RequiresApi(21) public final class QualitySelector {
+    method public static androidx.camera.video.QualitySelector from(androidx.camera.video.Quality);
+    method public static androidx.camera.video.QualitySelector from(androidx.camera.video.Quality, androidx.camera.video.FallbackStrategy);
+    method public static androidx.camera.video.QualitySelector fromOrderedList(java.util.List<androidx.camera.video.Quality!>);
+    method public static androidx.camera.video.QualitySelector fromOrderedList(java.util.List<androidx.camera.video.Quality!>, androidx.camera.video.FallbackStrategy);
+    method public static android.util.Size? getResolution(androidx.camera.core.CameraInfo, androidx.camera.video.Quality);
+    method @Deprecated public static java.util.List<androidx.camera.video.Quality!> getSupportedQualities(androidx.camera.core.CameraInfo);
+    method @Deprecated public static boolean isQualitySupported(androidx.camera.core.CameraInfo, androidx.camera.video.Quality);
+  }
+
+  @RequiresApi(21) public final class Recorder implements androidx.camera.video.VideoOutput {
+    method public int getAspectRatio();
+    method public java.util.concurrent.Executor? getExecutor();
+    method public androidx.camera.video.QualitySelector getQualitySelector();
+    method public int getTargetVideoEncodingBitRate();
+    method public static androidx.camera.video.VideoCapabilities getVideoCapabilities(androidx.camera.core.CameraInfo);
+    method public void onSurfaceRequested(androidx.camera.core.SurfaceRequest);
+    method @RequiresApi(26) public androidx.camera.video.PendingRecording prepareRecording(android.content.Context, androidx.camera.video.FileDescriptorOutputOptions);
+    method public androidx.camera.video.PendingRecording prepareRecording(android.content.Context, androidx.camera.video.FileOutputOptions);
+    method public androidx.camera.video.PendingRecording prepareRecording(android.content.Context, androidx.camera.video.MediaStoreOutputOptions);
+    field public static final androidx.camera.video.QualitySelector DEFAULT_QUALITY_SELECTOR;
+  }
+
+  @RequiresApi(21) public static final class Recorder.Builder {
+    ctor public Recorder.Builder();
+    method public androidx.camera.video.Recorder build();
+    method public androidx.camera.video.Recorder.Builder setAspectRatio(int);
+    method public androidx.camera.video.Recorder.Builder setExecutor(java.util.concurrent.Executor);
+    method public androidx.camera.video.Recorder.Builder setQualitySelector(androidx.camera.video.QualitySelector);
+    method public androidx.camera.video.Recorder.Builder setTargetVideoEncodingBitRate(@IntRange(from=1) int);
+  }
+
+  @RequiresApi(21) public final class Recording implements java.lang.AutoCloseable {
+    method public void close();
+    method @SuppressCompatibility @androidx.camera.video.ExperimentalPersistentRecording public boolean isPersistent();
+    method public void mute(boolean);
+    method public void pause();
+    method public void resume();
+    method public void stop();
+  }
+
+  @RequiresApi(21) @com.google.auto.value.AutoValue public abstract class RecordingStats {
+    method public abstract androidx.camera.video.AudioStats getAudioStats();
+    method public abstract long getNumBytesRecorded();
+    method public abstract long getRecordedDurationNanos();
+  }
+
+  @RequiresApi(21) public interface VideoCapabilities {
+    method public java.util.Set<androidx.camera.core.DynamicRange!> getSupportedDynamicRanges();
+    method public java.util.List<androidx.camera.video.Quality!> getSupportedQualities(androidx.camera.core.DynamicRange);
+    method public boolean isQualitySupported(androidx.camera.video.Quality, androidx.camera.core.DynamicRange);
+  }
+
+  @RequiresApi(21) public final class VideoCapture<T extends androidx.camera.video.VideoOutput> extends androidx.camera.core.UseCase {
+    method public androidx.camera.core.DynamicRange getDynamicRange();
+    method public int getMirrorMode();
+    method public T getOutput();
+    method public android.util.Range<java.lang.Integer!> getTargetFrameRate();
+    method public int getTargetRotation();
+    method public void setTargetRotation(int);
+    method public static <T extends androidx.camera.video.VideoOutput> androidx.camera.video.VideoCapture<T!> withOutput(T);
+  }
+
+  @RequiresApi(21) public static final class VideoCapture.Builder<T extends androidx.camera.video.VideoOutput> implements androidx.camera.core.ExtendableBuilder<androidx.camera.video.VideoCapture> {
+    ctor public VideoCapture.Builder(T);
+    method public androidx.camera.video.VideoCapture<T!> build();
+    method public androidx.camera.video.VideoCapture.Builder<T!> setDynamicRange(androidx.camera.core.DynamicRange);
+    method public androidx.camera.video.VideoCapture.Builder<T!> setMirrorMode(int);
+    method public androidx.camera.video.VideoCapture.Builder<T!> setTargetFrameRate(android.util.Range<java.lang.Integer!>);
+    method public androidx.camera.video.VideoCapture.Builder<T!> setTargetRotation(int);
+  }
+
+  @RequiresApi(21) public interface VideoOutput {
+    method public void onSurfaceRequested(androidx.camera.core.SurfaceRequest);
+  }
+
+  @RequiresApi(21) public abstract class VideoRecordEvent {
+    method public androidx.camera.video.OutputOptions getOutputOptions();
+    method public androidx.camera.video.RecordingStats getRecordingStats();
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Finalize extends androidx.camera.video.VideoRecordEvent {
+    method public Throwable? getCause();
+    method public int getError();
+    method public androidx.camera.video.OutputResults getOutputResults();
+    method public boolean hasError();
+    field public static final int ERROR_DURATION_LIMIT_REACHED = 9; // 0x9
+    field public static final int ERROR_ENCODING_FAILED = 6; // 0x6
+    field public static final int ERROR_FILE_SIZE_LIMIT_REACHED = 2; // 0x2
+    field public static final int ERROR_INSUFFICIENT_STORAGE = 3; // 0x3
+    field public static final int ERROR_INVALID_OUTPUT_OPTIONS = 5; // 0x5
+    field public static final int ERROR_NONE = 0; // 0x0
+    field public static final int ERROR_NO_VALID_DATA = 8; // 0x8
+    field public static final int ERROR_RECORDER_ERROR = 7; // 0x7
+    field public static final int ERROR_RECORDING_GARBAGE_COLLECTED = 10; // 0xa
+    field public static final int ERROR_SOURCE_INACTIVE = 4; // 0x4
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Pause extends androidx.camera.video.VideoRecordEvent {
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Resume extends androidx.camera.video.VideoRecordEvent {
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Start extends androidx.camera.video.VideoRecordEvent {
+  }
+
+  @RequiresApi(21) public static final class VideoRecordEvent.Status extends androidx.camera.video.VideoRecordEvent {
+  }
+
+}
+
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/MediaCodecInfoReportIncorrectInfoQuirk.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/MediaCodecInfoReportIncorrectInfoQuirk.java
index 735a24e..5abd8cf 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/MediaCodecInfoReportIncorrectInfoQuirk.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/MediaCodecInfoReportIncorrectInfoQuirk.java
@@ -42,6 +42,8 @@
  *     Bug Id: 192431846, 199582287, 218841498, 203481899, 216583006, 278843124, 278855948
  *     Description: Quirk which denotes {@link MediaCodecInfo} queried by {@link MediaCodecList}
  *                  returns incorrect info.
+ *                  <ul>
+ *                  <li>
  *                  On Nokia 1, {@link CamcorderProfile} indicates it can support resolutions
  *                  1280x720 and 640x480 for video codec type
  *                  {@link android.media.MediaRecorder.VideoEncoder#MPEG_4_SP}, which maps to
@@ -54,8 +56,14 @@
  *                  "video/mp4v-es" with 1280x720 or 640x480 can be used to record video. So the
  *                  maximum supported resolution 174x174 is probably incorrect for
  *                  "video/mp4v-es" and doesn't make sense. See b/192431846#comment3.
+ *                  </li>
+ *                  <li>
  *                  Motc C, X650 and LG-X230 have the same problem as Nokia 1. See b/199582287
+ *                  </li>
+ *                  <li>
  *                  Positivo Twist 2 Pro have the same problem as Nokia 1. See b/218841498
+ *                  </li>
+ *                  <li>
  *                  On Huawei Mate9, {@link CamcorderProfile} indicates it can support
  *                  resolutions 3840x2160 for video codec type
  *                  {@link android.media.MediaRecorder.VideoEncoder#HEVC}, but the current video
@@ -65,19 +73,30 @@
  *                  unsupported resolution for 3840x2160, it only support 3840x2112. By
  *                  experimental result, H.264 + 3840x2160 can be used to record video on this
  *                  device. Hence use quirk to workaround this case. See b/203481899#comment2.
- *                  @link MediaCodecInfo} searched by {@link MediaCodecList#getCodecInfos()}
+ *                  </li>
+ *                  <li>
+ *                  On Redmi Note 8 Pro, {@link CamcorderProfile} indicates it can support
+ *                  3840x2160, but {@link MediaCodecInfo.VideoCapabilities#isSizeSupported}
+ *                  returns {@code false} for 3840x2160. By experimental result, 3840x2160 can be
+ *                  used to record video on this device. See b/293827733.
+ *                  </li>
+ *                  <li>
+ *                  {@link MediaCodecInfo} searched by {@link MediaCodecList#getCodecInfos()}
  *                  shows the maximum supported resolution of the AVC encoder is 1920x1072.
  *                  However, the 1920x1080 option can be successfully configured properly.
- *                  See b/216583006, b/278843124, b/278855948.
- *     Device(s): Nokia 1, Motc C, X650, LG-X230, Positivo Twist 2 Pro, Huawei Mate9, Redmi note 4
- *                , LG K10 LTE K430, Samsung Galaxy A03 Core, Vivo Y75, Realme C11 2021
+ *                  See b/216583006, b/278843124, b/278855948, b/293827733.
+ *                  </li>
+ *                  </ul>
+ *     Device(s): Nokia 1, Motc C, X650, LG-X230, Positivo Twist 2 Pro, Huawei Mate9,
+ *                Redmi Note 8 Pro, Redmi Note 4, Redmi Note 9, LG K10 LTE K430,
+ *                Samsung Galaxy A03 Core, Vivo Y75, Realme C11 2021
  */
 @RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
 public class MediaCodecInfoReportIncorrectInfoQuirk implements Quirk {
 
     static boolean load() {
         return isNokia1() || isMotoC() || isX650() || isX230() || isHuaweiMate9()
-                || isPositivoTwist2Pro() || isFHDProblematicDevice();
+                || isRedmiNote8Pro() || isPositivoTwist2Pro() || isFHDProblematicDevice();
     }
 
     private static boolean isNokia1() {
@@ -101,6 +120,11 @@
         return "Huawei".equalsIgnoreCase(Build.BRAND) && "mha-l29".equalsIgnoreCase(Build.MODEL);
     }
 
+    private static boolean isRedmiNote8Pro() {
+        return "Redmi".equalsIgnoreCase(Build.BRAND) && "Redmi Note 8 Pro".equalsIgnoreCase(
+                Build.MODEL);
+    }
+
     private static boolean isPositivoTwist2Pro() {
         return "positivo".equalsIgnoreCase(Build.BRAND) && "twist 2 pro".equalsIgnoreCase(
                 Build.MODEL);
@@ -109,6 +133,7 @@
     public static final List<String> INCORRECT_FHD_PROFILE_MODEL_LIST = Arrays.asList(
             "lg-k430",
             "redmi note 4",
+            "m2003j15sc", // Redmi Note 9
             "rmx3231",
             "v2117",
             "sm-a032f",
@@ -121,7 +146,7 @@
         MediaFormatResolver formatResolver = new MediaFormatResolver(mediaFormat);
         if (isNokia1() || isMotoC() || isX650() || isX230() || isPositivoTwist2Pro()) {
             return formatResolver.isMpeg4();
-        } else if (isHuaweiMate9()) {
+        } else if (isHuaweiMate9() || isRedmiNote8Pro()) {
             return formatResolver.isVideo() && formatResolver.isSize(3840, 2160);
         } else if (isFHDProblematicDevice()) {
             return formatResolver.isAvc() && formatResolver.isSize(1920, 1080);
diff --git a/camera/camera-view/api/1.3.0-beta03.txt b/camera/camera-view/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..6184aeb
--- /dev/null
+++ b/camera/camera-view/api/1.3.0-beta03.txt
@@ -0,0 +1,173 @@
+// Signature format: 4.0
+package androidx.camera.view {
+
+  @RequiresApi(21) public abstract class CameraController {
+    method @MainThread public void clearEffects();
+    method @MainThread public void clearImageAnalysisAnalyzer();
+    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> enableTorch(boolean);
+    method @MainThread public androidx.camera.core.CameraControl? getCameraControl();
+    method @MainThread public androidx.camera.core.CameraInfo? getCameraInfo();
+    method @MainThread public androidx.camera.core.CameraSelector getCameraSelector();
+    method @MainThread public java.util.concurrent.Executor? getImageAnalysisBackgroundExecutor();
+    method @MainThread public int getImageAnalysisBackpressureStrategy();
+    method @MainThread public int getImageAnalysisImageQueueDepth();
+    method @MainThread public androidx.camera.view.CameraController.OutputSize? getImageAnalysisTargetSize();
+    method @MainThread public int getImageCaptureFlashMode();
+    method @MainThread public java.util.concurrent.Executor? getImageCaptureIoExecutor();
+    method @MainThread public int getImageCaptureMode();
+    method @MainThread public androidx.camera.view.CameraController.OutputSize? getImageCaptureTargetSize();
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> getInitializationFuture();
+    method @MainThread public androidx.camera.view.CameraController.OutputSize? getPreviewTargetSize();
+    method @MainThread public androidx.lifecycle.LiveData<java.lang.Integer!> getTapToFocusState();
+    method @MainThread public androidx.lifecycle.LiveData<java.lang.Integer!> getTorchState();
+    method @MainThread public androidx.camera.video.QualitySelector getVideoCaptureQualitySelector();
+    method @MainThread public androidx.lifecycle.LiveData<androidx.camera.core.ZoomState!> getZoomState();
+    method @MainThread public boolean hasCamera(androidx.camera.core.CameraSelector);
+    method @MainThread public boolean isImageAnalysisEnabled();
+    method @MainThread public boolean isImageCaptureEnabled();
+    method @MainThread public boolean isPinchToZoomEnabled();
+    method @MainThread public boolean isRecording();
+    method @MainThread public boolean isTapToFocusEnabled();
+    method @MainThread public boolean isVideoCaptureEnabled();
+    method @MainThread public void setCameraSelector(androidx.camera.core.CameraSelector);
+    method @MainThread public void setEffects(java.util.Set<androidx.camera.core.CameraEffect!>);
+    method @MainThread public void setEnabledUseCases(int);
+    method @MainThread public void setImageAnalysisAnalyzer(java.util.concurrent.Executor, androidx.camera.core.ImageAnalysis.Analyzer);
+    method @MainThread public void setImageAnalysisBackgroundExecutor(java.util.concurrent.Executor?);
+    method @MainThread public void setImageAnalysisBackpressureStrategy(int);
+    method @MainThread public void setImageAnalysisImageQueueDepth(int);
+    method @MainThread public void setImageAnalysisTargetSize(androidx.camera.view.CameraController.OutputSize?);
+    method @MainThread public void setImageCaptureFlashMode(int);
+    method @MainThread public void setImageCaptureIoExecutor(java.util.concurrent.Executor?);
+    method @MainThread public void setImageCaptureMode(int);
+    method @MainThread public void setImageCaptureTargetSize(androidx.camera.view.CameraController.OutputSize?);
+    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setLinearZoom(@FloatRange(from=0.0f, to=1.0f) float);
+    method @MainThread public void setPinchToZoomEnabled(boolean);
+    method @MainThread public void setPreviewTargetSize(androidx.camera.view.CameraController.OutputSize?);
+    method @MainThread public void setTapToFocusEnabled(boolean);
+    method @MainThread public void setVideoCaptureQualitySelector(androidx.camera.video.QualitySelector);
+    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setZoomRatio(float);
+    method @MainThread @RequiresApi(26) public androidx.camera.video.Recording startRecording(androidx.camera.video.FileDescriptorOutputOptions, androidx.camera.view.video.AudioConfig, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @MainThread public androidx.camera.video.Recording startRecording(androidx.camera.video.FileOutputOptions, androidx.camera.view.video.AudioConfig, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @MainThread public androidx.camera.video.Recording startRecording(androidx.camera.video.MediaStoreOutputOptions, androidx.camera.view.video.AudioConfig, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @MainThread public void takePicture(androidx.camera.core.ImageCapture.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
+    method @MainThread public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
+    field public static final int COORDINATE_SYSTEM_VIEW_REFERENCED = 1; // 0x1
+    field public static final int IMAGE_ANALYSIS = 2; // 0x2
+    field public static final int IMAGE_CAPTURE = 1; // 0x1
+    field public static final int TAP_TO_FOCUS_FAILED = 4; // 0x4
+    field public static final int TAP_TO_FOCUS_FOCUSED = 2; // 0x2
+    field public static final int TAP_TO_FOCUS_NOT_FOCUSED = 3; // 0x3
+    field public static final int TAP_TO_FOCUS_NOT_STARTED = 0; // 0x0
+    field public static final int TAP_TO_FOCUS_STARTED = 1; // 0x1
+    field public static final int VIDEO_CAPTURE = 4; // 0x4
+  }
+
+  @RequiresApi(21) public static final class CameraController.OutputSize {
+    ctor public CameraController.OutputSize(android.util.Size);
+    ctor public CameraController.OutputSize(int);
+    method public int getAspectRatio();
+    method public android.util.Size? getResolution();
+    field public static final int UNASSIGNED_ASPECT_RATIO = -1; // 0xffffffff
+  }
+
+  @RequiresApi(21) public final class LifecycleCameraController extends androidx.camera.view.CameraController {
+    ctor public LifecycleCameraController(android.content.Context);
+    method @MainThread public void bindToLifecycle(androidx.lifecycle.LifecycleOwner);
+    method @MainThread public void unbind();
+  }
+
+  @RequiresApi(21) public final class PreviewView extends android.widget.FrameLayout {
+    ctor @UiThread public PreviewView(android.content.Context);
+    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?);
+    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int);
+    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int, int);
+    method @UiThread public android.graphics.Bitmap? getBitmap();
+    method @UiThread public androidx.camera.view.CameraController? getController();
+    method @UiThread public androidx.camera.view.PreviewView.ImplementationMode getImplementationMode();
+    method @UiThread public androidx.camera.core.MeteringPointFactory getMeteringPointFactory();
+    method @SuppressCompatibility public androidx.camera.view.transform.OutputTransform? getOutputTransform();
+    method public androidx.lifecycle.LiveData<androidx.camera.view.PreviewView.StreamState!> getPreviewStreamState();
+    method @UiThread public androidx.camera.view.PreviewView.ScaleType getScaleType();
+    method @UiThread public androidx.camera.core.Preview.SurfaceProvider getSurfaceProvider();
+    method @UiThread public androidx.camera.core.ViewPort? getViewPort();
+    method @UiThread public androidx.camera.core.ViewPort? getViewPort(int);
+    method @UiThread public void setController(androidx.camera.view.CameraController?);
+    method @UiThread public void setImplementationMode(androidx.camera.view.PreviewView.ImplementationMode);
+    method @UiThread public void setScaleType(androidx.camera.view.PreviewView.ScaleType);
+  }
+
+  @RequiresApi(21) public enum PreviewView.ImplementationMode {
+    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode COMPATIBLE;
+    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode PERFORMANCE;
+  }
+
+  @RequiresApi(21) public enum PreviewView.ScaleType {
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_CENTER;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_END;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_START;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_CENTER;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_END;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_START;
+  }
+
+  public enum PreviewView.StreamState {
+    enum_constant public static final androidx.camera.view.PreviewView.StreamState IDLE;
+    enum_constant public static final androidx.camera.view.PreviewView.StreamState STREAMING;
+  }
+
+  @RequiresApi(21) public final class RotationProvider {
+    ctor public RotationProvider(android.content.Context);
+    method @CheckResult public boolean addListener(java.util.concurrent.Executor, androidx.camera.view.RotationProvider.Listener);
+    method public void removeListener(androidx.camera.view.RotationProvider.Listener);
+  }
+
+  public static interface RotationProvider.Listener {
+    method public void onRotationChanged(int);
+  }
+
+}
+
+package androidx.camera.view.transform {
+
+  @SuppressCompatibility @RequiresApi(21) public final class CoordinateTransform {
+    ctor public CoordinateTransform(androidx.camera.view.transform.OutputTransform, androidx.camera.view.transform.OutputTransform);
+    method public void mapPoint(android.graphics.PointF);
+    method public void mapPoints(float[]);
+    method public void mapRect(android.graphics.RectF);
+    method public void transform(android.graphics.Matrix);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) public final class FileTransformFactory {
+    ctor public FileTransformFactory();
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(android.content.ContentResolver, android.net.Uri) throws java.io.IOException;
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(java.io.File) throws java.io.IOException;
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(java.io.InputStream) throws java.io.IOException;
+    method public boolean isUsingExifOrientation();
+    method public void setUsingExifOrientation(boolean);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) public final class ImageProxyTransformFactory {
+    ctor public ImageProxyTransformFactory();
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(androidx.camera.core.ImageProxy);
+    method public boolean isUsingCropRect();
+    method public boolean isUsingRotationDegrees();
+    method public void setUsingCropRect(boolean);
+    method public void setUsingRotationDegrees(boolean);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) public final class OutputTransform {
+  }
+
+}
+
+package androidx.camera.view.video {
+
+  @RequiresApi(21) public class AudioConfig {
+    method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public static androidx.camera.view.video.AudioConfig create(boolean);
+    method public boolean getAudioEnabled();
+    field public static final androidx.camera.view.video.AudioConfig AUDIO_DISABLED;
+  }
+
+}
+
diff --git a/camera/camera-view/api/res-1.3.0-beta03.txt b/camera/camera-view/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-view/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-view/api/restricted_1.3.0-beta03.txt b/camera/camera-view/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..6184aeb
--- /dev/null
+++ b/camera/camera-view/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,173 @@
+// Signature format: 4.0
+package androidx.camera.view {
+
+  @RequiresApi(21) public abstract class CameraController {
+    method @MainThread public void clearEffects();
+    method @MainThread public void clearImageAnalysisAnalyzer();
+    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> enableTorch(boolean);
+    method @MainThread public androidx.camera.core.CameraControl? getCameraControl();
+    method @MainThread public androidx.camera.core.CameraInfo? getCameraInfo();
+    method @MainThread public androidx.camera.core.CameraSelector getCameraSelector();
+    method @MainThread public java.util.concurrent.Executor? getImageAnalysisBackgroundExecutor();
+    method @MainThread public int getImageAnalysisBackpressureStrategy();
+    method @MainThread public int getImageAnalysisImageQueueDepth();
+    method @MainThread public androidx.camera.view.CameraController.OutputSize? getImageAnalysisTargetSize();
+    method @MainThread public int getImageCaptureFlashMode();
+    method @MainThread public java.util.concurrent.Executor? getImageCaptureIoExecutor();
+    method @MainThread public int getImageCaptureMode();
+    method @MainThread public androidx.camera.view.CameraController.OutputSize? getImageCaptureTargetSize();
+    method public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> getInitializationFuture();
+    method @MainThread public androidx.camera.view.CameraController.OutputSize? getPreviewTargetSize();
+    method @MainThread public androidx.lifecycle.LiveData<java.lang.Integer!> getTapToFocusState();
+    method @MainThread public androidx.lifecycle.LiveData<java.lang.Integer!> getTorchState();
+    method @MainThread public androidx.camera.video.QualitySelector getVideoCaptureQualitySelector();
+    method @MainThread public androidx.lifecycle.LiveData<androidx.camera.core.ZoomState!> getZoomState();
+    method @MainThread public boolean hasCamera(androidx.camera.core.CameraSelector);
+    method @MainThread public boolean isImageAnalysisEnabled();
+    method @MainThread public boolean isImageCaptureEnabled();
+    method @MainThread public boolean isPinchToZoomEnabled();
+    method @MainThread public boolean isRecording();
+    method @MainThread public boolean isTapToFocusEnabled();
+    method @MainThread public boolean isVideoCaptureEnabled();
+    method @MainThread public void setCameraSelector(androidx.camera.core.CameraSelector);
+    method @MainThread public void setEffects(java.util.Set<androidx.camera.core.CameraEffect!>);
+    method @MainThread public void setEnabledUseCases(int);
+    method @MainThread public void setImageAnalysisAnalyzer(java.util.concurrent.Executor, androidx.camera.core.ImageAnalysis.Analyzer);
+    method @MainThread public void setImageAnalysisBackgroundExecutor(java.util.concurrent.Executor?);
+    method @MainThread public void setImageAnalysisBackpressureStrategy(int);
+    method @MainThread public void setImageAnalysisImageQueueDepth(int);
+    method @MainThread public void setImageAnalysisTargetSize(androidx.camera.view.CameraController.OutputSize?);
+    method @MainThread public void setImageCaptureFlashMode(int);
+    method @MainThread public void setImageCaptureIoExecutor(java.util.concurrent.Executor?);
+    method @MainThread public void setImageCaptureMode(int);
+    method @MainThread public void setImageCaptureTargetSize(androidx.camera.view.CameraController.OutputSize?);
+    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setLinearZoom(@FloatRange(from=0.0f, to=1.0f) float);
+    method @MainThread public void setPinchToZoomEnabled(boolean);
+    method @MainThread public void setPreviewTargetSize(androidx.camera.view.CameraController.OutputSize?);
+    method @MainThread public void setTapToFocusEnabled(boolean);
+    method @MainThread public void setVideoCaptureQualitySelector(androidx.camera.video.QualitySelector);
+    method @MainThread public com.google.common.util.concurrent.ListenableFuture<java.lang.Void!> setZoomRatio(float);
+    method @MainThread @RequiresApi(26) public androidx.camera.video.Recording startRecording(androidx.camera.video.FileDescriptorOutputOptions, androidx.camera.view.video.AudioConfig, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @MainThread public androidx.camera.video.Recording startRecording(androidx.camera.video.FileOutputOptions, androidx.camera.view.video.AudioConfig, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @MainThread public androidx.camera.video.Recording startRecording(androidx.camera.video.MediaStoreOutputOptions, androidx.camera.view.video.AudioConfig, java.util.concurrent.Executor, androidx.core.util.Consumer<androidx.camera.video.VideoRecordEvent!>);
+    method @MainThread public void takePicture(androidx.camera.core.ImageCapture.OutputFileOptions, java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageSavedCallback);
+    method @MainThread public void takePicture(java.util.concurrent.Executor, androidx.camera.core.ImageCapture.OnImageCapturedCallback);
+    field public static final int COORDINATE_SYSTEM_VIEW_REFERENCED = 1; // 0x1
+    field public static final int IMAGE_ANALYSIS = 2; // 0x2
+    field public static final int IMAGE_CAPTURE = 1; // 0x1
+    field public static final int TAP_TO_FOCUS_FAILED = 4; // 0x4
+    field public static final int TAP_TO_FOCUS_FOCUSED = 2; // 0x2
+    field public static final int TAP_TO_FOCUS_NOT_FOCUSED = 3; // 0x3
+    field public static final int TAP_TO_FOCUS_NOT_STARTED = 0; // 0x0
+    field public static final int TAP_TO_FOCUS_STARTED = 1; // 0x1
+    field public static final int VIDEO_CAPTURE = 4; // 0x4
+  }
+
+  @RequiresApi(21) public static final class CameraController.OutputSize {
+    ctor public CameraController.OutputSize(android.util.Size);
+    ctor public CameraController.OutputSize(int);
+    method public int getAspectRatio();
+    method public android.util.Size? getResolution();
+    field public static final int UNASSIGNED_ASPECT_RATIO = -1; // 0xffffffff
+  }
+
+  @RequiresApi(21) public final class LifecycleCameraController extends androidx.camera.view.CameraController {
+    ctor public LifecycleCameraController(android.content.Context);
+    method @MainThread public void bindToLifecycle(androidx.lifecycle.LifecycleOwner);
+    method @MainThread public void unbind();
+  }
+
+  @RequiresApi(21) public final class PreviewView extends android.widget.FrameLayout {
+    ctor @UiThread public PreviewView(android.content.Context);
+    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?);
+    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int);
+    ctor @UiThread public PreviewView(android.content.Context, android.util.AttributeSet?, int, int);
+    method @UiThread public android.graphics.Bitmap? getBitmap();
+    method @UiThread public androidx.camera.view.CameraController? getController();
+    method @UiThread public androidx.camera.view.PreviewView.ImplementationMode getImplementationMode();
+    method @UiThread public androidx.camera.core.MeteringPointFactory getMeteringPointFactory();
+    method @SuppressCompatibility public androidx.camera.view.transform.OutputTransform? getOutputTransform();
+    method public androidx.lifecycle.LiveData<androidx.camera.view.PreviewView.StreamState!> getPreviewStreamState();
+    method @UiThread public androidx.camera.view.PreviewView.ScaleType getScaleType();
+    method @UiThread public androidx.camera.core.Preview.SurfaceProvider getSurfaceProvider();
+    method @UiThread public androidx.camera.core.ViewPort? getViewPort();
+    method @UiThread public androidx.camera.core.ViewPort? getViewPort(int);
+    method @UiThread public void setController(androidx.camera.view.CameraController?);
+    method @UiThread public void setImplementationMode(androidx.camera.view.PreviewView.ImplementationMode);
+    method @UiThread public void setScaleType(androidx.camera.view.PreviewView.ScaleType);
+  }
+
+  @RequiresApi(21) public enum PreviewView.ImplementationMode {
+    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode COMPATIBLE;
+    enum_constant public static final androidx.camera.view.PreviewView.ImplementationMode PERFORMANCE;
+  }
+
+  @RequiresApi(21) public enum PreviewView.ScaleType {
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_CENTER;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_END;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FILL_START;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_CENTER;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_END;
+    enum_constant public static final androidx.camera.view.PreviewView.ScaleType FIT_START;
+  }
+
+  public enum PreviewView.StreamState {
+    enum_constant public static final androidx.camera.view.PreviewView.StreamState IDLE;
+    enum_constant public static final androidx.camera.view.PreviewView.StreamState STREAMING;
+  }
+
+  @RequiresApi(21) public final class RotationProvider {
+    ctor public RotationProvider(android.content.Context);
+    method @CheckResult public boolean addListener(java.util.concurrent.Executor, androidx.camera.view.RotationProvider.Listener);
+    method public void removeListener(androidx.camera.view.RotationProvider.Listener);
+  }
+
+  public static interface RotationProvider.Listener {
+    method public void onRotationChanged(int);
+  }
+
+}
+
+package androidx.camera.view.transform {
+
+  @SuppressCompatibility @RequiresApi(21) public final class CoordinateTransform {
+    ctor public CoordinateTransform(androidx.camera.view.transform.OutputTransform, androidx.camera.view.transform.OutputTransform);
+    method public void mapPoint(android.graphics.PointF);
+    method public void mapPoints(float[]);
+    method public void mapRect(android.graphics.RectF);
+    method public void transform(android.graphics.Matrix);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) public final class FileTransformFactory {
+    ctor public FileTransformFactory();
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(android.content.ContentResolver, android.net.Uri) throws java.io.IOException;
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(java.io.File) throws java.io.IOException;
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(java.io.InputStream) throws java.io.IOException;
+    method public boolean isUsingExifOrientation();
+    method public void setUsingExifOrientation(boolean);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) public final class ImageProxyTransformFactory {
+    ctor public ImageProxyTransformFactory();
+    method public androidx.camera.view.transform.OutputTransform getOutputTransform(androidx.camera.core.ImageProxy);
+    method public boolean isUsingCropRect();
+    method public boolean isUsingRotationDegrees();
+    method public void setUsingCropRect(boolean);
+    method public void setUsingRotationDegrees(boolean);
+  }
+
+  @SuppressCompatibility @RequiresApi(21) public final class OutputTransform {
+  }
+
+}
+
+package androidx.camera.view.video {
+
+  @RequiresApi(21) public class AudioConfig {
+    method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public static androidx.camera.view.video.AudioConfig create(boolean);
+    method public boolean getAudioEnabled();
+    field public static final androidx.camera.view.video.AudioConfig AUDIO_DISABLED;
+  }
+
+}
+
diff --git a/camera/camera-viewfinder-compose/api/1.3.0-beta03.txt b/camera/camera-viewfinder-compose/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-viewfinder-compose/api/1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-viewfinder-compose/api/res-1.3.0-beta03.txt b/camera/camera-viewfinder-compose/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-viewfinder-compose/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-viewfinder-compose/api/restricted_1.3.0-beta03.txt b/camera/camera-viewfinder-compose/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-viewfinder-compose/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-viewfinder-core/api/1.3.0-beta03.txt b/camera/camera-viewfinder-core/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-viewfinder-core/api/1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-viewfinder-core/api/res-1.3.0-beta03.txt b/camera/camera-viewfinder-core/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-viewfinder-core/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-viewfinder-core/api/restricted_1.3.0-beta03.txt b/camera/camera-viewfinder-core/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/camera/camera-viewfinder-core/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/camera/camera-viewfinder/api/1.3.0-beta03.txt b/camera/camera-viewfinder/api/1.3.0-beta03.txt
new file mode 100644
index 0000000..a7333d7
--- /dev/null
+++ b/camera/camera-viewfinder/api/1.3.0-beta03.txt
@@ -0,0 +1,58 @@
+// Signature format: 4.0
+package androidx.camera.viewfinder {
+
+  @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
+    ctor @UiThread public CameraViewfinder(android.content.Context);
+    ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
+    ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
+    ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
+    method @UiThread public android.graphics.Bitmap? getBitmap();
+    method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
+    method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
+    method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
+    method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
+  }
+
+  @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
+  }
+
+  @RequiresApi(21) public enum CameraViewfinder.ScaleType {
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
+  }
+
+  @RequiresApi(21) public final class CameraViewfinderExt {
+    method public suspend Object? requestSurface(androidx.camera.viewfinder.CameraViewfinder, androidx.camera.viewfinder.ViewfinderSurfaceRequest viewfinderSurfaceRequest, kotlin.coroutines.Continuation<? super android.view.Surface>);
+    field public static final androidx.camera.viewfinder.CameraViewfinderExt INSTANCE;
+  }
+
+  @RequiresApi(21) public class ViewfinderSurfaceRequest {
+    method public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode? getImplementationMode();
+    method public int getLensFacing();
+    method public android.util.Size getResolution();
+    method public int getSensorOrientation();
+    method public void markSurfaceSafeToRelease();
+  }
+
+  public static final class ViewfinderSurfaceRequest.Builder {
+    ctor public ViewfinderSurfaceRequest.Builder(android.util.Size);
+    ctor public ViewfinderSurfaceRequest.Builder(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
+    ctor public ViewfinderSurfaceRequest.Builder(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder);
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest build();
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode?);
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setLensFacing(int);
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setSensorOrientation(int);
+  }
+
+  public final class ViewfinderSurfaceRequestUtil {
+    method @RequiresApi(21) public static androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder populateFromCharacteristics(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder, android.hardware.camera2.CameraCharacteristics cameraCharacteristics);
+  }
+
+}
+
diff --git a/camera/camera-viewfinder/api/res-1.3.0-beta03.txt b/camera/camera-viewfinder/api/res-1.3.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/camera/camera-viewfinder/api/res-1.3.0-beta03.txt
diff --git a/camera/camera-viewfinder/api/restricted_1.3.0-beta03.txt b/camera/camera-viewfinder/api/restricted_1.3.0-beta03.txt
new file mode 100644
index 0000000..a7333d7
--- /dev/null
+++ b/camera/camera-viewfinder/api/restricted_1.3.0-beta03.txt
@@ -0,0 +1,58 @@
+// Signature format: 4.0
+package androidx.camera.viewfinder {
+
+  @RequiresApi(21) public final class CameraViewfinder extends android.widget.FrameLayout {
+    ctor @UiThread public CameraViewfinder(android.content.Context);
+    ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?);
+    ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int);
+    ctor @UiThread public CameraViewfinder(android.content.Context, android.util.AttributeSet?, int, int);
+    method @UiThread public android.graphics.Bitmap? getBitmap();
+    method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode getImplementationMode();
+    method @UiThread public androidx.camera.viewfinder.CameraViewfinder.ScaleType getScaleType();
+    method @UiThread public com.google.common.util.concurrent.ListenableFuture<android.view.Surface!> requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
+    method @UiThread public void setScaleType(androidx.camera.viewfinder.CameraViewfinder.ScaleType);
+  }
+
+  @RequiresApi(21) public enum CameraViewfinder.ImplementationMode {
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode COMPATIBLE;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ImplementationMode PERFORMANCE;
+  }
+
+  @RequiresApi(21) public enum CameraViewfinder.ScaleType {
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_CENTER;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_END;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FILL_START;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_CENTER;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_END;
+    enum_constant public static final androidx.camera.viewfinder.CameraViewfinder.ScaleType FIT_START;
+  }
+
+  @RequiresApi(21) public final class CameraViewfinderExt {
+    method public suspend Object? requestSurface(androidx.camera.viewfinder.CameraViewfinder, androidx.camera.viewfinder.ViewfinderSurfaceRequest viewfinderSurfaceRequest, kotlin.coroutines.Continuation<? super android.view.Surface>);
+    field public static final androidx.camera.viewfinder.CameraViewfinderExt INSTANCE;
+  }
+
+  @RequiresApi(21) public class ViewfinderSurfaceRequest {
+    method public androidx.camera.viewfinder.CameraViewfinder.ImplementationMode? getImplementationMode();
+    method public int getLensFacing();
+    method public android.util.Size getResolution();
+    method public int getSensorOrientation();
+    method public void markSurfaceSafeToRelease();
+  }
+
+  public static final class ViewfinderSurfaceRequest.Builder {
+    ctor public ViewfinderSurfaceRequest.Builder(android.util.Size);
+    ctor public ViewfinderSurfaceRequest.Builder(androidx.camera.viewfinder.ViewfinderSurfaceRequest);
+    ctor public ViewfinderSurfaceRequest.Builder(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder);
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest build();
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setImplementationMode(androidx.camera.viewfinder.CameraViewfinder.ImplementationMode?);
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setLensFacing(int);
+    method public androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder setSensorOrientation(int);
+  }
+
+  public final class ViewfinderSurfaceRequestUtil {
+    method @RequiresApi(21) public static androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder populateFromCharacteristics(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder, android.hardware.camera2.CameraCharacteristics cameraCharacteristics);
+  }
+
+}
+
diff --git a/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/VideoCameraSwitchingActivity.java b/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/VideoCameraSwitchingActivity.java
index dd14319..13c9cbd 100644
--- a/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/VideoCameraSwitchingActivity.java
+++ b/camera/integration-tests/coretestapp/src/main/java/androidx/camera/integration/core/VideoCameraSwitchingActivity.java
@@ -26,7 +26,6 @@
 import android.widget.EditText;
 import android.widget.Toast;
 
-import androidx.annotation.IntRange;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.OptIn;
@@ -35,7 +34,6 @@
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.Logger;
 import androidx.camera.core.Preview;
-import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.lifecycle.ProcessCameraProvider;
 import androidx.camera.video.ExperimentalPersistentRecording;
 import androidx.camera.video.FileOutputOptions;
@@ -98,6 +96,7 @@
     private Camera mCamera;
     @Nullable
     private Recording mRecording;
+    private boolean mNotYetSwitched = true;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -197,9 +196,9 @@
     @OptIn(markerClass = ExperimentalPersistentRecording.class)
     private void startRecording() {
         Preconditions.checkNotNull(mVideoCapture, "The video capture use case should not be null.");
-        final long durationMillis = Long.parseLong(mDurationText.getText().toString());
-        final long switchTimeMillis = Long.parseLong(mSwitchTimeText.getText().toString());
-        if (switchTimeMillis >= durationMillis) {
+        final long expectedDurationMillis = Long.parseLong(mDurationText.getText().toString());
+        final long expectedSwitchTimeMillis = Long.parseLong(mSwitchTimeText.getText().toString());
+        if (expectedSwitchTimeMillis >= expectedDurationMillis) {
             String msg = "The switch time should be less than the duration.";
             Logger.d(TAG, msg);
             Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
@@ -214,23 +213,35 @@
         if (DeviceQuirks.get(MediaStoreVideoCannotWrite.class) != null) {
             // Use FileOutputOption for devices in MediaStoreVideoCannotWrite Quirk.
             pendingRecording = mVideoCapture.getOutput().prepareRecording(
-                    this, generateFileOutputOptions(durationMillis));
+                    this, generateFileOutputOptions());
         } else {
             // Use MediaStoreOutputOptions for public share media storage.
             pendingRecording = mVideoCapture.getOutput().prepareRecording(
-                    this, generateMediaStoreOutputOptions(durationMillis));
+                    this, generateMediaStoreOutputOptions());
         }
         mRecording = pendingRecording
                 .asPersistentRecording() // Perform the recording as a persistent recording.
                 .start(ContextCompat.getMainExecutor(this),
                         videoRecordEvent -> {
-                            if (videoRecordEvent instanceof VideoRecordEvent.Start) {
-                                // Switch camera after the specified time.
-                                CameraXExecutors.mainThreadExecutor().schedule(this::switchCamera,
-                                        switchTimeMillis, TimeUnit.MILLISECONDS);
+                            if (videoRecordEvent instanceof VideoRecordEvent.Status) {
+                                long currentDurationMillis = TimeUnit.NANOSECONDS.toMillis(
+                                        videoRecordEvent.getRecordingStats()
+                                                .getRecordedDurationNanos());
+                                if (currentDurationMillis >= expectedSwitchTimeMillis) {
+                                    if (mNotYetSwitched) {
+                                        switchCamera();
+                                        mNotYetSwitched = false;
+                                    }
+                                    if (currentDurationMillis >= expectedDurationMillis) {
+                                        Preconditions.checkNotNull(mRecording, "The in-progress "
+                                                + "recording should not be null.");
+                                        mRecording.stop();
+                                    }
+                                }
                             }
                             if (videoRecordEvent instanceof VideoRecordEvent.Finalize) {
                                 mRecording = null;
+                                mNotYetSwitched = true;
                                 mStartButton.setClickable(true);
                                 mStartButton.setText(R.string.record_button_idling);
                                 mDurationText.setClickable(true);
@@ -240,21 +251,18 @@
     }
 
     @NonNull
-    private FileOutputOptions generateFileOutputOptions(@IntRange(from = 0) long durationMillis) {
+    private FileOutputOptions generateFileOutputOptions() {
         String videoFileName = "video_" + System.currentTimeMillis() + ".mp4";
         File videoFolder = Environment.getExternalStoragePublicDirectory(
                 Environment.DIRECTORY_MOVIES);
         if (!videoFolder.exists() && !videoFolder.mkdirs()) {
             Logger.e(TAG, "Failed to create directory: " + videoFolder);
         }
-        return new FileOutputOptions.Builder(
-                new File(videoFolder, videoFileName)).setDurationLimitMillis(
-                durationMillis).build();
+        return new FileOutputOptions.Builder(new File(videoFolder, videoFileName)).build();
     }
 
     @NonNull
-    private MediaStoreOutputOptions generateMediaStoreOutputOptions(
-            @IntRange(from = 0) long durationMillis) {
+    private MediaStoreOutputOptions generateMediaStoreOutputOptions() {
         String videoFileName = "video_" + System.currentTimeMillis();
         ContentValues contentValues = new ContentValues();
         contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "video/mp4");
@@ -265,7 +273,6 @@
         return new MediaStoreOutputOptions.Builder(getContentResolver(),
                 MediaStore.Video.Media.EXTERNAL_CONTENT_URI)
                 .setContentValues(contentValues)
-                .setDurationLimitMillis(durationMillis)
                 .build();
     }
 
diff --git a/collection/collection-benchmark/build.gradle b/collection/collection-benchmark/build.gradle
index 931098c..11b20b6 100644
--- a/collection/collection-benchmark/build.gradle
+++ b/collection/collection-benchmark/build.gradle
@@ -65,12 +65,12 @@
         androidTest {
             dependsOn(commonTest)
             dependencies {
-                implementation(projectOrArtifact(":benchmark:benchmark-junit4"))
+                implementation("androidx.benchmark:benchmark-junit4:1.1.1")
                 implementation(libs.junit)
-                implementation(libs.testExtJunit)
-                implementation(libs.testCore)
-                implementation(libs.testRunner)
-                implementation(libs.testRules)
+                implementation("androidx.test.ext:junit:1.1.5")
+                implementation("androidx.test:core:1.5.0")
+                implementation("androidx.test:runner:1.5.2")
+                implementation("androidx.test:rules:1.5.0")
             }
         }
 
diff --git a/collection/collection-benchmark/src/androidTest/java/androidx/collection/ArraySetBenchmarkTest.kt b/collection/collection-benchmark/src/androidTest/java/androidx/collection/ArraySetBenchmarkTest.kt
index 1f38347..e80eb0a 100644
--- a/collection/collection-benchmark/src/androidTest/java/androidx/collection/ArraySetBenchmarkTest.kt
+++ b/collection/collection-benchmark/src/androidTest/java/androidx/collection/ArraySetBenchmarkTest.kt
@@ -17,6 +17,7 @@
 package androidx.collection
 
 import androidx.benchmark.junit4.BenchmarkRule
+import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -40,11 +41,13 @@
         benchmark.runCollectionBenchmark(ArraySetContainsElementBenchmark(sourceSet))
     }
 
+    @Ignore("b/293929098") // Flaky / failing in presubmit.
     @Test
     fun indexOf() {
         benchmark.runCollectionBenchmark(ArraySetIndexOfBenchmark(sourceSet))
     }
 
+    @Ignore("b/293929098") // Flaky / failing in presubmit.
     @Test
     fun addAllThenRemoveIndividually() {
         benchmark.runCollectionBenchmark(ArraySetAddAllThenRemoveIndividuallyBenchmark(sourceSet))
diff --git a/collection/collection-ktx/api/1.3.0-beta01.txt b/collection/collection-ktx/api/1.3.0-beta01.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/collection/collection-ktx/api/1.3.0-beta01.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/collection/collection-ktx/api/restricted_1.3.0-beta01.txt b/collection/collection-ktx/api/restricted_1.3.0-beta01.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/collection/collection-ktx/api/restricted_1.3.0-beta01.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/collection/collection/api/1.3.0-beta01.txt b/collection/collection/api/1.3.0-beta01.txt
new file mode 100644
index 0000000..a2fdada
--- /dev/null
+++ b/collection/collection/api/1.3.0-beta01.txt
@@ -0,0 +1,236 @@
+// Signature format: 4.0
+package androidx.collection {
+
+  public class ArrayMap<K, V> extends androidx.collection.SimpleArrayMap<K,V> implements java.util.Map<K,V> {
+    ctor public ArrayMap();
+    ctor public ArrayMap(androidx.collection.SimpleArrayMap?);
+    ctor public ArrayMap(int);
+    method public boolean containsAll(java.util.Collection<?>);
+    method public boolean containsKey(Object?);
+    method public boolean containsValue(Object?);
+    method public java.util.Set<java.util.Map.Entry<K!,V!>!> entrySet();
+    method public V! get(Object?);
+    method public java.util.Set<K!> keySet();
+    method public void putAll(java.util.Map<? extends K,? extends V>);
+    method public V! remove(Object?);
+    method public boolean removeAll(java.util.Collection<?>);
+    method public boolean retainAll(java.util.Collection<?>);
+    method public java.util.Collection<V!> values();
+  }
+
+  public final class ArrayMapKt {
+    method public static inline <K, V> androidx.collection.ArrayMap<K,V> arrayMapOf();
+    method public static <K, V> androidx.collection.ArrayMap<K,V> arrayMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+  }
+
+  public final class ArraySet<E> implements java.util.Collection<E> kotlin.jvm.internal.markers.KMutableCollection kotlin.jvm.internal.markers.KMutableSet java.util.Set<E> {
+    ctor public ArraySet();
+    ctor public ArraySet(androidx.collection.ArraySet<? extends E>? set);
+    ctor public ArraySet(E![]? array);
+    ctor public ArraySet(optional int capacity);
+    ctor public ArraySet(java.util.Collection<? extends E>? set);
+    method public boolean add(E element);
+    method public void addAll(androidx.collection.ArraySet<? extends E> array);
+    method public boolean addAll(java.util.Collection<? extends E> elements);
+    method public void clear();
+    method public operator boolean contains(E element);
+    method public boolean containsAll(java.util.Collection<E!> elements);
+    method public void ensureCapacity(int minimumCapacity);
+    method public int getSize();
+    method public int indexOf(Object? key);
+    method public boolean isEmpty();
+    method public java.util.Iterator<E> iterator();
+    method public boolean remove(E element);
+    method public boolean removeAll(androidx.collection.ArraySet<? extends E> array);
+    method public boolean removeAll(java.util.Collection<E!> elements);
+    method public E removeAt(int index);
+    method public boolean retainAll(java.util.Collection<E!> elements);
+    method public Object![] toArray();
+    method public <T> T![] toArray(T![] array);
+    method public E valueAt(int index);
+    property public int size;
+  }
+
+  public final class ArraySetKt {
+    method public static inline <T> androidx.collection.ArraySet<T> arraySetOf();
+    method public static <T> androidx.collection.ArraySet<T> arraySetOf(T?... values);
+  }
+
+  public final class CircularArray<E> {
+    ctor public CircularArray();
+    ctor public CircularArray(optional int minCapacity);
+    method public void addFirst(E element);
+    method public void addLast(E element);
+    method public void clear();
+    method public operator E get(int index);
+    method public E getFirst();
+    method public E getLast();
+    method public boolean isEmpty();
+    method public E popFirst();
+    method public E popLast();
+    method public void removeFromEnd(int count);
+    method public void removeFromStart(int count);
+    method public int size();
+    property public final E first;
+    property public final E last;
+  }
+
+  public final class CircularIntArray {
+    ctor public CircularIntArray();
+    ctor public CircularIntArray(optional int minCapacity);
+    method public void addFirst(int element);
+    method public void addLast(int element);
+    method public void clear();
+    method public operator int get(int index);
+    method public int getFirst();
+    method public int getLast();
+    method public boolean isEmpty();
+    method public int popFirst();
+    method public int popLast();
+    method public void removeFromEnd(int count);
+    method public void removeFromStart(int count);
+    method public int size();
+    property public final int first;
+    property public final int last;
+  }
+
+  public class LongSparseArray<E> implements java.lang.Cloneable {
+    ctor public LongSparseArray();
+    ctor public LongSparseArray(optional int initialCapacity);
+    method public void append(long key, E value);
+    method public void clear();
+    method public androidx.collection.LongSparseArray<E> clone();
+    method public boolean containsKey(long key);
+    method public boolean containsValue(E value);
+    method @Deprecated public void delete(long key);
+    method public operator E? get(long key);
+    method public E get(long key, E defaultValue);
+    method public int indexOfKey(long key);
+    method public int indexOfValue(E value);
+    method public boolean isEmpty();
+    method public long keyAt(int index);
+    method public void put(long key, E value);
+    method public void putAll(androidx.collection.LongSparseArray<? extends E> other);
+    method public E? putIfAbsent(long key, E value);
+    method public void remove(long key);
+    method public boolean remove(long key, E value);
+    method public void removeAt(int index);
+    method public E? replace(long key, E value);
+    method public boolean replace(long key, E oldValue, E newValue);
+    method public void setValueAt(int index, E value);
+    method public int size();
+    method public E valueAt(int index);
+  }
+
+  public final class LongSparseArrayKt {
+    method public static inline operator <T> boolean contains(androidx.collection.LongSparseArray<T>, long key);
+    method public static inline <T> void forEach(androidx.collection.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
+    method public static inline <T> T getOrDefault(androidx.collection.LongSparseArray<T>, long key, T defaultValue);
+    method public static inline <T> T getOrElse(androidx.collection.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+    method public static inline <T> int getSize(androidx.collection.LongSparseArray<T>);
+    method public static inline <T> boolean isNotEmpty(androidx.collection.LongSparseArray<T>);
+    method public static <T> kotlin.collections.LongIterator keyIterator(androidx.collection.LongSparseArray<T>);
+    method public static operator <T> androidx.collection.LongSparseArray<T> plus(androidx.collection.LongSparseArray<T>, androidx.collection.LongSparseArray<T> other);
+    method @Deprecated public static <T> boolean remove(androidx.collection.LongSparseArray<T>, long key, T value);
+    method public static inline operator <T> void set(androidx.collection.LongSparseArray<T>, long key, T value);
+    method public static <T> java.util.Iterator<T> valueIterator(androidx.collection.LongSparseArray<T>);
+  }
+
+  public class LruCache<K, V> {
+    ctor public LruCache(@IntRange(from=1L, to=kotlin.jvm.internal.LongCompanionObject.MAX_VALUE) int maxSize);
+    method protected V? create(K key);
+    method public final int createCount();
+    method protected void entryRemoved(boolean evicted, K key, V oldValue, V? newValue);
+    method public final void evictAll();
+    method public final int evictionCount();
+    method public final operator V? get(K key);
+    method public final int hitCount();
+    method public final int maxSize();
+    method public final int missCount();
+    method public final V? put(K key, V value);
+    method public final int putCount();
+    method public final V? remove(K key);
+    method public void resize(@IntRange(from=1L, to=kotlin.jvm.internal.LongCompanionObject.MAX_VALUE) int maxSize);
+    method public final int size();
+    method protected int sizeOf(K key, V value);
+    method public final java.util.Map<K,V> snapshot();
+    method public void trimToSize(int maxSize);
+  }
+
+  public final class LruCacheKt {
+    method public static inline <K, V> androidx.collection.LruCache<K,V> lruCache(int maxSize, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved);
+  }
+
+  public class SimpleArrayMap<K, V> {
+    ctor public SimpleArrayMap();
+    ctor public SimpleArrayMap(androidx.collection.SimpleArrayMap<? extends K,? extends V>? map);
+    ctor public SimpleArrayMap(optional int capacity);
+    method public void clear();
+    method public boolean containsKey(K key);
+    method public boolean containsValue(V value);
+    method public void ensureCapacity(int minimumCapacity);
+    method public operator V? get(K key);
+    method public V getOrDefault(Object? key, V defaultValue);
+    method public int indexOfKey(K key);
+    method public boolean isEmpty();
+    method public K keyAt(int index);
+    method public V? put(K key, V value);
+    method public void putAll(androidx.collection.SimpleArrayMap<? extends K,? extends V> map);
+    method public V? putIfAbsent(K key, V value);
+    method public V? remove(K key);
+    method public boolean remove(K key, V value);
+    method public V removeAt(int index);
+    method public V? replace(K key, V value);
+    method public boolean replace(K key, V oldValue, V newValue);
+    method public V setValueAt(int index, V value);
+    method public int size();
+    method public V valueAt(int index);
+  }
+
+  public class SparseArrayCompat<E> implements java.lang.Cloneable {
+    ctor public SparseArrayCompat();
+    ctor public SparseArrayCompat(optional int initialCapacity);
+    method public void append(int key, E value);
+    method public void clear();
+    method public androidx.collection.SparseArrayCompat<E> clone();
+    method public boolean containsKey(int key);
+    method public boolean containsValue(E value);
+    method @Deprecated public void delete(int key);
+    method public operator E? get(int key);
+    method public E get(int key, E defaultValue);
+    method public final boolean getIsEmpty();
+    method public int indexOfKey(int key);
+    method public int indexOfValue(E value);
+    method public boolean isEmpty();
+    method public int keyAt(int index);
+    method public void put(int key, E value);
+    method public void putAll(androidx.collection.SparseArrayCompat<? extends E> other);
+    method public E? putIfAbsent(int key, E value);
+    method public void remove(int key);
+    method public boolean remove(int key, Object? value);
+    method public void removeAt(int index);
+    method public void removeAtRange(int index, int size);
+    method public E? replace(int key, E value);
+    method public boolean replace(int key, E oldValue, E newValue);
+    method public void setValueAt(int index, E value);
+    method public int size();
+    method public E valueAt(int index);
+    property public final boolean isEmpty;
+  }
+
+  public final class SparseArrayKt {
+    method public static inline operator <T> boolean contains(androidx.collection.SparseArrayCompat<T>, int key);
+    method public static inline <T> void forEach(androidx.collection.SparseArrayCompat<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
+    method public static inline <T> T getOrDefault(androidx.collection.SparseArrayCompat<T>, int key, T defaultValue);
+    method public static inline <T> T getOrElse(androidx.collection.SparseArrayCompat<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+    method public static inline <T> int getSize(androidx.collection.SparseArrayCompat<T>);
+    method public static inline <T> boolean isNotEmpty(androidx.collection.SparseArrayCompat<T>);
+    method public static <T> kotlin.collections.IntIterator keyIterator(androidx.collection.SparseArrayCompat<T>);
+    method public static operator <T> androidx.collection.SparseArrayCompat<T> plus(androidx.collection.SparseArrayCompat<T>, androidx.collection.SparseArrayCompat<T> other);
+    method @Deprecated public static <T> boolean remove(androidx.collection.SparseArrayCompat<T>, int key, T value);
+    method public static inline operator <T> void set(androidx.collection.SparseArrayCompat<T>, int key, T value);
+    method public static <T> java.util.Iterator<T> valueIterator(androidx.collection.SparseArrayCompat<T>);
+  }
+
+}
+
diff --git a/collection/collection/api/restricted_1.3.0-beta01.txt b/collection/collection/api/restricted_1.3.0-beta01.txt
new file mode 100644
index 0000000..a2fdada
--- /dev/null
+++ b/collection/collection/api/restricted_1.3.0-beta01.txt
@@ -0,0 +1,236 @@
+// Signature format: 4.0
+package androidx.collection {
+
+  public class ArrayMap<K, V> extends androidx.collection.SimpleArrayMap<K,V> implements java.util.Map<K,V> {
+    ctor public ArrayMap();
+    ctor public ArrayMap(androidx.collection.SimpleArrayMap?);
+    ctor public ArrayMap(int);
+    method public boolean containsAll(java.util.Collection<?>);
+    method public boolean containsKey(Object?);
+    method public boolean containsValue(Object?);
+    method public java.util.Set<java.util.Map.Entry<K!,V!>!> entrySet();
+    method public V! get(Object?);
+    method public java.util.Set<K!> keySet();
+    method public void putAll(java.util.Map<? extends K,? extends V>);
+    method public V! remove(Object?);
+    method public boolean removeAll(java.util.Collection<?>);
+    method public boolean retainAll(java.util.Collection<?>);
+    method public java.util.Collection<V!> values();
+  }
+
+  public final class ArrayMapKt {
+    method public static inline <K, V> androidx.collection.ArrayMap<K,V> arrayMapOf();
+    method public static <K, V> androidx.collection.ArrayMap<K,V> arrayMapOf(kotlin.Pair<? extends K,? extends V>... pairs);
+  }
+
+  public final class ArraySet<E> implements java.util.Collection<E> kotlin.jvm.internal.markers.KMutableCollection kotlin.jvm.internal.markers.KMutableSet java.util.Set<E> {
+    ctor public ArraySet();
+    ctor public ArraySet(androidx.collection.ArraySet<? extends E>? set);
+    ctor public ArraySet(E![]? array);
+    ctor public ArraySet(optional int capacity);
+    ctor public ArraySet(java.util.Collection<? extends E>? set);
+    method public boolean add(E element);
+    method public void addAll(androidx.collection.ArraySet<? extends E> array);
+    method public boolean addAll(java.util.Collection<? extends E> elements);
+    method public void clear();
+    method public operator boolean contains(E element);
+    method public boolean containsAll(java.util.Collection<E!> elements);
+    method public void ensureCapacity(int minimumCapacity);
+    method public int getSize();
+    method public int indexOf(Object? key);
+    method public boolean isEmpty();
+    method public java.util.Iterator<E> iterator();
+    method public boolean remove(E element);
+    method public boolean removeAll(androidx.collection.ArraySet<? extends E> array);
+    method public boolean removeAll(java.util.Collection<E!> elements);
+    method public E removeAt(int index);
+    method public boolean retainAll(java.util.Collection<E!> elements);
+    method public Object![] toArray();
+    method public <T> T![] toArray(T![] array);
+    method public E valueAt(int index);
+    property public int size;
+  }
+
+  public final class ArraySetKt {
+    method public static inline <T> androidx.collection.ArraySet<T> arraySetOf();
+    method public static <T> androidx.collection.ArraySet<T> arraySetOf(T?... values);
+  }
+
+  public final class CircularArray<E> {
+    ctor public CircularArray();
+    ctor public CircularArray(optional int minCapacity);
+    method public void addFirst(E element);
+    method public void addLast(E element);
+    method public void clear();
+    method public operator E get(int index);
+    method public E getFirst();
+    method public E getLast();
+    method public boolean isEmpty();
+    method public E popFirst();
+    method public E popLast();
+    method public void removeFromEnd(int count);
+    method public void removeFromStart(int count);
+    method public int size();
+    property public final E first;
+    property public final E last;
+  }
+
+  public final class CircularIntArray {
+    ctor public CircularIntArray();
+    ctor public CircularIntArray(optional int minCapacity);
+    method public void addFirst(int element);
+    method public void addLast(int element);
+    method public void clear();
+    method public operator int get(int index);
+    method public int getFirst();
+    method public int getLast();
+    method public boolean isEmpty();
+    method public int popFirst();
+    method public int popLast();
+    method public void removeFromEnd(int count);
+    method public void removeFromStart(int count);
+    method public int size();
+    property public final int first;
+    property public final int last;
+  }
+
+  public class LongSparseArray<E> implements java.lang.Cloneable {
+    ctor public LongSparseArray();
+    ctor public LongSparseArray(optional int initialCapacity);
+    method public void append(long key, E value);
+    method public void clear();
+    method public androidx.collection.LongSparseArray<E> clone();
+    method public boolean containsKey(long key);
+    method public boolean containsValue(E value);
+    method @Deprecated public void delete(long key);
+    method public operator E? get(long key);
+    method public E get(long key, E defaultValue);
+    method public int indexOfKey(long key);
+    method public int indexOfValue(E value);
+    method public boolean isEmpty();
+    method public long keyAt(int index);
+    method public void put(long key, E value);
+    method public void putAll(androidx.collection.LongSparseArray<? extends E> other);
+    method public E? putIfAbsent(long key, E value);
+    method public void remove(long key);
+    method public boolean remove(long key, E value);
+    method public void removeAt(int index);
+    method public E? replace(long key, E value);
+    method public boolean replace(long key, E oldValue, E newValue);
+    method public void setValueAt(int index, E value);
+    method public int size();
+    method public E valueAt(int index);
+  }
+
+  public final class LongSparseArrayKt {
+    method public static inline operator <T> boolean contains(androidx.collection.LongSparseArray<T>, long key);
+    method public static inline <T> void forEach(androidx.collection.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
+    method public static inline <T> T getOrDefault(androidx.collection.LongSparseArray<T>, long key, T defaultValue);
+    method public static inline <T> T getOrElse(androidx.collection.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+    method public static inline <T> int getSize(androidx.collection.LongSparseArray<T>);
+    method public static inline <T> boolean isNotEmpty(androidx.collection.LongSparseArray<T>);
+    method public static <T> kotlin.collections.LongIterator keyIterator(androidx.collection.LongSparseArray<T>);
+    method public static operator <T> androidx.collection.LongSparseArray<T> plus(androidx.collection.LongSparseArray<T>, androidx.collection.LongSparseArray<T> other);
+    method @Deprecated public static <T> boolean remove(androidx.collection.LongSparseArray<T>, long key, T value);
+    method public static inline operator <T> void set(androidx.collection.LongSparseArray<T>, long key, T value);
+    method public static <T> java.util.Iterator<T> valueIterator(androidx.collection.LongSparseArray<T>);
+  }
+
+  public class LruCache<K, V> {
+    ctor public LruCache(@IntRange(from=1L, to=kotlin.jvm.internal.LongCompanionObject.MAX_VALUE) int maxSize);
+    method protected V? create(K key);
+    method public final int createCount();
+    method protected void entryRemoved(boolean evicted, K key, V oldValue, V? newValue);
+    method public final void evictAll();
+    method public final int evictionCount();
+    method public final operator V? get(K key);
+    method public final int hitCount();
+    method public final int maxSize();
+    method public final int missCount();
+    method public final V? put(K key, V value);
+    method public final int putCount();
+    method public final V? remove(K key);
+    method public void resize(@IntRange(from=1L, to=kotlin.jvm.internal.LongCompanionObject.MAX_VALUE) int maxSize);
+    method public final int size();
+    method protected int sizeOf(K key, V value);
+    method public final java.util.Map<K,V> snapshot();
+    method public void trimToSize(int maxSize);
+  }
+
+  public final class LruCacheKt {
+    method public static inline <K, V> androidx.collection.LruCache<K,V> lruCache(int maxSize, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved);
+  }
+
+  public class SimpleArrayMap<K, V> {
+    ctor public SimpleArrayMap();
+    ctor public SimpleArrayMap(androidx.collection.SimpleArrayMap<? extends K,? extends V>? map);
+    ctor public SimpleArrayMap(optional int capacity);
+    method public void clear();
+    method public boolean containsKey(K key);
+    method public boolean containsValue(V value);
+    method public void ensureCapacity(int minimumCapacity);
+    method public operator V? get(K key);
+    method public V getOrDefault(Object? key, V defaultValue);
+    method public int indexOfKey(K key);
+    method public boolean isEmpty();
+    method public K keyAt(int index);
+    method public V? put(K key, V value);
+    method public void putAll(androidx.collection.SimpleArrayMap<? extends K,? extends V> map);
+    method public V? putIfAbsent(K key, V value);
+    method public V? remove(K key);
+    method public boolean remove(K key, V value);
+    method public V removeAt(int index);
+    method public V? replace(K key, V value);
+    method public boolean replace(K key, V oldValue, V newValue);
+    method public V setValueAt(int index, V value);
+    method public int size();
+    method public V valueAt(int index);
+  }
+
+  public class SparseArrayCompat<E> implements java.lang.Cloneable {
+    ctor public SparseArrayCompat();
+    ctor public SparseArrayCompat(optional int initialCapacity);
+    method public void append(int key, E value);
+    method public void clear();
+    method public androidx.collection.SparseArrayCompat<E> clone();
+    method public boolean containsKey(int key);
+    method public boolean containsValue(E value);
+    method @Deprecated public void delete(int key);
+    method public operator E? get(int key);
+    method public E get(int key, E defaultValue);
+    method public final boolean getIsEmpty();
+    method public int indexOfKey(int key);
+    method public int indexOfValue(E value);
+    method public boolean isEmpty();
+    method public int keyAt(int index);
+    method public void put(int key, E value);
+    method public void putAll(androidx.collection.SparseArrayCompat<? extends E> other);
+    method public E? putIfAbsent(int key, E value);
+    method public void remove(int key);
+    method public boolean remove(int key, Object? value);
+    method public void removeAt(int index);
+    method public void removeAtRange(int index, int size);
+    method public E? replace(int key, E value);
+    method public boolean replace(int key, E oldValue, E newValue);
+    method public void setValueAt(int index, E value);
+    method public int size();
+    method public E valueAt(int index);
+    property public final boolean isEmpty;
+  }
+
+  public final class SparseArrayKt {
+    method public static inline operator <T> boolean contains(androidx.collection.SparseArrayCompat<T>, int key);
+    method public static inline <T> void forEach(androidx.collection.SparseArrayCompat<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
+    method public static inline <T> T getOrDefault(androidx.collection.SparseArrayCompat<T>, int key, T defaultValue);
+    method public static inline <T> T getOrElse(androidx.collection.SparseArrayCompat<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+    method public static inline <T> int getSize(androidx.collection.SparseArrayCompat<T>);
+    method public static inline <T> boolean isNotEmpty(androidx.collection.SparseArrayCompat<T>);
+    method public static <T> kotlin.collections.IntIterator keyIterator(androidx.collection.SparseArrayCompat<T>);
+    method public static operator <T> androidx.collection.SparseArrayCompat<T> plus(androidx.collection.SparseArrayCompat<T>, androidx.collection.SparseArrayCompat<T> other);
+    method @Deprecated public static <T> boolean remove(androidx.collection.SparseArrayCompat<T>, int key, T value);
+    method public static inline operator <T> void set(androidx.collection.SparseArrayCompat<T>, int key, T value);
+    method public static <T> java.util.Iterator<T> valueIterator(androidx.collection.SparseArrayCompat<T>);
+  }
+
+}
+
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text2/TextFieldKeyEventTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text2/TextFieldKeyEventTest.kt
index a3379dd..735e1e755 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text2/TextFieldKeyEventTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text2/TextFieldKeyEventTest.kt
@@ -570,6 +570,7 @@
         }
     }
 
+    @Ignore // b/293919923
     @Test
     fun textField_withActiveSelection_shiftTabSingleLine() {
         keysSequenceTest("text", singleLine = true) {
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/vector/VectorTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/vector/VectorTest.kt
index f99c430..0bcfbd9c 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/vector/VectorTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/graphics/vector/VectorTest.kt
@@ -34,6 +34,7 @@
 import androidx.compose.foundation.layout.wrapContentSize
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.mutableIntStateOf
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.testutils.assertPixels
@@ -164,6 +165,50 @@
         }
     }
 
+    @Test
+    fun testVectorSkipsRecompositionOnNoChange() {
+        val state = mutableIntStateOf(0)
+        var composeCount = 0
+        var vectorComposeCount = 0
+
+        val composeVector: @Composable @VectorComposable (Float, Float) -> Unit = {
+                viewportWidth, viewportHeight ->
+
+            vectorComposeCount++
+            Path(
+                fill = SolidColor(Color.Blue),
+                pathData = PathData {
+                    lineTo(viewportWidth, 0f)
+                    lineTo(viewportWidth, viewportHeight)
+                    lineTo(0f, viewportHeight)
+                    close()
+                }
+            )
+        }
+
+        rule.setContent {
+            composeCount++
+            // Arbitrary read to force composition here and verify the subcomposition below skips
+            state.value
+            val vectorPainter = rememberVectorPainter(
+                defaultWidth = 10.dp,
+                defaultHeight = 10.dp,
+                autoMirror = false,
+                content = composeVector
+            )
+            Image(
+                vectorPainter,
+                null,
+                modifier = Modifier.size(20.dp)
+            )
+        }
+
+        state.value = 1
+        rule.waitForIdle()
+        assertEquals(2, composeCount) // Arbitrary state read should compose twice
+        assertEquals(1, vectorComposeCount) // Vector is identical so should compose once
+    }
+
     @SdkSuppress(minSdkVersion = Build.VERSION_CODES.O)
     @Test
     fun testVectorInvalidation() {
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
index 2eed50f..4690c99 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/Vector.kt
@@ -19,6 +19,8 @@
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.Size.Companion.Unspecified
 import androidx.compose.ui.graphics.BlendMode
 import androidx.compose.ui.graphics.Brush
@@ -32,6 +34,7 @@
 import androidx.compose.ui.graphics.StrokeJoin
 import androidx.compose.ui.graphics.drawscope.DrawScope
 import androidx.compose.ui.graphics.drawscope.Stroke
+import androidx.compose.ui.graphics.drawscope.scale
 import androidx.compose.ui.graphics.drawscope.withTransform
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.util.fastForEach
@@ -88,18 +91,12 @@
 
 internal class VectorComponent : VNode() {
     val root = GroupComponent().apply {
-        pivotX = 0.0f
-        pivotY = 0.0f
         invalidateListener = {
             doInvalidate()
         }
     }
 
-    var name: String
-        get() = root.name
-        set(value) {
-            root.name = value
-        }
+    var name: String = DefaultGroupName
 
     private fun doInvalidate() {
         isDirty = true
@@ -114,29 +111,22 @@
 
     internal var intrinsicColorFilter: ColorFilter? by mutableStateOf(null)
 
-    var viewportWidth = 0f
-        set(value) {
-            if (field != value) {
-                field = value
-                doInvalidate()
-            }
-        }
-
-    var viewportHeight = 0f
-        set(value) {
-            if (field != value) {
-                field = value
-                doInvalidate()
-            }
-        }
+    internal var viewportSize by mutableStateOf(Size.Zero)
 
     private var previousDrawSize = Unspecified
 
+    private var rootScaleX = 1f
+    private var rootScaleY = 1f
+
     /**
      * Cached lambda used to avoid allocating the lambda on each draw invocation
      */
     private val drawVectorBlock: DrawScope.() -> Unit = {
-        with(root) { draw() }
+        with(root) {
+            scale(rootScaleX, rootScaleY, pivot = Offset.Zero) {
+                draw()
+            }
+        }
     }
 
     fun DrawScope.draw(alpha: Float, colorFilter: ColorFilter?) {
@@ -144,8 +134,8 @@
         // If the content of the vector has changed, or we are drawing a different size
         // update the cached image to ensure we are scaling the vector appropriately
         if (isDirty || previousDrawSize != size) {
-            root.scaleX = size.width / viewportWidth
-            root.scaleY = size.height / viewportHeight
+            rootScaleX = size.width / viewportSize.width
+            rootScaleY = size.height / viewportSize.height
             cacheDrawScope.drawCachedImage(
                 IntSize(ceil(size.width).toInt(), ceil(size.height).toInt()),
                 this@draw,
@@ -166,8 +156,8 @@
         return buildString {
             append("Params: ")
             append("\tname: ").append(name).append("\n")
-            append("\tviewportWidth: ").append(viewportWidth).append("\n")
-            append("\tviewportHeight: ").append(viewportHeight).append("\n")
+            append("\tviewportWidth: ").append(viewportSize.width).append("\n")
+            append("\tviewportHeight: ").append(viewportSize.height).append("\n")
         }
     }
 }
@@ -247,29 +237,23 @@
 
     var trimPathStart = DefaultTrimPathStart
         set(value) {
-            if (field != value) {
-                field = value
-                isTrimPathDirty = true
-                invalidate()
-            }
+            field = value
+            isTrimPathDirty = true
+            invalidate()
         }
 
     var trimPathEnd = DefaultTrimPathEnd
         set(value) {
-            if (field != value) {
-                field = value
-                isTrimPathDirty = true
-                invalidate()
-            }
+            field = value
+            isTrimPathDirty = true
+            invalidate()
         }
 
     var trimPathOffset = DefaultTrimPathOffset
         set(value) {
-            if (field != value) {
-                field = value
-                isTrimPathDirty = true
-                invalidate()
-            }
+            field = value
+            isTrimPathDirty = true
+            invalidate()
         }
 
     private var isPathDirty = true
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt
index 648babc7..aafdf94 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorPainter.kt
@@ -19,8 +19,6 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ComposableOpenTarget
 import androidx.compose.runtime.Composition
-import androidx.compose.runtime.CompositionContext
-import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableIntStateOf
 import androidx.compose.runtime.mutableStateOf
@@ -145,7 +143,25 @@
         size = Size(widthPx, heightPx)
         this.autoMirror = autoMirror
         this.intrinsicColorFilter = intrinsicColorFilter
-        RenderVector(name, vpWidth, vpHeight, content)
+        this.viewportSize = Size(vpWidth, vpHeight)
+        this.name = name
+
+        val compositionContext = rememberCompositionContext()
+        this.composition = remember(viewportWidth, viewportHeight, content) {
+            val curComp = this.composition
+            val next = if (curComp == null || curComp.isDisposed) {
+                Composition(
+                    VectorApplier(this.vector.root),
+                    compositionContext
+                )
+            } else {
+                curComp
+            }
+            next.setContent {
+                content(vpWidth, vpHeight)
+            }
+            next
+        }
     }
 }
 
@@ -170,6 +186,15 @@
     )
 
 /**
+ * Functional interface to avoid "PrimitiveInLambda" lint errors
+ */
+internal fun interface ComposeVector {
+
+    @Composable
+    fun Content(viewportWidth: Float, viewportHeight: Float)
+}
+
+/**
  * [Painter] implementation that abstracts the drawing of a Vector graphic.
  * This can be represented by either a [ImageVector] or a programmatic
  * composition of a vector
@@ -189,7 +214,19 @@
             vector.intrinsicColorFilter = value
         }
 
-    private val vector = VectorComponent().apply {
+    internal var viewportSize: Size
+        get() = vector.viewportSize
+        set(value) {
+            vector.viewportSize = value
+        }
+
+    internal var name: String
+        get() = vector.name
+        set(value) {
+            vector.name = value
+        }
+
+    internal val vector = VectorComponent().apply {
         invalidateCallback = {
             if (drawCount == invalidateCount) {
                 invalidateCount++
@@ -197,55 +234,11 @@
         }
     }
 
-    private var composition: Composition? = null
-
-    private fun composeVector(
-        parent: CompositionContext,
-        composable: @Composable (viewportWidth: Float, viewportHeight: Float) -> Unit
-    ): Composition {
-        val existing = composition
-        val next = if (existing == null || existing.isDisposed) {
-            Composition(
-                VectorApplier(vector.root),
-                parent
-            )
-        } else {
-            existing
-        }
-        composition = next
-        next.setContent {
-            composable(vector.viewportWidth, vector.viewportHeight)
-        }
-        return next
-    }
+    internal var composition: Composition? = null
 
     // TODO replace with mutableStateOf(Unit, neverEqualPolicy()) after b/291647821 is addressed
     private var invalidateCount by mutableIntStateOf(0)
 
-    @Composable
-    internal fun RenderVector(
-        name: String,
-        viewportWidth: Float,
-        viewportHeight: Float,
-        content: @Composable (viewportWidth: Float, viewportHeight: Float) -> Unit
-    ) {
-        vector.apply {
-            this.name = name
-            this.viewportWidth = viewportWidth
-            this.viewportHeight = viewportHeight
-        }
-        val composition = composeVector(
-            rememberCompositionContext(),
-            content
-        )
-
-        DisposableEffect(composition) {
-            onDispose {
-                composition.dispose()
-            }
-        }
-    }
-
     private var currentAlpha: Float = 1.0f
     private var currentColorFilter: ColorFilter? = null
 
diff --git a/constraintlayout/constraintlayout-core/lint-baseline.xml b/constraintlayout/constraintlayout-core/lint-baseline.xml
index bff62dd..1c3b73f 100644
--- a/constraintlayout/constraintlayout-core/lint-baseline.xml
+++ b/constraintlayout/constraintlayout-core/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 7.4.0-alpha08" type="baseline" client="gradle" dependencies="false" name="AGP (7.4.0-alpha08)" variant="all" version="7.4.0-alpha08">
+<issues format="6" by="lint 8.1.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0)" variant="all" version="8.1.0">
 
     <issue
         id="PrivateConstructorForUtilityClass"
@@ -74,645 +74,6 @@
     </issue>
 
     <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mId` of class `Constraint` requires synthetic accessor"
-        errorLine1="            return mId;"
-        errorLine2="                   ~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/dsl/Constraint.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                return mWidth - mHorizontalGap;"
-        errorLine2="                                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                return mHeight - mVerticalGap;"
-        errorLine2="                                 ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getWidgetWidth` of class `Flow` requires synthetic accessor"
-        errorLine1="                int width = getWidgetWidth(widget, mMax);"
-        errorLine2="                            ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                int gap = mHorizontalGap;"
-        errorLine2="                          ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getWidgetHeight` of class `Flow` requires synthetic accessor"
-        errorLine1="                int height = getWidgetHeight(widget, mMax);"
-        errorLine2="                             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getWidgetWidth` of class `Flow` requires synthetic accessor"
-        errorLine1="                int width = getWidgetWidth(widget, mMax);"
-        errorLine2="                            ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getWidgetHeight` of class `Flow` requires synthetic accessor"
-        errorLine1="                int height = getWidgetHeight(widget, mMax);"
-        errorLine2="                             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                int gap = mVerticalGap;"
-        errorLine2="                          ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgetsCount` of class `Flow` requires synthetic accessor"
-        errorLine1="                if (mStartIndex + i >= mDisplayedWidgetsCount) {"
-        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgets` of class `Flow` requires synthetic accessor"
-        errorLine1="                ConstraintWidget widget = mDisplayedWidgets[mStartIndex + i];"
-        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgetsCount` of class `Flow` requires synthetic accessor"
-        errorLine1="                if (mStartIndex + index >= mDisplayedWidgetsCount) {"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgets` of class `Flow` requires synthetic accessor"
-        errorLine1="                ConstraintWidget widget = mDisplayedWidgets[mStartIndex + index];"
-        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                verticalWidget.setVerticalChainStyle(mVerticalStyle);"
-        errorLine2="                                                     ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                    padding += mVerticalGap;"
-        errorLine2="                               ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalAlign` of class `Flow` requires synthetic accessor"
-        errorLine1="                if (mVerticalAlign == VERTICAL_ALIGN_BASELINE &amp;&amp; !verticalWidget.hasBaseline()) {"
-        errorLine2="                    ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgetsCount` of class `Flow` requires synthetic accessor"
-        errorLine1="                        if (mStartIndex + index >= mDisplayedWidgetsCount) {"
-        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgets` of class `Flow` requires synthetic accessor"
-        errorLine1="                        ConstraintWidget widget = mDisplayedWidgets[mStartIndex + index];"
-        errorLine2="                                                  ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgetsCount` of class `Flow` requires synthetic accessor"
-        errorLine1="                    if (mStartIndex + index >= mDisplayedWidgetsCount) {"
-        errorLine2="                                               ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgets` of class `Flow` requires synthetic accessor"
-        errorLine1="                    ConstraintWidget widget = mDisplayedWidgets[mStartIndex + index];"
-        errorLine2="                                              ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                        int style = mHorizontalStyle;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                        float bias = isInRtl ? (1 - mHorizontalBias) : mHorizontalBias;"
-        errorLine2="                                                    ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                        float bias = isInRtl ? (1 - mHorizontalBias) : mHorizontalBias;"
-        errorLine2="                                                                       ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFirstHorizontalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                        if (mStartIndex == 0 &amp;&amp; mFirstHorizontalStyle != UNKNOWN) {"
-        errorLine2="                                                ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFirstHorizontalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                            style = mFirstHorizontalStyle;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFirstHorizontalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                            bias = isInRtl ? (1 - mFirstHorizontalBias) : mFirstHorizontalBias;"
-        errorLine2="                                                  ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFirstHorizontalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                            bias = isInRtl ? (1 - mFirstHorizontalBias) : mFirstHorizontalBias;"
-        errorLine2="                                                                          ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastHorizontalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                        } else if (isLastChain &amp;&amp; mLastHorizontalStyle != UNKNOWN) {"
-        errorLine2="                                                  ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastHorizontalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                            style = mLastHorizontalStyle;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastHorizontalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                            bias = isInRtl ? (1 - mLastHorizontalBias) : mLastHorizontalBias;"
-        errorLine2="                                                  ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastHorizontalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                            bias = isInRtl ? (1 - mLastHorizontalBias) : mLastHorizontalBias;"
-        errorLine2="                                                                         ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                        widget.mLeft.connect(previous.mRight, mHorizontalGap);"
-        errorLine2="                                                              ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalAlign` of class `Flow` requires synthetic accessor"
-        errorLine1="                        if (mVerticalAlign == VERTICAL_ALIGN_BASELINE"
-        errorLine2="                            ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalAlign` of class `Flow` requires synthetic accessor"
-        errorLine1="                            switch (mVerticalAlign) {"
-        errorLine2="                                    ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                horizontalWidget.setHorizontalChainStyle(mHorizontalStyle);"
-        errorLine2="                                                         ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                    padding += mHorizontalGap;"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgetsCount` of class `Flow` requires synthetic accessor"
-        errorLine1="                    if (mStartIndex + i >= mDisplayedWidgetsCount) {"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgets` of class `Flow` requires synthetic accessor"
-        errorLine1="                    ConstraintWidget widget = mDisplayedWidgets[mStartIndex + i];"
-        errorLine2="                                              ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                        int style = mVerticalStyle;"
-        errorLine2="                                    ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                        float bias = mVerticalBias;"
-        errorLine2="                                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFirstVerticalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                        if (mStartIndex == 0 &amp;&amp; mFirstVerticalStyle != UNKNOWN) {"
-        errorLine2="                                                ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFirstVerticalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                            style = mFirstVerticalStyle;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFirstVerticalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                            bias = mFirstVerticalBias;"
-        errorLine2="                                   ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastVerticalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                        } else if (isLastChain &amp;&amp; mLastVerticalStyle != UNKNOWN) {"
-        errorLine2="                                                  ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastVerticalStyle` of class `Flow` requires synthetic accessor"
-        errorLine1="                            style = mLastVerticalStyle;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastVerticalBias` of class `Flow` requires synthetic accessor"
-        errorLine1="                            bias = mLastVerticalBias;"
-        errorLine2="                                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                        widget.mTop.connect(previous.mBottom, mVerticalGap);"
-        errorLine2="                                                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalAlign` of class `Flow` requires synthetic accessor"
-        errorLine1="                            switch (mHorizontalAlign) {"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalAlign` of class `Flow` requires synthetic accessor"
-        errorLine1="                            switch (mHorizontalAlign) {"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgetsCount` of class `Flow` requires synthetic accessor"
-        errorLine1="                if (mStartIndex + i >= mDisplayedWidgetsCount) {"
-        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgets` of class `Flow` requires synthetic accessor"
-        errorLine1="                ConstraintWidget widget = mDisplayedWidgets[mStartIndex + i];"
-        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgetsCount` of class `Flow` requires synthetic accessor"
-        errorLine1="                if (mStartIndex + i >= mDisplayedWidgetsCount) {"
-        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisplayedWidgets` of class `Flow` requires synthetic accessor"
-        errorLine1="                ConstraintWidget widget = mDisplayedWidgets[mStartIndex + i];"
-        errorLine2="                                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mHorizontalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                    int gap = mHorizontalGap;"
-        errorLine2="                              ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getWidgetHeight` of class `Flow` requires synthetic accessor"
-        errorLine1="                    int height = getWidgetHeight(widget, mMax);"
-        errorLine2="                                 ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getWidgetWidth` of class `Flow` requires synthetic accessor"
-        errorLine1="                    int width = getWidgetWidth(widget, mMax);"
-        errorLine2="                                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getWidgetHeight` of class `Flow` requires synthetic accessor"
-        errorLine1="                    int height = getWidgetHeight(widget, mMax);"
-        errorLine2="                                 ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVerticalGap` of class `Flow` requires synthetic accessor"
-        errorLine1="                    int gap = mVerticalGap;"
-        errorLine2="                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                        &amp;&amp; list.mBiggest != null;"
-        errorLine2="                                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                        &amp;&amp; list.mBiggest != null;"
-        errorLine2="                                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                    bottom = next.mBiggest.mTop;"
-        errorLine2="                                  ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                ConstraintAnchor currentBottom = current.mBiggest.mBottom;"
-        errorLine2="                                                         ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                    right = next.mBiggest.mLeft;"
-        errorLine2="                                 ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                ConstraintAnchor currentRight = current.mBiggest.mRight;"
-        errorLine2="                                                        ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                        &amp;&amp; list.mBiggest != null;"
-        errorLine2="                                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                        &amp;&amp; list.mBiggest != null;"
-        errorLine2="                                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                    bottom = next.mBiggest.mTop;"
-        errorLine2="                                  ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                ConstraintAnchor currentBottom = current.mBiggest.mBottom;"
-        errorLine2="                                                         ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                    right = next.mBiggest.mLeft;"
-        errorLine2="                                 ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBiggest` of class `WidgetsList` requires synthetic accessor"
-        errorLine1="                ConstraintAnchor currentRight = current.mBiggest.mRight;"
-        errorLine2="                                                        ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/widgets/Flow.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `removeGoal` of class `PriorityGoalRow` requires synthetic accessor"
-        errorLine1="                    removeGoal(mVariable);"
-        errorLine2="                    ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/core/PriorityGoalRow.java"/>
-    </issue>
-
-    <issue
         id="KotlinPropertyAccess"
         message="The getter return type (`CLElement`) and setter parameter type (`CLContainer`) getter and setter methods for property `container` should have exactly the same type to allow be accessed as a property from Kotlin; see https://android.github.io/kotlin-guides/interop.html#property-prefixes"
         errorLine1="    public CLElement getContainer() {"
diff --git a/constraintlayout/constraintlayout/lint-baseline.xml b/constraintlayout/constraintlayout/lint-baseline.xml
index a9b5204..03b1210 100644
--- a/constraintlayout/constraintlayout/lint-baseline.xml
+++ b/constraintlayout/constraintlayout/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.0.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-alpha07)" variant="all" version="8.0.0-alpha07">
+<issues format="6" by="lint 8.1.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0)" variant="all" version="8.1.0">
 
     <issue
         id="NewApi"
@@ -1118,3138 +1118,6 @@
     </issue>
 
     <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `Carousel` requires synthetic accessor"
-        errorLine1="            mMotionLayout.setProgress(0);"
-        errorLine2="            ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `updateItems` of class `Carousel` requires synthetic accessor"
-        errorLine1="            updateItems();"
-        errorLine2="            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAdapter` of class `Carousel` requires synthetic accessor"
-        errorLine1="            mAdapter.onNewItem(mIndex);"
-        errorLine2="            ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="            mAdapter.onNewItem(mIndex);"
-        errorLine2="                               ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `Carousel` requires synthetic accessor"
-        errorLine1="            float velocity = mMotionLayout.getVelocity();"
-        errorLine2="                             ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchUpMode` of class `Carousel` requires synthetic accessor"
-        errorLine1="            if (mTouchUpMode == TOUCH_UP_CARRY_ON &amp;&amp; velocity > mVelocityThreshold"
-        errorLine2="                ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mVelocityThreshold` of class `Carousel` requires synthetic accessor"
-        errorLine1="            if (mTouchUpMode == TOUCH_UP_CARRY_ON &amp;&amp; velocity > mVelocityThreshold"
-        errorLine2="                                                                ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAdapter` of class `Carousel` requires synthetic accessor"
-        errorLine1="                    &amp;&amp; mIndex &lt; mAdapter.count() - 1) {"
-        errorLine2="                                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="                    &amp;&amp; mIndex &lt; mAdapter.count() - 1) {"
-        errorLine2="                       ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDampening` of class `Carousel` requires synthetic accessor"
-        errorLine1="                final float v = velocity * mDampening;"
-        errorLine2="                                           ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="                if (mIndex == 0 &amp;&amp; mPreviousIndex > mIndex) {"
-        errorLine2="                    ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="                if (mIndex == 0 &amp;&amp; mPreviousIndex > mIndex) {"
-        errorLine2="                                                    ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPreviousIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="                if (mIndex == 0 &amp;&amp; mPreviousIndex > mIndex) {"
-        errorLine2="                                   ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAdapter` of class `Carousel` requires synthetic accessor"
-        errorLine1="                if (mIndex == mAdapter.count() - 1 &amp;&amp; mPreviousIndex &lt; mIndex) {"
-        errorLine2="                              ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="                if (mIndex == mAdapter.count() - 1 &amp;&amp; mPreviousIndex &lt; mIndex) {"
-        errorLine2="                    ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="                if (mIndex == mAdapter.count() - 1 &amp;&amp; mPreviousIndex &lt; mIndex) {"
-        errorLine2="                                                                       ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPreviousIndex` of class `Carousel` requires synthetic accessor"
-        errorLine1="                if (mIndex == mAdapter.count() - 1 &amp;&amp; mPreviousIndex &lt; mIndex) {"
-        errorLine2="                                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `Carousel` requires synthetic accessor"
-        errorLine1="                mMotionLayout.post(new Runnable() {"
-        errorLine2="                ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `Carousel` requires synthetic accessor"
-        errorLine1="                        mMotionLayout.touchAnimateTo(MotionLayout.TOUCH_UP_DECELERATE_AND_COMPLETE,"
-        errorLine2="                        ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/helper/widget/Carousel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMetrics` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="            if (mMetrics != null) {"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMetrics` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="                mMetrics.mNumberOfMeasures++;"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOptimizationLevel` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="            if (container != null &amp;&amp; Optimizer.enabled(mOptimizationLevel,"
-        errorLine2="                                                       ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOptimizationLevel` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="                boolean optimizeDirect = Optimizer.enabled(mOptimizationLevel,"
-        errorLine2="                                                           ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMetrics` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="            if (mMetrics != null) {"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMetrics` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="                mMetrics.measuresWidgetsDuration += (endMeasure - startMeasure);"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintHelpers` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="            final int helperCount = mLayout.mConstraintHelpers.size();"
-        errorLine2="                                            ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintHelpers` of class `ConstraintLayout` requires synthetic accessor"
-        errorLine1="                    ConstraintHelper helper = mLayout.mConstraintHelpers.get(i);"
-        errorLine2="                                                      ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `fillFrom` of class `Constraint` requires synthetic accessor"
-        errorLine1="                constraint.fillFrom(id, param);"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        leftToLeft = lookupID(a, attr, leftToLeft);"
-        errorLine2="                                     ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        leftToRight = lookupID(a, attr, leftToRight);"
-        errorLine2="                                      ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        rightToLeft = lookupID(a, attr, rightToLeft);"
-        errorLine2="                                      ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        rightToRight = lookupID(a, attr, rightToRight);"
-        errorLine2="                                       ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        topToTop = lookupID(a, attr, topToTop);"
-        errorLine2="                                   ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        topToBottom = lookupID(a, attr, topToBottom);"
-        errorLine2="                                      ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        bottomToTop = lookupID(a, attr, bottomToTop);"
-        errorLine2="                                      ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        bottomToBottom = lookupID(a, attr, bottomToBottom);"
-        errorLine2="                                         ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        baselineToBaseline = lookupID(a, attr, baselineToBaseline);"
-        errorLine2="                                             ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        baselineToTop = lookupID(a, attr, baselineToTop);"
-        errorLine2="                                        ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        baselineToBottom = lookupID(a, attr, baselineToBottom);"
-        errorLine2="                                           ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        startToEnd = lookupID(a, attr, startToEnd);"
-        errorLine2="                                     ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        startToStart = lookupID(a, attr, startToStart);"
-        errorLine2="                                       ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        endToStart = lookupID(a, attr, endToStart);"
-        errorLine2="                                     ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        endToEnd = lookupID(a, attr, endToEnd);"
-        errorLine2="                                   ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        circleConstraint = lookupID(a, attr, circleConstraint);"
-        errorLine2="                                           ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        transformPivotTarget = lookupID(a, attr, transformPivotTarget);"
-        errorLine2="                                               ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `lookupID` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                        mAnimateRelativeTo = lookupID(a, attr, mAnimateRelativeTo);"
-        errorLine2="                                             ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setDeltaValue` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                    setDeltaValue(c, mTypeInt[i], mValueInt[i]);"
-        errorLine2="                    ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setDeltaValue` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                    setDeltaValue(c, mTypeFloat[i], mValueFloat[i]);"
-        errorLine2="                    ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setDeltaValue` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                    setDeltaValue(c, mTypeString[i], mValueString[i]);"
-        errorLine2="                    ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setDeltaValue` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                    setDeltaValue(c, mTypeBoolean[i], mValueBoolean[i]);"
-        errorLine2="                    ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `fillFrom` of class `Constraint` requires synthetic accessor"
-        errorLine1="            constraint.fillFrom(id, param);"
-        errorLine2="            ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `fillFromConstraints` of class `Constraint` requires synthetic accessor"
-        errorLine1="                constraint.fillFromConstraints(helper, id, param);"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `fillFromConstraints` of class `Constraint` requires synthetic accessor"
-        errorLine1="            constraint.fillFromConstraints(id, param);"
-        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setIntValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="        get(viewId).setIntValue(attributeName, value);"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setColorValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="        get(viewId).setColorValue(attributeName, value);"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setFloatValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="        get(viewId).setFloatValue(attributeName, value);"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setStringValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="        get(viewId).setStringValue(attributeName, value);"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setFloatValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="                set.setFloatValue(attr[0], Integer.decode(attr[1]));"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setColorValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="                set.setColorValue(attr[0], Color.parseColor(attr[1]));"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setFloatValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="                set.setFloatValue(attr[0], Float.parseFloat(attr[1]));"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setStringValue` of class `Constraint` requires synthetic accessor"
-        errorLine1="            set.setStringValue(attr[0], attr[1]);"
-        errorLine2="            ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraints` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="            for (Integer id : mConstraints.keySet()) {"
-        errorLine2="                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraints` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                Constraint c = mConstraints.get(id);"
-        errorLine2="                               ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraints` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="            for (Integer id : mConstraints.keySet()) {"
-        errorLine2="                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraints` of class `ConstraintSet` requires synthetic accessor"
-        errorLine1="                Constraint c = mConstraints.get(id);"
-        errorLine2="                               ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/widget/ConstraintSet.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRoundPercent` of class `ImageFilterButton` requires synthetic accessor"
-        errorLine1="                            float r = Math.min(w, h) * mRoundPercent / 2;"
-        errorLine2="                                                       ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/ImageFilterButton.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRound` of class `ImageFilterButton` requires synthetic accessor"
-        errorLine1="                            outline.setRoundRect(0, 0, w, h, mRound);"
-        errorLine2="                                                             ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/ImageFilterButton.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRoundPercent` of class `ImageFilterView` requires synthetic accessor"
-        errorLine1="                            float r = Math.min(w, h) * mRoundPercent / 2;"
-        errorLine2="                                                       ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRound` of class `ImageFilterView` requires synthetic accessor"
-        errorLine1="                            outline.setRoundRect(0, 0, w, h, mRound);"
-        errorLine2="                                                             ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAlpha` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mAlpha = a.getFloat(attr, c.mAlpha);"
-        errorLine2="                          ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAlpha` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mAlpha = a.getFloat(attr, c.mAlpha);"
-        errorLine2="                                                      ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mElevation` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mElevation = a.getDimension(attr, c.mElevation);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mElevation` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mElevation = a.getDimension(attr, c.mElevation);"
-        errorLine2="                                                              ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotation` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mRotation = a.getFloat(attr, c.mRotation);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotation` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mRotation = a.getFloat(attr, c.mRotation);"
-        errorLine2="                                                         ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCurveFit` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mCurveFit = a.getInteger(attr, c.mCurveFit);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCurveFit` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mCurveFit = a.getInteger(attr, c.mCurveFit);"
-        errorLine2="                                                           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mScaleX = a.getFloat(attr, c.mScaleX);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mScaleX = a.getFloat(attr, c.mScaleX);"
-        errorLine2="                                                       ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mRotationX = a.getFloat(attr, c.mRotationX);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mRotationX = a.getFloat(attr, c.mRotationX);"
-        errorLine2="                                                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mRotationY = a.getFloat(attr, c.mRotationY);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mRotationY = a.getFloat(attr, c.mRotationY);"
-        errorLine2="                                                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPivotX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mPivotX = a.getDimension(attr, c.mPivotX);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPivotX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mPivotX = a.getDimension(attr, c.mPivotX);"
-        errorLine2="                                                           ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPivotY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mPivotY = a.getDimension(attr, c.mPivotY);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPivotY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mPivotY = a.getDimension(attr, c.mPivotY);"
-        errorLine2="                                                           ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionEasing` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mTransitionEasing = a.getString(attr);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mScaleY = a.getFloat(attr, c.mScaleY);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mScaleY = a.getFloat(attr, c.mScaleY);"
-        errorLine2="                                                       ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionPathRotate` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mTransitionPathRotate = a.getFloat(attr, c.mTransitionPathRotate);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionPathRotate` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mTransitionPathRotate = a.getFloat(attr, c.mTransitionPathRotate);"
-        errorLine2="                                                                     ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mTranslationX = a.getDimension(attr, c.mTranslationX);"
-        errorLine2="                          ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationX` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mTranslationX = a.getDimension(attr, c.mTranslationX);"
-        errorLine2="                                                                 ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mTranslationY = a.getDimension(attr, c.mTranslationY);"
-        errorLine2="                          ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationY` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mTranslationY = a.getDimension(attr, c.mTranslationY);"
-        errorLine2="                                                                 ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationZ` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                            c.mTranslationZ = a.getDimension(attr, c.mTranslationZ);"
-        errorLine2="                              ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationZ` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                            c.mTranslationZ = a.getDimension(attr, c.mTranslationZ);"
-        errorLine2="                                                                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mProgress` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mProgress = a.getFloat(attr, c.mProgress);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mProgress` of class `KeyAttributes` requires synthetic accessor"
-        errorLine1="                        c.mProgress = a.getFloat(attr, c.mProgress);"
-        errorLine2="                                                         ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `read` of class `Loader` requires synthetic accessor"
-        errorLine1="        Loader.read(this, a);"
-        errorLine2="        ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionEasing` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mTransitionEasing = a.getString(attr);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCurveFit` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mCurveFit = a.getInteger(attr, c.mCurveFit);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCurveFit` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mCurveFit = a.getInteger(attr, c.mCurveFit);"
-        errorLine2="                                                           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCustomWaveShape` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mCustomWaveShape = a.getString(attr);"
-        errorLine2="                              ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveShape` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveShape = Oscillator.CUSTOM;"
-        errorLine2="                              ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveShape` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveShape = a.getInt(attr, c.mWaveShape);"
-        errorLine2="                              ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveShape` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveShape = a.getInt(attr, c.mWaveShape);"
-        errorLine2="                                                            ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWavePeriod` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mWavePeriod = a.getFloat(attr, c.mWavePeriod);"
-        errorLine2="                          ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWavePeriod` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mWavePeriod = a.getFloat(attr, c.mWavePeriod);"
-        errorLine2="                                                           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getDimension(attr, c.mWaveOffset);"
-        errorLine2="                              ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getDimension(attr, c.mWaveOffset);"
-        errorLine2="                                                                   ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getFloat(attr, c.mWaveOffset);"
-        errorLine2="                              ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getFloat(attr, c.mWaveOffset);"
-        errorLine2="                                                               ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveVariesBy` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mWaveVariesBy = a.getInt(attr, c.mWaveVariesBy);"
-        errorLine2="                          ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveVariesBy` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mWaveVariesBy = a.getInt(attr, c.mWaveVariesBy);"
-        errorLine2="                                                           ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAlpha` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mAlpha = a.getFloat(attr, c.mAlpha);"
-        errorLine2="                          ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAlpha` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mAlpha = a.getFloat(attr, c.mAlpha);"
-        errorLine2="                                                      ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mElevation` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mElevation = a.getDimension(attr, c.mElevation);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mElevation` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mElevation = a.getDimension(attr, c.mElevation);"
-        errorLine2="                                                              ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotation` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotation = a.getFloat(attr, c.mRotation);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotation` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotation = a.getFloat(attr, c.mRotation);"
-        errorLine2="                                                         ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationX` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationX = a.getFloat(attr, c.mRotationX);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationX` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationX = a.getFloat(attr, c.mRotationX);"
-        errorLine2="                                                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationY` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationY = a.getFloat(attr, c.mRotationY);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationY` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationY = a.getFloat(attr, c.mRotationY);"
-        errorLine2="                                                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionPathRotate` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mTransitionPathRotate = a.getFloat(attr, c.mTransitionPathRotate);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionPathRotate` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mTransitionPathRotate = a.getFloat(attr, c.mTransitionPathRotate);"
-        errorLine2="                                                                     ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleX` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleX = a.getFloat(attr, c.mScaleX);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleX` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleX = a.getFloat(attr, c.mScaleX);"
-        errorLine2="                                                       ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleY` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleY = a.getFloat(attr, c.mScaleY);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleY` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleY = a.getFloat(attr, c.mScaleY);"
-        errorLine2="                                                       ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationX` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationX = a.getDimension(attr, c.mTranslationX);"
-        errorLine2="                          ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationX` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationX = a.getDimension(attr, c.mTranslationX);"
-        errorLine2="                                                                 ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationY` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationY = a.getDimension(attr, c.mTranslationY);"
-        errorLine2="                          ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationY` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationY = a.getDimension(attr, c.mTranslationY);"
-        errorLine2="                                                                 ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationZ` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mTranslationZ = a.getDimension(attr, c.mTranslationZ);"
-        errorLine2="                              ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationZ` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                            c.mTranslationZ = a.getDimension(attr, c.mTranslationZ);"
-        errorLine2="                                                                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mProgress` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mProgress = a.getFloat(attr, c.mProgress);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mProgress` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mProgress = a.getFloat(attr, c.mProgress);"
-        errorLine2="                                                         ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWavePhase` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mWavePhase = a.getFloat(attr, c.mWavePhase) / 360;"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWavePhase` of class `KeyCycle` requires synthetic accessor"
-        errorLine1="                        c.mWavePhase = a.getFloat(attr, c.mWavePhase) / 360;"
-        errorLine2="                                                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `read` of class `Loader` requires synthetic accessor"
-        errorLine1="        Loader.read(this, a);"
-        errorLine2="        ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyPosition.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAlpha` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mAlpha = a.getFloat(attr, c.mAlpha);"
-        errorLine2="                          ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAlpha` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mAlpha = a.getFloat(attr, c.mAlpha);"
-        errorLine2="                                                      ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mElevation` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mElevation = a.getDimension(attr, c.mElevation);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mElevation` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mElevation = a.getDimension(attr, c.mElevation);"
-        errorLine2="                                                              ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotation` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotation = a.getFloat(attr, c.mRotation);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotation` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotation = a.getFloat(attr, c.mRotation);"
-        errorLine2="                                                         ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCurveFit` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mCurveFit = a.getInteger(attr, c.mCurveFit);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCurveFit` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mCurveFit = a.getInteger(attr, c.mCurveFit);"
-        errorLine2="                                                           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCustomWaveShape` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mCustomWaveShape = a.getString(attr);"
-        errorLine2="                              ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveShape` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveShape = Oscillator.CUSTOM;"
-        errorLine2="                              ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveShape` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveShape = a.getInt(attr, c.mWaveShape);"
-        errorLine2="                              ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveShape` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveShape = a.getInt(attr, c.mWaveShape);"
-        errorLine2="                                                            ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWavePeriod` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mWavePeriod = a.getFloat(attr, c.mWavePeriod);"
-        errorLine2="                          ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWavePeriod` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mWavePeriod = a.getFloat(attr, c.mWavePeriod);"
-        errorLine2="                                                           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getDimension(attr, c.mWaveOffset);"
-        errorLine2="                              ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getDimension(attr, c.mWaveOffset);"
-        errorLine2="                                                                   ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getFloat(attr, c.mWaveOffset);"
-        errorLine2="                              ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mWaveOffset` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mWaveOffset = a.getFloat(attr, c.mWaveOffset);"
-        errorLine2="                                                               ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleX` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleX = a.getFloat(attr, c.mScaleX);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleX` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleX = a.getFloat(attr, c.mScaleX);"
-        errorLine2="                                                       ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationX` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationX = a.getFloat(attr, c.mRotationX);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationX` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationX = a.getFloat(attr, c.mRotationX);"
-        errorLine2="                                                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationY` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationY = a.getFloat(attr, c.mRotationY);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRotationY` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mRotationY = a.getFloat(attr, c.mRotationY);"
-        errorLine2="                                                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionEasing` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mTransitionEasing = a.getString(attr);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleY` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleY = a.getFloat(attr, c.mScaleY);"
-        errorLine2="                          ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mScaleY` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mScaleY = a.getFloat(attr, c.mScaleY);"
-        errorLine2="                                                       ~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionPathRotate` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mTransitionPathRotate = a.getFloat(attr, c.mTransitionPathRotate);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTransitionPathRotate` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mTransitionPathRotate = a.getFloat(attr, c.mTransitionPathRotate);"
-        errorLine2="                                                                     ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationX` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationX = a.getDimension(attr, c.mTranslationX);"
-        errorLine2="                          ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationX` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationX = a.getDimension(attr, c.mTranslationX);"
-        errorLine2="                                                                 ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationY` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationY = a.getDimension(attr, c.mTranslationY);"
-        errorLine2="                          ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationY` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mTranslationY = a.getDimension(attr, c.mTranslationY);"
-        errorLine2="                                                                 ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationZ` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mTranslationZ = a.getDimension(attr, c.mTranslationZ);"
-        errorLine2="                              ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTranslationZ` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                            c.mTranslationZ = a.getDimension(attr, c.mTranslationZ);"
-        errorLine2="                                                                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mProgress` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mProgress = a.getFloat(attr, c.mProgress);"
-        errorLine2="                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mProgress` of class `KeyTimeCycle` requires synthetic accessor"
-        errorLine1="                        c.mProgress = a.getFloat(attr, c.mProgress);"
-        errorLine2="                                                         ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mFireThreshold` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mFireThreshold = (c.mFramePosition + .5f) / 100f;"
-        errorLine2="                          ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mNegativeCross` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mNegativeCross = a.getString(attr);"
-        errorLine2="                          ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPositiveCross` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mPositiveCross = a.getString(attr);"
-        errorLine2="                          ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCross` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mCross = a.getString(attr);"
-        errorLine2="                          ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTriggerID` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mTriggerID = a.getResourceId(attr, c.mTriggerID);"
-        errorLine2="                          ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTriggerID` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mTriggerID = a.getResourceId(attr, c.mTriggerID);"
-        errorLine2="                                                               ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTriggerCollisionId` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mTriggerCollisionId = a.getResourceId(attr, c.mTriggerCollisionId);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTriggerCollisionId` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mTriggerCollisionId = a.getResourceId(attr, c.mTriggerCollisionId);"
-        errorLine2="                                                                        ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPostLayout` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mPostLayout = a.getBoolean(attr, c.mPostLayout);"
-        errorLine2="                          ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPostLayout` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mPostLayout = a.getBoolean(attr, c.mPostLayout);"
-        errorLine2="                                                             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTriggerReceiver` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mTriggerReceiver = a.getResourceId(attr, c.mTriggerReceiver);"
-        errorLine2="                          ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTriggerReceiver` of class `KeyTrigger` requires synthetic accessor"
-        errorLine1="                        c.mTriggerReceiver = a.getResourceId(attr, c.mTriggerReceiver);"
-        errorLine2="                                                                     ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/KeyTrigger.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRoundPercent` of class `MotionButton` requires synthetic accessor"
-        errorLine1="                            float r = Math.min(w, h) * mRoundPercent / 2;"
-        errorLine2="                                                       ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/MotionButton.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRound` of class `MotionButton` requires synthetic accessor"
-        errorLine1="                            outline.setRoundRect(0, 0, w, h, mRound);"
-        errorLine2="                                                             ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/MotionButton.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRoundPercent` of class `MotionLabel` requires synthetic accessor"
-        errorLine1="                            float r = Math.min(w, h) * mRoundPercent / 2;"
-        errorLine2="                                                       ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/MotionLabel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mRound` of class `MotionLabel` requires synthetic accessor"
-        errorLine1="                            outline.setRoundRect(0, 0, w, h, mRound);"
-        errorLine2="                                                             ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/utils/widget/MotionLabel.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mStateCache` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                                        mStateCache.apply();"
-        errorLine2="                                        ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mEndState` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="            mEndState = MotionLayout.this.mEndState;"
-        errorLine2="                                          ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mBeginState` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="            mStartState = MotionLayout.this.mBeginState;"
-        errorLine2="                                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mInRotation` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                mInRotation = false;"
-        errorLine2="                ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastHeightMeasureSpec` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="            measure(mLastWidthMeasureSpec, mLastHeightMeasureSpec);"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLastWidthMeasureSpec` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="            measure(mLastWidthMeasureSpec, mLastHeightMeasureSpec);"
-        errorLine2="                    ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `setupMotionViews` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="            setupMotionViews();"
-        errorLine2="            ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `toRect` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                        motionController.setStartState(toRect(startWidget), mStart,"
-        errorLine2="                                                       ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mInRotation` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                    if (mInRotation) {"
-        errorLine2="                        ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPreRotateHeight` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                                mPreRotateWidth, mPreRotateHeight);"
-        errorLine2="                                                 ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPreRotateWidth` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                                mPreRotateWidth, mPreRotateHeight);"
-        errorLine2="                                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `toRect` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                        motionController.setEndState(toRect(endWidget), mEnd,"
-        errorLine2="                                                     ~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mEndState` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                String str = getContext().getResources().getResourceName(mEndState)"
-        errorLine2="                                                                         ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mStateCache` of class `MotionLayout` requires synthetic accessor"
-        errorLine1="                        mStateCache.apply();"
-        errorLine2="                        ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (mCurrentTransition.mConstraintSetEnd == endId"
-        errorLine2="                                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="                    &amp;&amp; mCurrentTransition.mConstraintSetStart == beginId) {"
-        errorLine2="                                          ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="            if ((transition.mConstraintSetEnd == end"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="                    &amp;&amp; transition.mConstraintSetStart == start)"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                    || (transition.mConstraintSetEnd == endId"
-        errorLine2="                                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="                    &amp;&amp; transition.mConstraintSetStart == beginId)) {"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                                     ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                    mCurrentTransition.mTouchResponse.setRTL(mRtl);"
-        errorLine2="                                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mConstraintSetEnd == endId) {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="        t.mConstraintSetStart = start;"
-        errorLine2="          ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="        t.mConstraintSetEnd = end;"
-        errorLine2="          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mId` of class `Transition` requires synthetic accessor"
-        errorLine1="        int id = transition.mId;"
-        errorLine2="                            ~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mId` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (mTransitionList.get(index).mId == id) {"
-        errorLine2="                                           ~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            mCurrentTransition.mTouchResponse.setRTL(mRtl);"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mConstraintSetStart == stateId"
-        errorLine2="                           ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                    || transition.mConstraintSetEnd == stateId) {"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mOnClicks.size() > 0) {"
-        errorLine2="                           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="                for (Transition.TransitionOnClick onClick : transition.mOnClicks) {"
-        errorLine2="                                                                       ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mOnClicks.size() > 0) {"
-        errorLine2="                           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="                for (Transition.TransitionOnClick onClick : transition.mOnClicks) {"
-        errorLine2="                                                                       ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mOnClicks.size() > 0) {"
-        errorLine2="                           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="                for (Transition.TransitionOnClick onClick : transition.mOnClicks) {"
-        errorLine2="                                                                       ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mOnClicks.size() > 0) {"
-        errorLine2="                           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mOnClicks` of class `Transition` requires synthetic accessor"
-        errorLine1="                for (Transition.TransitionOnClick onClick : transition.mOnClicks) {"
-        errorLine2="                                                                       ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDisable` of class `Transition` requires synthetic accessor"
-        errorLine1="                if (transition.mDisable) {"
-        errorLine2="                               ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                if (transition.mTouchResponse != null) {"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                    transition.mTouchResponse.setRTL(mRtl);"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                    RectF region = transition.mTouchResponse.getTouchRegion(mMotionLayout, cache);"
-        errorLine2="                                              ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                    region = transition.mTouchResponse.getLimitBoundsTo(mMotionLayout, cache);"
-        errorLine2="                                        ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                    float val = transition.mTouchResponse.dot(dx, dy);"
-        errorLine2="                                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                    if (transition.mTouchResponse.mIsRotateMode &amp;&amp; lastTouchDown != null) {"
-        errorLine2="                                   ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                                - transition.mTouchResponse.mRotateCenterX;"
-        errorLine2="                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                                - transition.mTouchResponse.mRotateCenterY;"
-        errorLine2="                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                    if (transition.mConstraintSetEnd == currentState) { // flip because backwards"
-        errorLine2="                                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mId` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mId == id) {"
-        errorLine2="                           ~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAutoTransition` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mAutoTransition == Transition.AUTO_NONE) {"
-        errorLine2="                           ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (currentState == transition.mConstraintSetStart &amp;&amp; ("
-        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAutoTransition` of class `Transition` requires synthetic accessor"
-        errorLine1="                    transition.mAutoTransition == Transition.AUTO_ANIMATE_TO_END"
-        errorLine2="                               ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAutoTransition` of class `Transition` requires synthetic accessor"
-        errorLine1="                            || transition.mAutoTransition == Transition.AUTO_JUMP_TO_END)) {"
-        errorLine2="                                          ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAutoTransition` of class `Transition` requires synthetic accessor"
-        errorLine1="                if (transition.mAutoTransition == Transition.AUTO_ANIMATE_TO_END) {"
-        errorLine2="                               ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (currentState == transition.mConstraintSetEnd &amp;&amp; ("
-        errorLine2="                                           ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAutoTransition` of class `Transition` requires synthetic accessor"
-        errorLine1="                    transition.mAutoTransition == Transition.AUTO_ANIMATE_TO_START"
-        errorLine2="                               ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAutoTransition` of class `Transition` requires synthetic accessor"
-        errorLine1="                            || transition.mAutoTransition == Transition.AUTO_JUMP_TO_START)) {"
-        errorLine2="                                          ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mAutoTransition` of class `Transition` requires synthetic accessor"
-        errorLine1="                if (transition.mAutoTransition == Transition.AUTO_ANIMATE_TO_START) {"
-        errorLine2="                               ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            mCurrentTransition.mTouchResponse.setRTL(mRtl);"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `MotionScene` requires synthetic accessor"
-        errorLine1="                    : new TouchResponse(mMotionScene.mMotionLayout, onSwipe);"
-        errorLine2="                                                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="                int start = transition.mConstraintSetStart;"
-        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                int end = transition.mConstraintSetEnd;"
-        errorLine2="                                     ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                int dest = mTransition.mConstraintSetEnd;"
-        errorLine2="                                       ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="                int from = mTransition.mConstraintSetStart;"
-        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `MotionScene` requires synthetic accessor"
-        errorLine1="                MotionLayout tl = mTransition.mMotionScene.mMotionLayout;"
-        errorLine2="                                                           ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionScene` of class `Transition` requires synthetic accessor"
-        errorLine1="                MotionLayout tl = mTransition.mMotionScene.mMotionLayout;"
-        errorLine2="                                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="                if (mTransition.mConstraintSetStart == UNSET) {"
-        errorLine2="                                ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                        tl.transitionToState(mTransition.mConstraintSetEnd);"
-        errorLine2="                                                         ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionScene` of class `Transition` requires synthetic accessor"
-        errorLine1="                    Transition t = new Transition(mTransition.mMotionScene, mTransition);"
-        errorLine2="                                                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="                    t.mConstraintSetStart = currentState;"
-        errorLine2="                      ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                    t.mConstraintSetEnd = mTransition.mConstraintSetEnd;"
-        errorLine2="                      ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                    t.mConstraintSetEnd = mTransition.mConstraintSetEnd;"
-        errorLine2="                                                      ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionScene` of class `Transition` requires synthetic accessor"
-        errorLine1="                Transition current = mTransition.mMotionScene.mCurrentTransition;"
-        errorLine2="                                                 ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionScene` of class `Transition` requires synthetic accessor"
-        errorLine1="                    if (mTransition.mMotionScene.mCurrentTransition != mTransition) {"
-        errorLine2="                                    ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDefaultDuration` of class `MotionScene` requires synthetic accessor"
-        errorLine1="            mDuration = motionScene.mDefaultDuration;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDefaultDuration` of class `MotionScene` requires synthetic accessor"
-        errorLine1="            mDuration = motionScene.mDefaultDuration;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLayoutDuringTransition` of class `MotionScene` requires synthetic accessor"
-        errorLine1="            mLayoutDuringTransition = motionScene.mLayoutDuringTransition;"
-        errorLine2="                                                  ~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDefaultDuration` of class `MotionScene` requires synthetic accessor"
-        errorLine1="            mDuration = motionScene.mDefaultDuration;"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mLayoutDuringTransition` of class `MotionScene` requires synthetic accessor"
-        errorLine1="            mLayoutDuringTransition = motionScene.mLayoutDuringTransition;"
-        errorLine2="                                                  ~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetMap` of class `MotionScene` requires synthetic accessor"
-        errorLine1="                        motionScene.mConstraintSetMap.append(mConstraintSetEnd, cSet);"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `parseInclude` of class `MotionScene` requires synthetic accessor"
-        errorLine1="                        int id = motionScene.parseInclude(context, mConstraintSetEnd);"
-        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetMap` of class `MotionScene` requires synthetic accessor"
-        errorLine1="                        motionScene.mConstraintSetMap.append(mConstraintSetStart, cSet);"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `parseInclude` of class `MotionScene` requires synthetic accessor"
-        errorLine1="                        int id = motionScene.parseInclude(context, mConstraintSetStart);"
-        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIsAbstract` of class `Transition` requires synthetic accessor"
-        errorLine1="                                if (mCurrentTransition == null &amp;&amp; !transition.mIsAbstract) {"
-        errorLine2="                                                                              ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                                            &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                                  ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                                        mCurrentTransition.mTouchResponse.setRTL(mRtl);"
-        errorLine2="                                                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mIsAbstract` of class `Transition` requires synthetic accessor"
-        errorLine1="                                if (transition.mIsAbstract) { // global transition only one for now"
-        errorLine2="                                               ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="                                    if (transition.mConstraintSetEnd == UNSET) {"
-        errorLine2="                                                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                                    transition.mTouchResponse ="
-        errorLine2="                                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mKeyFramesList` of class `Transition` requires synthetic accessor"
-        errorLine1="                                    transition.mKeyFramesList.add(keyFrames);"
-        errorLine2="                                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mKeyFramesList` of class `Transition` requires synthetic accessor"
-        errorLine1="                for (KeyFrames keyFrames : mDefaultTransition.mKeyFramesList) {"
-        errorLine2="                                                              ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mKeyFramesList` of class `Transition` requires synthetic accessor"
-        errorLine1="        for (KeyFrames keyFrames : mCurrentTransition.mKeyFramesList) {"
-        errorLine2="                                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mKeyFramesList` of class `Transition` requires synthetic accessor"
-        errorLine1="        for (KeyFrames keyFrames : mCurrentTransition.mKeyFramesList) {"
-        errorLine2="                                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mConstraintSetStart == stateId) {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mKeyFramesList` of class `Transition` requires synthetic accessor"
-        errorLine1="        for (KeyFrames keyFrames : mCurrentTransition.mKeyFramesList) {"
-        errorLine2="                                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mKeyFramesList` of class `Transition` requires synthetic accessor"
-        errorLine1="        for (KeyFrames keyFrames : mCurrentTransition.mKeyFramesList) {"
-        errorLine2="                                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            if (transition.mTouchResponse != null) {"
-        errorLine2="                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        return mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null;"
-        errorLine2="                                                                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                    if (mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                        region = mCurrentTransition.mTouchResponse"
-        errorLine2="                                                    ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                        region = mCurrentTransition.mTouchResponse"
-        errorLine2="                                                    ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                        mCurrentTransition.mTouchResponse.setDown(mLastTouchX, mLastTouchY);"
-        errorLine2="                                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                                .mTouchResponse.getTouchRegion(mMotionLayout, cache);"
-        errorLine2="                                 ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="                        mCurrentTransition.mTouchResponse.setUpTouchEvent(mLastTouchX, mLastTouchY);"
-        errorLine2="                                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            mCurrentTransition.mTouchResponse.processTouchEvent(event,"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            mCurrentTransition.mTouchResponse.scrollMove(dx, dy);"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            mCurrentTransition.mTouchResponse.scrollUp(dx, dy);"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getProgressDirection(dx, dy);"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetStart` of class `Transition` requires synthetic accessor"
-        errorLine1="        return mCurrentTransition.mConstraintSetStart;"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConstraintSetEnd` of class `Transition` requires synthetic accessor"
-        errorLine1="        return mCurrentTransition.mConstraintSetEnd;"
-        errorLine2="                                  ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDefaultInterpolator` of class `Transition` requires synthetic accessor"
-        errorLine1="        switch (mCurrentTransition.mDefaultInterpolator) {"
-        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDefaultInterpolatorString` of class `Transition` requires synthetic accessor"
-        errorLine1="                        .getInterpolator(mCurrentTransition.mDefaultInterpolatorString);"
-        errorLine2="                                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDefaultInterpolatorID` of class `Transition` requires synthetic accessor"
-        errorLine1="                        mCurrentTransition.mDefaultInterpolatorID);"
-        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mDuration` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mDuration;"
-        errorLine2="                                      ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mPathMotionArc` of class `Transition` requires synthetic accessor"
-        errorLine1="        return (mCurrentTransition != null) ? mCurrentTransition.mPathMotionArc : UNSET;"
-        errorLine2="                                                                 ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mStagger` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mStagger;"
-        errorLine2="                                      ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getMaxAcceleration();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getMaxVelocity();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getSpringStiffness();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getSpringMass();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getSpringDamping();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getSpringStopThreshold();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getSpringBoundary();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getAutoCompleteMode();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            mCurrentTransition.mTouchResponse.setupTouch();"
-        errorLine2="                               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="        if (mCurrentTransition != null &amp;&amp; mCurrentTransition.mTouchResponse != null) {"
-        errorLine2="                                                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mTouchResponse` of class `Transition` requires synthetic accessor"
-        errorLine1="            return mCurrentTransition.mTouchResponse.getMoveWhenScrollAtTop();"
-        errorLine2="                                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                int count = mMotionLayout.getChildCount();"
-        errorLine2="                                            ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                    View view = mMotionLayout.getChildAt(i);"
-        errorLine2="                                                ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                        int currentId = mMotionLayout.getCurrentState();"
-        errorLine2="                                                        ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                                mMotionLayout.getConstraintSet(currentId);"
-        errorLine2="                                                ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                                ViewTransitionController.this, mMotionLayout,"
-        errorLine2="                                                                               ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                int count = mMotionLayout.getChildCount();"
-        errorLine2="                                            ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                    View view = mMotionLayout.getChildAt(i);"
-        errorLine2="                                                ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                        int currentId = mMotionLayout.getCurrentState();"
-        errorLine2="                                                        ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                                mMotionLayout.getConstraintSet(currentId);"
-        errorLine2="                                                ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mMotionLayout` of class `ViewTransitionController` requires synthetic accessor"
-        errorLine1="                                                ViewTransitionController.this, mMotionLayout,"
-        errorLine2="                                                                               ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/constraintlayout/motion/widget/ViewTransitionController.java"/>
-    </issue>
-
-    <issue
         id="KotlinPropertyAccess"
         message="The getter return type (`String[]`) and setter parameter type (`String`) getter and setter methods for property `stateLabels` should have exactly the same type to allow be accessed as a property from Kotlin; see https://android.github.io/kotlin-guides/interop.html#property-prefixes"
         errorLine1="    public String[] getStateLabels() {"
diff --git a/core/core-performance/src/main/java/androidx/core/performance/DefaultDevicePerformance.kt b/core/core-performance/src/main/java/androidx/core/performance/DefaultDevicePerformance.kt
new file mode 100644
index 0000000..386cf33
--- /dev/null
+++ b/core/core-performance/src/main/java/androidx/core/performance/DefaultDevicePerformance.kt
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:Suppress("DEPRECATION")
+
+package androidx.core.performance
+
+import android.os.Build
+
+/**
+ * Reports the media performance class of the device. Contains statically specified values
+ * and can be used as a fallback alternative to suppliers with dynamic values.
+ */
+class DefaultDevicePerformance() : DevicePerformance {
+    private val PERFCLASS_11: Int = Build.VERSION_CODES.R
+    private val PERFCLASS_12: Int = Build.VERSION_CODES.S
+    private val PERFCLASS_13: Int = Build.VERSION_CODES.TIRAMISU
+    private val PERFCLASS_NONE: Int = 0
+
+    private val fingerprints: HashMap<String, Int> = hashMapOf(
+        // for unit testing, no actual products with these
+        "robolectric-BrandX/ProductX/Device30:11" to PERFCLASS_11,
+        "robolectric-BrandX/ProductX/Device31:12" to PERFCLASS_12,
+
+        // actual devices in the field
+        "OPPO/CPH2025EEA/OP4BA2L1:12" to PERFCLASS_11,
+        "OPPO/CPH2207EEA/OP4F0BL1:12" to PERFCLASS_11,
+        "OPPO/PENM00/OP4EC1:11" to PERFCLASS_11,
+        "OnePlus/OnePlus7TTMO/OnePlus7TTMO:11" to PERFCLASS_11,
+        "OnePlus/OnePlus8_BETA/OnePlus8:11" to PERFCLASS_11,
+        "Xiaomi/umi_global/umi:11" to PERFCLASS_11,
+        "realme/RMX2085/RMX2085L1:11" to PERFCLASS_11,
+        "samsung/c1qsqw/c1q:12" to PERFCLASS_11,
+        "samsung/o1quew/o1q:12" to PERFCLASS_11,
+        "samsung/r0quew/r0q:12" to PERFCLASS_11,
+        "samsung/r0sxxx/r0s:12" to PERFCLASS_11,
+    )
+
+    override val mediaPerformanceClass = getCalculatedMediaPerformanceClass()
+
+    private fun getMediaPerformanceClassFromFingerprint(): Int {
+
+        val brand = Build.BRAND
+        val product = Build.PRODUCT
+        val device = Build.DEVICE
+        val release = Build.VERSION.RELEASE
+
+        val synthesized = "$brand/$product/$device:$release"
+        var pc = fingerprints[synthesized]
+
+        if (pc == null) {
+            pc = PERFCLASS_NONE
+        }
+        return pc
+    }
+
+    private fun getMediaPerformanceClassFromProperty(): Int {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+            return Build.VERSION.MEDIA_PERFORMANCE_CLASS
+        }
+
+        return PERFCLASS_NONE
+    }
+
+    private fun isPerformanceClassValid(pc: Int): Boolean = pc >= PERFCLASS_11
+
+    private fun getCalculatedMediaPerformanceClass(): Int {
+
+        // device's declared property takes precedence over our in-library table.
+        val mpcViaProperty: Int =
+            getMediaPerformanceClassFromProperty()
+
+        if (isPerformanceClassValid(mpcViaProperty)) {
+            return mpcViaProperty
+        }
+
+        val mpcViaFingerprint: Int =
+            getMediaPerformanceClassFromFingerprint()
+
+        if (isPerformanceClassValid(mpcViaFingerprint)) {
+            return mpcViaFingerprint
+        }
+
+        return PERFCLASS_NONE
+    }
+}
diff --git a/core/core-performance/src/main/java/androidx/core/performance/DevicePerformance.kt b/core/core-performance/src/main/java/androidx/core/performance/DevicePerformance.kt
index 264ba89..98e947c 100644
--- a/core/core-performance/src/main/java/androidx/core/performance/DevicePerformance.kt
+++ b/core/core-performance/src/main/java/androidx/core/performance/DevicePerformance.kt
@@ -77,13 +77,6 @@
 }
 
 /**
- * Default DevicePerformance implementation that always provides 0.
- */
-class DefaultDevicePerformance() : DevicePerformance {
-    override val mediaPerformanceClass = 0
-}
-
-/**
  * Supplies a flow of mediaPerformanceClass
  */
 @Deprecated(
diff --git a/core/core-performance/src/test/java/androidx/core/performance/DefaultDevicePerformanceTest.kt b/core/core-performance/src/test/java/androidx/core/performance/DefaultDevicePerformanceTest.kt
index 33eafcf..5a5b514 100644
--- a/core/core-performance/src/test/java/androidx/core/performance/DefaultDevicePerformanceTest.kt
+++ b/core/core-performance/src/test/java/androidx/core/performance/DefaultDevicePerformanceTest.kt
@@ -16,15 +16,61 @@
 
 package androidx.core.performance
 
+import android.os.Build.VERSION_CODES.R
+import android.os.Build.VERSION_CODES.S
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runTest
 import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
+import org.robolectric.shadows.ShadowBuild
+import org.robolectric.shadows.ShadowSystemProperties
 
 /** Unit tests for [DefaultDevicePerformance]. */
+@RunWith(RobolectricTestRunner::class)
 class DefaultDevicePerformanceTest {
 
     @Test
-    fun mediaPerformanceClass() {
+    @Config(maxSdk = R, minSdk = R)
+    fun mediaPerformanceClass_SdkR_DeclaredMpc() = runTest {
+        ShadowSystemProperties.override("ro.odm.build.media_performance_class", "30")
+        ShadowBuild.reset()
         val mpc = DefaultDevicePerformance().mediaPerformanceClass
         assertThat(mpc).isEqualTo(0)
     }
+
+    @Test
+    @Config(minSdk = S)
+    fun mediaPerformanceClass_SdkS_DeclaredMpc() = runTest {
+        ShadowSystemProperties.override("ro.odm.build.media_performance_class", "30")
+        ShadowBuild.reset()
+        val mpc = DefaultDevicePerformance().mediaPerformanceClass
+        assertThat(mpc).isEqualTo(30)
+    }
+
+    @Test
+    @Config(minSdk = S)
+    fun mediaPerformanceClass_SdkS_BuildFingerprintMatch() = runTest {
+        ShadowBuild.reset()
+        ShadowBuild.setBrand("robolectric-BrandX")
+        ShadowBuild.setProduct("ProductX")
+        ShadowBuild.setDevice("Device31")
+        ShadowBuild.setVersionRelease("12")
+        val mpc = DefaultDevicePerformance().mediaPerformanceClass
+        assertThat(mpc).isEqualTo(31)
+    }
+
+    @Test
+    @Config(minSdk = S)
+    fun mediaPerformanceClass_SdkS_DeclaredMpc_BuildFingerprintMatch() = runTest {
+        ShadowSystemProperties.override("ro.odm.build.media_performance_class", "30")
+        ShadowBuild.reset()
+        ShadowBuild.setBrand("robolectric-BrandX")
+        ShadowBuild.setProduct("ProductX")
+        ShadowBuild.setDevice("Device31")
+        ShadowBuild.setVersionRelease("12")
+        val mpc = DefaultDevicePerformance().mediaPerformanceClass
+        assertThat(mpc).isEqualTo(30)
+    }
 }
diff --git a/credentials/credentials-play-services-auth/api/1.2.0-beta02.txt b/credentials/credentials-play-services-auth/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/credentials/credentials-play-services-auth/api/1.2.0-beta02.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/credentials/credentials-play-services-auth/api/res-1.2.0-beta02.txt b/credentials/credentials-play-services-auth/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/credentials/credentials-play-services-auth/api/res-1.2.0-beta02.txt
diff --git a/credentials/credentials-play-services-auth/api/restricted_1.2.0-beta02.txt b/credentials/credentials-play-services-auth/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..e6f50d0
--- /dev/null
+++ b/credentials/credentials-play-services-auth/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1 @@
+// Signature format: 4.0
diff --git a/credentials/credentials/api/1.2.0-beta02.txt b/credentials/credentials/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..8c9cf86
--- /dev/null
+++ b/credentials/credentials/api/1.2.0-beta02.txt
@@ -0,0 +1,902 @@
+// Signature format: 4.0
+package androidx.credentials {
+
+  public final class ClearCredentialStateRequest {
+    ctor public ClearCredentialStateRequest();
+  }
+
+  public abstract class CreateCredentialRequest {
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final android.os.Bundle getCredentialData();
+    method public final androidx.credentials.CreateCredentialRequest.DisplayInfo getDisplayInfo();
+    method public final String? getOrigin();
+    method public final boolean getPreferImmediatelyAvailableCredentials();
+    method public final String getType();
+    method public final boolean isAutoSelectAllowed();
+    method public final boolean isSystemProviderRequired();
+    property public final android.os.Bundle candidateQueryData;
+    property public final android.os.Bundle credentialData;
+    property public final androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo;
+    property public final boolean isAutoSelectAllowed;
+    property public final boolean isSystemProviderRequired;
+    property public final String? origin;
+    property public final boolean preferImmediatelyAvailableCredentials;
+    property public final String type;
+  }
+
+  public static final class CreateCredentialRequest.DisplayInfo {
+    ctor public CreateCredentialRequest.DisplayInfo(CharSequence userId);
+    ctor public CreateCredentialRequest.DisplayInfo(CharSequence userId, optional CharSequence? userDisplayName);
+    ctor public CreateCredentialRequest.DisplayInfo(CharSequence userId, CharSequence? userDisplayName, String? preferDefaultProvider);
+    method public CharSequence? getUserDisplayName();
+    method public CharSequence getUserId();
+    property public final CharSequence? userDisplayName;
+    property public final CharSequence userId;
+  }
+
+  public abstract class CreateCredentialResponse {
+    method public final android.os.Bundle getData();
+    method public final String getType();
+    property public final android.os.Bundle data;
+    property public final String type;
+  }
+
+  public class CreateCustomCredentialRequest extends androidx.credentials.CreateCredentialRequest {
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo);
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo, optional boolean isAutoSelectAllowed);
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo, optional boolean isAutoSelectAllowed, optional String? origin);
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo, optional boolean isAutoSelectAllowed, optional String? origin, optional boolean preferImmediatelyAvailableCredentials);
+  }
+
+  public class CreateCustomCredentialResponse extends androidx.credentials.CreateCredentialResponse {
+    ctor public CreateCustomCredentialResponse(String type, android.os.Bundle data);
+  }
+
+  public final class CreatePasswordRequest extends androidx.credentials.CreateCredentialRequest {
+    ctor public CreatePasswordRequest(String id, String password);
+    ctor public CreatePasswordRequest(String id, String password, optional String? origin);
+    ctor public CreatePasswordRequest(String id, String password, optional String? origin, optional boolean preferImmediatelyAvailableCredentials);
+    ctor public CreatePasswordRequest(String id, String password, optional String? origin, optional boolean preferImmediatelyAvailableCredentials, optional boolean isAutoSelectAllowed);
+    ctor public CreatePasswordRequest(String id, String password, String? origin, String? preferDefaultProvider, boolean preferImmediatelyAvailableCredentials, boolean isAutoSelectAllowed);
+    method public String getId();
+    method public String getPassword();
+    property public final String id;
+    property public final String password;
+  }
+
+  public final class CreatePasswordResponse extends androidx.credentials.CreateCredentialResponse {
+    ctor public CreatePasswordResponse();
+  }
+
+  public final class CreatePublicKeyCredentialRequest extends androidx.credentials.CreateCredentialRequest {
+    ctor public CreatePublicKeyCredentialRequest(String requestJson);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash, optional boolean preferImmediatelyAvailableCredentials);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash, optional boolean preferImmediatelyAvailableCredentials, optional String? origin);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash, optional boolean preferImmediatelyAvailableCredentials, optional String? origin, optional boolean isAutoSelectAllowed);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, byte[]? clientDataHash, boolean preferImmediatelyAvailableCredentials, String? origin, String? preferDefaultProvider, boolean isAutoSelectAllowed);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public final class CreatePublicKeyCredentialResponse extends androidx.credentials.CreateCredentialResponse {
+    ctor public CreatePublicKeyCredentialResponse(String registrationResponseJson);
+    method public String getRegistrationResponseJson();
+    property public final String registrationResponseJson;
+  }
+
+  public abstract class Credential {
+    method public final android.os.Bundle getData();
+    method public final String getType();
+    property public final android.os.Bundle data;
+    property public final String type;
+  }
+
+  @RequiresApi(16) public interface CredentialManager {
+    method public default suspend Object? clearCredentialState(androidx.credentials.ClearCredentialStateRequest request, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public void clearCredentialStateAsync(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public static androidx.credentials.CredentialManager create(android.content.Context context);
+    method public default suspend Object? createCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.CreateCredentialResponse>);
+    method public void createCredentialAsync(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
+    method @RequiresApi(34) public android.app.PendingIntent createSettingsPendingIntent();
+    method public default suspend Object? getCredential(android.content.Context context, androidx.credentials.GetCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.GetCredentialResponse>);
+    method @RequiresApi(34) public default suspend Object? getCredential(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, kotlin.coroutines.Continuation<? super androidx.credentials.GetCredentialResponse>);
+    method public void getCredentialAsync(android.content.Context context, androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public void getCredentialAsync(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public default suspend Object? prepareGetCredential(androidx.credentials.GetCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.PrepareGetCredentialResponse>);
+    method @RequiresApi(34) public void prepareGetCredentialAsync(androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.PrepareGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    field public static final androidx.credentials.CredentialManager.Companion Companion;
+  }
+
+  public static final class CredentialManager.Companion {
+    method public androidx.credentials.CredentialManager create(android.content.Context context);
+  }
+
+  public interface CredentialManagerCallback<R, E> {
+    method public void onError(E e);
+    method public void onResult(R result);
+  }
+
+  public abstract class CredentialOption {
+    method public final java.util.Set<android.content.ComponentName> getAllowedProviders();
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final android.os.Bundle getRequestData();
+    method public final String getType();
+    method public final boolean isAutoSelectAllowed();
+    method public final boolean isSystemProviderRequired();
+    property public final java.util.Set<android.content.ComponentName> allowedProviders;
+    property public final android.os.Bundle candidateQueryData;
+    property public final boolean isAutoSelectAllowed;
+    property public final boolean isSystemProviderRequired;
+    property public final android.os.Bundle requestData;
+    property public final String type;
+  }
+
+  public interface CredentialProvider {
+    method public boolean isAvailableOnDevice();
+    method public void onClearCredential(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public void onCreateCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
+    method public void onGetCredential(android.content.Context context, androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public default void onGetCredential(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public default void onPrepareCredential(androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.PrepareGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+  }
+
+  public class CustomCredential extends androidx.credentials.Credential {
+    ctor public CustomCredential(String type, android.os.Bundle data);
+  }
+
+  public final class GetCredentialRequest {
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin, optional boolean preferIdentityDocUi);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin, optional boolean preferIdentityDocUi, optional android.content.ComponentName? preferUiBrandingComponentName);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin, optional boolean preferIdentityDocUi, optional android.content.ComponentName? preferUiBrandingComponentName, optional boolean preferImmediatelyAvailableCredentials);
+    method public java.util.List<androidx.credentials.CredentialOption> getCredentialOptions();
+    method public String? getOrigin();
+    method public boolean getPreferIdentityDocUi();
+    method public boolean getPreferImmediatelyAvailableCredentials();
+    method public android.content.ComponentName? getPreferUiBrandingComponentName();
+    property public final java.util.List<androidx.credentials.CredentialOption> credentialOptions;
+    property public final String? origin;
+    property public final boolean preferIdentityDocUi;
+    property public final boolean preferImmediatelyAvailableCredentials;
+    property public final android.content.ComponentName? preferUiBrandingComponentName;
+  }
+
+  public static final class GetCredentialRequest.Builder {
+    ctor public GetCredentialRequest.Builder();
+    method public androidx.credentials.GetCredentialRequest.Builder addCredentialOption(androidx.credentials.CredentialOption credentialOption);
+    method public androidx.credentials.GetCredentialRequest build();
+    method public androidx.credentials.GetCredentialRequest.Builder setCredentialOptions(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions);
+    method public androidx.credentials.GetCredentialRequest.Builder setOrigin(String origin);
+    method public androidx.credentials.GetCredentialRequest.Builder setPreferIdentityDocUi(boolean preferIdentityDocUi);
+    method public androidx.credentials.GetCredentialRequest.Builder setPreferImmediatelyAvailableCredentials(boolean preferImmediatelyAvailableCredentials);
+    method public androidx.credentials.GetCredentialRequest.Builder setPreferUiBrandingComponentName(android.content.ComponentName? component);
+  }
+
+  public final class GetCredentialResponse {
+    ctor public GetCredentialResponse(androidx.credentials.Credential credential);
+    method public androidx.credentials.Credential getCredential();
+    property public final androidx.credentials.Credential credential;
+  }
+
+  public class GetCustomCredentialOption extends androidx.credentials.CredentialOption {
+    ctor public GetCustomCredentialOption(String type, android.os.Bundle requestData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired);
+    ctor public GetCustomCredentialOption(String type, android.os.Bundle requestData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, optional boolean isAutoSelectAllowed);
+    ctor public GetCustomCredentialOption(String type, android.os.Bundle requestData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, optional boolean isAutoSelectAllowed, optional java.util.Set<android.content.ComponentName> allowedProviders);
+  }
+
+  public final class GetPasswordOption extends androidx.credentials.CredentialOption {
+    ctor public GetPasswordOption();
+    ctor public GetPasswordOption(optional java.util.Set<java.lang.String> allowedUserIds);
+    ctor public GetPasswordOption(optional java.util.Set<java.lang.String> allowedUserIds, optional boolean isAutoSelectAllowed);
+    ctor public GetPasswordOption(optional java.util.Set<java.lang.String> allowedUserIds, optional boolean isAutoSelectAllowed, optional java.util.Set<android.content.ComponentName> allowedProviders);
+    method public java.util.Set<java.lang.String> getAllowedUserIds();
+    property public final java.util.Set<java.lang.String> allowedUserIds;
+  }
+
+  public final class GetPublicKeyCredentialOption extends androidx.credentials.CredentialOption {
+    ctor public GetPublicKeyCredentialOption(String requestJson);
+    ctor public GetPublicKeyCredentialOption(String requestJson, optional byte[]? clientDataHash);
+    ctor public GetPublicKeyCredentialOption(String requestJson, optional byte[]? clientDataHash, optional java.util.Set<android.content.ComponentName> allowedProviders);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public final class PasswordCredential extends androidx.credentials.Credential {
+    ctor public PasswordCredential(String id, String password);
+    method public String getId();
+    method public String getPassword();
+    property public final String id;
+    property public final String password;
+    field public static final androidx.credentials.PasswordCredential.Companion Companion;
+    field public static final String TYPE_PASSWORD_CREDENTIAL = "android.credentials.TYPE_PASSWORD_CREDENTIAL";
+  }
+
+  public static final class PasswordCredential.Companion {
+  }
+
+  @RequiresApi(34) public final class PrepareGetCredentialResponse {
+    method public kotlin.jvm.functions.Function1<java.lang.String,java.lang.Boolean>? getCredentialTypeDelegate();
+    method public kotlin.jvm.functions.Function0<java.lang.Boolean>? getHasAuthResultsDelegate();
+    method public kotlin.jvm.functions.Function0<java.lang.Boolean>? getHasRemoteResultsDelegate();
+    method public androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle? getPendingGetCredentialHandle();
+    method @RequiresPermission(android.Manifest.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS) public boolean hasAuthenticationResults();
+    method @RequiresPermission(android.Manifest.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS) public boolean hasCredentialResults(String credentialType);
+    method @RequiresPermission(android.Manifest.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS) public boolean hasRemoteResults();
+    method public boolean isNullHandlesForTest();
+    property public final kotlin.jvm.functions.Function1<java.lang.String,java.lang.Boolean>? credentialTypeDelegate;
+    property public final kotlin.jvm.functions.Function0<java.lang.Boolean>? hasAuthResultsDelegate;
+    property public final kotlin.jvm.functions.Function0<java.lang.Boolean>? hasRemoteResultsDelegate;
+    property public final boolean isNullHandlesForTest;
+    property public final androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle? pendingGetCredentialHandle;
+  }
+
+  @RequiresApi(34) public static final class PrepareGetCredentialResponse.PendingGetCredentialHandle {
+    ctor public PrepareGetCredentialResponse.PendingGetCredentialHandle(android.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle? frameworkHandle);
+  }
+
+  @VisibleForTesting public static final class PrepareGetCredentialResponse.TestBuilder {
+    ctor public PrepareGetCredentialResponse.TestBuilder();
+    method public androidx.credentials.PrepareGetCredentialResponse build();
+    method @VisibleForTesting public androidx.credentials.PrepareGetCredentialResponse.TestBuilder setCredentialTypeDelegate(kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean> handler);
+    method @VisibleForTesting public androidx.credentials.PrepareGetCredentialResponse.TestBuilder setHasAuthResultsDelegate(kotlin.jvm.functions.Function0<java.lang.Boolean> handler);
+    method @VisibleForTesting public androidx.credentials.PrepareGetCredentialResponse.TestBuilder setHasRemoteResultsDelegate(kotlin.jvm.functions.Function0<java.lang.Boolean> handler);
+  }
+
+  public final class PublicKeyCredential extends androidx.credentials.Credential {
+    ctor public PublicKeyCredential(String authenticationResponseJson);
+    method public String getAuthenticationResponseJson();
+    property public final String authenticationResponseJson;
+    field public static final androidx.credentials.PublicKeyCredential.Companion Companion;
+    field public static final String TYPE_PUBLIC_KEY_CREDENTIAL = "androidx.credentials.TYPE_PUBLIC_KEY_CREDENTIAL";
+  }
+
+  public static final class PublicKeyCredential.Companion {
+  }
+
+}
+
+package androidx.credentials.exceptions {
+
+  public final class ClearCredentialCustomException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialCustomException(String type);
+    ctor public ClearCredentialCustomException(String type, optional CharSequence? errorMessage);
+    method public String getType();
+    property public String type;
+  }
+
+  public abstract class ClearCredentialException extends java.lang.Exception {
+  }
+
+  public final class ClearCredentialInterruptedException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialInterruptedException();
+    ctor public ClearCredentialInterruptedException(optional CharSequence? errorMessage);
+  }
+
+  public final class ClearCredentialProviderConfigurationException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialProviderConfigurationException();
+    ctor public ClearCredentialProviderConfigurationException(optional CharSequence? errorMessage);
+  }
+
+  public final class ClearCredentialUnknownException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialUnknownException();
+    ctor public ClearCredentialUnknownException(optional CharSequence? errorMessage);
+  }
+
+  public final class ClearCredentialUnsupportedException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialUnsupportedException();
+    ctor public ClearCredentialUnsupportedException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialCancellationException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialCancellationException();
+    ctor public CreateCredentialCancellationException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialCustomException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialCustomException(String type);
+    ctor public CreateCredentialCustomException(String type, optional CharSequence? errorMessage);
+    method public String getType();
+    property public String type;
+  }
+
+  public abstract class CreateCredentialException extends java.lang.Exception {
+  }
+
+  public final class CreateCredentialInterruptedException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialInterruptedException();
+    ctor public CreateCredentialInterruptedException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialNoCreateOptionException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialNoCreateOptionException();
+    ctor public CreateCredentialNoCreateOptionException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialProviderConfigurationException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialProviderConfigurationException();
+    ctor public CreateCredentialProviderConfigurationException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialUnknownException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialUnknownException();
+    ctor public CreateCredentialUnknownException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialUnsupportedException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialUnsupportedException();
+    ctor public CreateCredentialUnsupportedException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialCancellationException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialCancellationException();
+    ctor public GetCredentialCancellationException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialCustomException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialCustomException(String type);
+    ctor public GetCredentialCustomException(String type, optional CharSequence? errorMessage);
+    method public String getType();
+    property public String type;
+  }
+
+  public abstract class GetCredentialException extends java.lang.Exception {
+  }
+
+  public final class GetCredentialInterruptedException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialInterruptedException();
+    ctor public GetCredentialInterruptedException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialProviderConfigurationException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialProviderConfigurationException();
+    ctor public GetCredentialProviderConfigurationException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialUnknownException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialUnknownException();
+    ctor public GetCredentialUnknownException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialUnsupportedException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialUnsupportedException();
+    ctor public GetCredentialUnsupportedException(optional CharSequence? errorMessage);
+  }
+
+  public final class NoCredentialException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public NoCredentialException();
+    ctor public NoCredentialException(optional CharSequence? errorMessage);
+  }
+
+}
+
+package androidx.credentials.exceptions.domerrors {
+
+  public final class AbortError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public AbortError();
+  }
+
+  public final class ConstraintError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public ConstraintError();
+  }
+
+  public final class DataCloneError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public DataCloneError();
+  }
+
+  public final class DataError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public DataError();
+  }
+
+  public abstract class DomError {
+    ctor public DomError(String type);
+  }
+
+  public final class EncodingError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public EncodingError();
+  }
+
+  public final class HierarchyRequestError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public HierarchyRequestError();
+  }
+
+  public final class InUseAttributeError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InUseAttributeError();
+  }
+
+  public final class InvalidCharacterError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidCharacterError();
+  }
+
+  public final class InvalidModificationError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidModificationError();
+  }
+
+  public final class InvalidNodeTypeError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidNodeTypeError();
+  }
+
+  public final class InvalidStateError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidStateError();
+  }
+
+  public final class NamespaceError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NamespaceError();
+  }
+
+  public final class NetworkError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NetworkError();
+  }
+
+  public final class NoModificationAllowedError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NoModificationAllowedError();
+  }
+
+  public final class NotAllowedError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotAllowedError();
+  }
+
+  public final class NotFoundError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotFoundError();
+  }
+
+  public final class NotReadableError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotReadableError();
+  }
+
+  public final class NotSupportedError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotSupportedError();
+  }
+
+  public final class OperationError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public OperationError();
+  }
+
+  public final class OptOutError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public OptOutError();
+  }
+
+  public final class QuotaExceededError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public QuotaExceededError();
+  }
+
+  public final class ReadOnlyError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public ReadOnlyError();
+  }
+
+  public final class SecurityError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public SecurityError();
+  }
+
+  public final class SyntaxError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public SyntaxError();
+  }
+
+  public final class TimeoutError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public TimeoutError();
+  }
+
+  public final class TransactionInactiveError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public TransactionInactiveError();
+  }
+
+  public final class UnknownError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public UnknownError();
+  }
+
+  public final class VersionError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public VersionError();
+  }
+
+  public final class WrongDocumentError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public WrongDocumentError();
+  }
+
+}
+
+package androidx.credentials.exceptions.publickeycredential {
+
+  public final class CreatePublicKeyCredentialDomException extends androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialException {
+    ctor public CreatePublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError);
+    ctor public CreatePublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError, optional CharSequence? errorMessage);
+    method public androidx.credentials.exceptions.domerrors.DomError getDomError();
+    property public final androidx.credentials.exceptions.domerrors.DomError domError;
+  }
+
+  public class CreatePublicKeyCredentialException extends androidx.credentials.exceptions.CreateCredentialException {
+  }
+
+  public final class GetPublicKeyCredentialDomException extends androidx.credentials.exceptions.publickeycredential.GetPublicKeyCredentialException {
+    ctor public GetPublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError);
+    ctor public GetPublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError, optional CharSequence? errorMessage);
+    method public androidx.credentials.exceptions.domerrors.DomError getDomError();
+    property public final androidx.credentials.exceptions.domerrors.DomError domError;
+  }
+
+  public class GetPublicKeyCredentialException extends androidx.credentials.exceptions.GetCredentialException {
+  }
+
+}
+
+package androidx.credentials.provider {
+
+  public final class Action {
+    ctor public Action(CharSequence title, android.app.PendingIntent pendingIntent, optional CharSequence? subtitle);
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence? getSubtitle();
+    method public CharSequence getTitle();
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence? subtitle;
+    property public final CharSequence title;
+  }
+
+  public static final class Action.Builder {
+    ctor public Action.Builder(CharSequence title, android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.Action build();
+    method public androidx.credentials.provider.Action.Builder setSubtitle(CharSequence? subtitle);
+  }
+
+  public final class AuthenticationAction {
+    ctor public AuthenticationAction(CharSequence title, android.app.PendingIntent pendingIntent);
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence getTitle();
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence title;
+  }
+
+  public static final class AuthenticationAction.Builder {
+    ctor public AuthenticationAction.Builder(CharSequence title, android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.AuthenticationAction build();
+  }
+
+  public abstract class BeginCreateCredentialRequest {
+    ctor public BeginCreateCredentialRequest(String type, android.os.Bundle candidateQueryData, androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+    method public static final android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialRequest request);
+    method public static final androidx.credentials.provider.BeginCreateCredentialRequest? fromBundle(android.os.Bundle bundle);
+    method public final androidx.credentials.provider.CallingAppInfo? getCallingAppInfo();
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final String getType();
+    property public final androidx.credentials.provider.CallingAppInfo? callingAppInfo;
+    property public final android.os.Bundle candidateQueryData;
+    property public final String type;
+    field public static final androidx.credentials.provider.BeginCreateCredentialRequest.Companion Companion;
+  }
+
+  public static final class BeginCreateCredentialRequest.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialRequest request);
+    method public androidx.credentials.provider.BeginCreateCredentialRequest? fromBundle(android.os.Bundle bundle);
+  }
+
+  public final class BeginCreateCredentialResponse {
+    ctor public BeginCreateCredentialResponse(optional java.util.List<androidx.credentials.provider.CreateEntry> createEntries, optional androidx.credentials.provider.RemoteEntry? remoteEntry);
+    method public static android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialResponse response);
+    method public static androidx.credentials.provider.BeginCreateCredentialResponse? fromBundle(android.os.Bundle bundle);
+    method public java.util.List<androidx.credentials.provider.CreateEntry> getCreateEntries();
+    method public androidx.credentials.provider.RemoteEntry? getRemoteEntry();
+    property public final java.util.List<androidx.credentials.provider.CreateEntry> createEntries;
+    property public final androidx.credentials.provider.RemoteEntry? remoteEntry;
+    field public static final androidx.credentials.provider.BeginCreateCredentialResponse.Companion Companion;
+  }
+
+  public static final class BeginCreateCredentialResponse.Builder {
+    ctor public BeginCreateCredentialResponse.Builder();
+    method public androidx.credentials.provider.BeginCreateCredentialResponse.Builder addCreateEntry(androidx.credentials.provider.CreateEntry createEntry);
+    method public androidx.credentials.provider.BeginCreateCredentialResponse build();
+    method public androidx.credentials.provider.BeginCreateCredentialResponse.Builder setCreateEntries(java.util.List<androidx.credentials.provider.CreateEntry> createEntries);
+    method public androidx.credentials.provider.BeginCreateCredentialResponse.Builder setRemoteEntry(androidx.credentials.provider.RemoteEntry? remoteEntry);
+  }
+
+  public static final class BeginCreateCredentialResponse.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialResponse response);
+    method public androidx.credentials.provider.BeginCreateCredentialResponse? fromBundle(android.os.Bundle bundle);
+  }
+
+  public class BeginCreateCustomCredentialRequest extends androidx.credentials.provider.BeginCreateCredentialRequest {
+    ctor public BeginCreateCustomCredentialRequest(String type, android.os.Bundle candidateQueryData, androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+  }
+
+  public final class BeginCreatePasswordCredentialRequest extends androidx.credentials.provider.BeginCreateCredentialRequest {
+    ctor public BeginCreatePasswordCredentialRequest(androidx.credentials.provider.CallingAppInfo? callingAppInfo, android.os.Bundle candidateQueryData);
+  }
+
+  public final class BeginCreatePublicKeyCredentialRequest extends androidx.credentials.provider.BeginCreateCredentialRequest {
+    ctor public BeginCreatePublicKeyCredentialRequest(String requestJson, androidx.credentials.provider.CallingAppInfo? callingAppInfo, android.os.Bundle candidateQueryData);
+    ctor public BeginCreatePublicKeyCredentialRequest(String requestJson, androidx.credentials.provider.CallingAppInfo? callingAppInfo, android.os.Bundle candidateQueryData, optional byte[]? clientDataHash);
+    method @VisibleForTesting public static androidx.credentials.provider.BeginCreatePublicKeyCredentialRequest createForTest(android.os.Bundle data, androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public abstract class BeginGetCredentialOption {
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final String getId();
+    method public final String getType();
+    property public final android.os.Bundle candidateQueryData;
+    property public final String id;
+    property public final String type;
+  }
+
+  public final class BeginGetCredentialRequest {
+    ctor public BeginGetCredentialRequest(java.util.List<? extends androidx.credentials.provider.BeginGetCredentialOption> beginGetCredentialOptions);
+    ctor public BeginGetCredentialRequest(java.util.List<? extends androidx.credentials.provider.BeginGetCredentialOption> beginGetCredentialOptions, optional androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+    method public static android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialRequest request);
+    method public static androidx.credentials.provider.BeginGetCredentialRequest? fromBundle(android.os.Bundle bundle);
+    method public java.util.List<androidx.credentials.provider.BeginGetCredentialOption> getBeginGetCredentialOptions();
+    method public androidx.credentials.provider.CallingAppInfo? getCallingAppInfo();
+    property public final java.util.List<androidx.credentials.provider.BeginGetCredentialOption> beginGetCredentialOptions;
+    property public final androidx.credentials.provider.CallingAppInfo? callingAppInfo;
+    field public static final androidx.credentials.provider.BeginGetCredentialRequest.Companion Companion;
+  }
+
+  public static final class BeginGetCredentialRequest.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialRequest request);
+    method public androidx.credentials.provider.BeginGetCredentialRequest? fromBundle(android.os.Bundle bundle);
+  }
+
+  public final class BeginGetCredentialResponse {
+    ctor public BeginGetCredentialResponse(optional java.util.List<? extends androidx.credentials.provider.CredentialEntry> credentialEntries, optional java.util.List<androidx.credentials.provider.Action> actions, optional java.util.List<androidx.credentials.provider.AuthenticationAction> authenticationActions, optional androidx.credentials.provider.RemoteEntry? remoteEntry);
+    method public static android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public static androidx.credentials.provider.BeginGetCredentialResponse? fromBundle(android.os.Bundle bundle);
+    method public java.util.List<androidx.credentials.provider.Action> getActions();
+    method public java.util.List<androidx.credentials.provider.AuthenticationAction> getAuthenticationActions();
+    method public java.util.List<androidx.credentials.provider.CredentialEntry> getCredentialEntries();
+    method public androidx.credentials.provider.RemoteEntry? getRemoteEntry();
+    property public final java.util.List<androidx.credentials.provider.Action> actions;
+    property public final java.util.List<androidx.credentials.provider.AuthenticationAction> authenticationActions;
+    property public final java.util.List<androidx.credentials.provider.CredentialEntry> credentialEntries;
+    property public final androidx.credentials.provider.RemoteEntry? remoteEntry;
+    field public static final androidx.credentials.provider.BeginGetCredentialResponse.Companion Companion;
+  }
+
+  public static final class BeginGetCredentialResponse.Builder {
+    ctor public BeginGetCredentialResponse.Builder();
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder addAction(androidx.credentials.provider.Action action);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder addAuthenticationAction(androidx.credentials.provider.AuthenticationAction authenticationAction);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder addCredentialEntry(androidx.credentials.provider.CredentialEntry entry);
+    method public androidx.credentials.provider.BeginGetCredentialResponse build();
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setActions(java.util.List<androidx.credentials.provider.Action> actions);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setAuthenticationActions(java.util.List<androidx.credentials.provider.AuthenticationAction> authenticationEntries);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setCredentialEntries(java.util.List<? extends androidx.credentials.provider.CredentialEntry> entries);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setRemoteEntry(androidx.credentials.provider.RemoteEntry? remoteEntry);
+  }
+
+  public static final class BeginGetCredentialResponse.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public androidx.credentials.provider.BeginGetCredentialResponse? fromBundle(android.os.Bundle bundle);
+  }
+
+  public class BeginGetCustomCredentialOption extends androidx.credentials.provider.BeginGetCredentialOption {
+    ctor public BeginGetCustomCredentialOption(String id, String type, android.os.Bundle candidateQueryData);
+  }
+
+  public final class BeginGetPasswordOption extends androidx.credentials.provider.BeginGetCredentialOption {
+    ctor public BeginGetPasswordOption(java.util.Set<java.lang.String> allowedUserIds, android.os.Bundle candidateQueryData, String id);
+    method @VisibleForTesting public static androidx.credentials.provider.BeginGetPasswordOption createForTest(android.os.Bundle data, String id);
+    method public java.util.Set<java.lang.String> getAllowedUserIds();
+    property public final java.util.Set<java.lang.String> allowedUserIds;
+  }
+
+  public final class BeginGetPublicKeyCredentialOption extends androidx.credentials.provider.BeginGetCredentialOption {
+    ctor public BeginGetPublicKeyCredentialOption(android.os.Bundle candidateQueryData, String id, String requestJson);
+    ctor public BeginGetPublicKeyCredentialOption(android.os.Bundle candidateQueryData, String id, String requestJson, optional byte[]? clientDataHash);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public final class CallingAppInfo {
+    ctor public CallingAppInfo(String packageName, android.content.pm.SigningInfo signingInfo);
+    ctor public CallingAppInfo(String packageName, android.content.pm.SigningInfo signingInfo, optional String? origin);
+    method public String? getOrigin(String privilegedAllowlist);
+    method public String getPackageName();
+    method public android.content.pm.SigningInfo getSigningInfo();
+    method public boolean isOriginPopulated();
+    property public final String packageName;
+    property public final android.content.pm.SigningInfo signingInfo;
+  }
+
+  @RequiresApi(26) public final class CreateEntry {
+    ctor public CreateEntry(CharSequence accountName, android.app.PendingIntent pendingIntent, optional CharSequence? description, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon? icon, optional Integer? passwordCredentialCount, optional Integer? publicKeyCredentialCount, optional Integer? totalCredentialCount, optional boolean isAutoSelectAllowed);
+    method public CharSequence getAccountName();
+    method public CharSequence? getDescription();
+    method public android.graphics.drawable.Icon? getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public Integer? getPasswordCredentialCount();
+    method public android.app.PendingIntent getPendingIntent();
+    method public Integer? getPublicKeyCredentialCount();
+    method public Integer? getTotalCredentialCount();
+    method public boolean isAutoSelectAllowed();
+    property public final CharSequence accountName;
+    property public final CharSequence? description;
+    property public final android.graphics.drawable.Icon? icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+  }
+
+  public static final class CreateEntry.Builder {
+    ctor public CreateEntry.Builder(CharSequence accountName, android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.CreateEntry build();
+    method public androidx.credentials.provider.CreateEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.CreateEntry.Builder setDescription(CharSequence? description);
+    method public androidx.credentials.provider.CreateEntry.Builder setIcon(android.graphics.drawable.Icon? icon);
+    method public androidx.credentials.provider.CreateEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+    method public androidx.credentials.provider.CreateEntry.Builder setPasswordCredentialCount(int count);
+    method public androidx.credentials.provider.CreateEntry.Builder setPublicKeyCredentialCount(int count);
+    method public androidx.credentials.provider.CreateEntry.Builder setTotalCredentialCount(int count);
+  }
+
+  public abstract class CredentialEntry {
+    method public final androidx.credentials.provider.BeginGetCredentialOption getBeginGetCredentialOption();
+    property public final androidx.credentials.provider.BeginGetCredentialOption beginGetCredentialOption;
+  }
+
+  @RequiresApi(34) public abstract class CredentialProviderService extends android.service.credentials.CredentialProviderService {
+    ctor public CredentialProviderService();
+    method public final void onBeginCreateCredential(android.service.credentials.BeginCreateCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<android.service.credentials.BeginCreateCredentialResponse,android.credentials.CreateCredentialException> callback);
+    method public abstract void onBeginCreateCredentialRequest(androidx.credentials.provider.BeginCreateCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<androidx.credentials.provider.BeginCreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
+    method public final void onBeginGetCredential(android.service.credentials.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<android.service.credentials.BeginGetCredentialResponse,android.credentials.GetCredentialException> callback);
+    method public abstract void onBeginGetCredentialRequest(androidx.credentials.provider.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<androidx.credentials.provider.BeginGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method public final void onClearCredentialState(android.service.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,android.credentials.ClearCredentialStateException> callback);
+    method public abstract void onClearCredentialStateRequest(androidx.credentials.provider.ProviderClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+  }
+
+  @RequiresApi(26) public final class CustomCredentialEntry extends androidx.credentials.provider.CredentialEntry {
+    ctor public CustomCredentialEntry(android.content.Context context, CharSequence title, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetCredentialOption beginGetCredentialOption, optional CharSequence? subtitle, optional CharSequence? typeDisplayName, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon icon, optional boolean isAutoSelectAllowed);
+    method public android.graphics.drawable.Icon getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence? getSubtitle();
+    method public CharSequence getTitle();
+    method public String getType();
+    method public CharSequence? getTypeDisplayName();
+    method public boolean isAutoSelectAllowed();
+    property public final android.graphics.drawable.Icon icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence? subtitle;
+    property public final CharSequence title;
+    property public String type;
+    property public final CharSequence? typeDisplayName;
+  }
+
+  public static final class CustomCredentialEntry.Builder {
+    ctor public CustomCredentialEntry.Builder(android.content.Context context, String type, CharSequence title, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetCredentialOption beginGetCredentialOption);
+    method public androidx.credentials.provider.CustomCredentialEntry build();
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setIcon(android.graphics.drawable.Icon icon);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setSubtitle(CharSequence? subtitle);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setTypeDisplayName(CharSequence? typeDisplayName);
+  }
+
+  public final class IntentHandlerConverters {
+    method @RequiresApi(34) public static androidx.credentials.provider.BeginGetCredentialResponse? getBeginGetResponse(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.CreateCredentialResponse? getCreateCredentialCredentialResponse(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.CreateCredentialException? getCreateCredentialException(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.GetCredentialException? getGetCredentialException(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.GetCredentialResponse? getGetCredentialResponse(android.content.Intent);
+  }
+
+  @RequiresApi(26) public final class PasswordCredentialEntry extends androidx.credentials.provider.CredentialEntry {
+    ctor public PasswordCredentialEntry(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPasswordOption beginGetPasswordOption, optional CharSequence? displayName, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon icon, optional boolean isAutoSelectAllowed);
+    method public CharSequence? getDisplayName();
+    method public android.graphics.drawable.Icon getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence getTypeDisplayName();
+    method public CharSequence getUsername();
+    method public boolean isAutoSelectAllowed();
+    property public final CharSequence? displayName;
+    property public final android.graphics.drawable.Icon icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence typeDisplayName;
+    property public final CharSequence username;
+  }
+
+  public static final class PasswordCredentialEntry.Builder {
+    ctor public PasswordCredentialEntry.Builder(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPasswordOption beginGetPasswordOption);
+    method public androidx.credentials.provider.PasswordCredentialEntry build();
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setDisplayName(CharSequence? displayName);
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setIcon(android.graphics.drawable.Icon icon);
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+  }
+
+  @RequiresApi(34) public final class PendingIntentHandler {
+    ctor public PendingIntentHandler();
+    method public static androidx.credentials.provider.BeginGetCredentialRequest? retrieveBeginGetCredentialRequest(android.content.Intent intent);
+    method public static androidx.credentials.provider.ProviderCreateCredentialRequest? retrieveProviderCreateCredentialRequest(android.content.Intent intent);
+    method public static androidx.credentials.provider.ProviderGetCredentialRequest? retrieveProviderGetCredentialRequest(android.content.Intent intent);
+    method public static void setBeginGetCredentialResponse(android.content.Intent intent, androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public static void setCreateCredentialException(android.content.Intent intent, androidx.credentials.exceptions.CreateCredentialException exception);
+    method public static void setCreateCredentialResponse(android.content.Intent intent, androidx.credentials.CreateCredentialResponse response);
+    method public static void setGetCredentialException(android.content.Intent intent, androidx.credentials.exceptions.GetCredentialException exception);
+    method public static void setGetCredentialResponse(android.content.Intent intent, androidx.credentials.GetCredentialResponse response);
+    field public static final androidx.credentials.provider.PendingIntentHandler.Companion Companion;
+  }
+
+  public static final class PendingIntentHandler.Companion {
+    method public androidx.credentials.provider.BeginGetCredentialRequest? retrieveBeginGetCredentialRequest(android.content.Intent intent);
+    method public androidx.credentials.provider.ProviderCreateCredentialRequest? retrieveProviderCreateCredentialRequest(android.content.Intent intent);
+    method public androidx.credentials.provider.ProviderGetCredentialRequest? retrieveProviderGetCredentialRequest(android.content.Intent intent);
+    method public void setBeginGetCredentialResponse(android.content.Intent intent, androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public void setCreateCredentialException(android.content.Intent intent, androidx.credentials.exceptions.CreateCredentialException exception);
+    method public void setCreateCredentialResponse(android.content.Intent intent, androidx.credentials.CreateCredentialResponse response);
+    method public void setGetCredentialException(android.content.Intent intent, androidx.credentials.exceptions.GetCredentialException exception);
+    method public void setGetCredentialResponse(android.content.Intent intent, androidx.credentials.GetCredentialResponse response);
+  }
+
+  public final class ProviderClearCredentialStateRequest {
+    ctor public ProviderClearCredentialStateRequest(androidx.credentials.provider.CallingAppInfo callingAppInfo);
+    method public androidx.credentials.provider.CallingAppInfo getCallingAppInfo();
+    property public final androidx.credentials.provider.CallingAppInfo callingAppInfo;
+  }
+
+  public final class ProviderCreateCredentialRequest {
+    ctor public ProviderCreateCredentialRequest(androidx.credentials.CreateCredentialRequest callingRequest, androidx.credentials.provider.CallingAppInfo callingAppInfo);
+    method public androidx.credentials.provider.CallingAppInfo getCallingAppInfo();
+    method public androidx.credentials.CreateCredentialRequest getCallingRequest();
+    property public final androidx.credentials.provider.CallingAppInfo callingAppInfo;
+    property public final androidx.credentials.CreateCredentialRequest callingRequest;
+  }
+
+  public final class ProviderGetCredentialRequest {
+    ctor public ProviderGetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, androidx.credentials.provider.CallingAppInfo callingAppInfo);
+    method public androidx.credentials.provider.CallingAppInfo getCallingAppInfo();
+    method public java.util.List<androidx.credentials.CredentialOption> getCredentialOptions();
+    property public final androidx.credentials.provider.CallingAppInfo callingAppInfo;
+    property public final java.util.List<androidx.credentials.CredentialOption> credentialOptions;
+  }
+
+  @RequiresApi(26) public final class PublicKeyCredentialEntry extends androidx.credentials.provider.CredentialEntry {
+    ctor public PublicKeyCredentialEntry(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPublicKeyCredentialOption beginGetPublicKeyCredentialOption, optional CharSequence? displayName, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon icon, optional boolean isAutoSelectAllowed);
+    method public CharSequence? getDisplayName();
+    method public android.graphics.drawable.Icon getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence getTypeDisplayName();
+    method public CharSequence getUsername();
+    method public boolean isAutoSelectAllowed();
+    property public final CharSequence? displayName;
+    property public final android.graphics.drawable.Icon icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence typeDisplayName;
+    property public final CharSequence username;
+  }
+
+  public static final class PublicKeyCredentialEntry.Builder {
+    ctor public PublicKeyCredentialEntry.Builder(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPublicKeyCredentialOption beginGetPublicKeyCredentialOption);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry build();
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setDisplayName(CharSequence? displayName);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setIcon(android.graphics.drawable.Icon icon);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+  }
+
+  public final class RemoteEntry {
+    ctor public RemoteEntry(android.app.PendingIntent pendingIntent);
+    method public android.app.PendingIntent getPendingIntent();
+    property public final android.app.PendingIntent pendingIntent;
+  }
+
+  public static final class RemoteEntry.Builder {
+    ctor public RemoteEntry.Builder(android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.RemoteEntry build();
+  }
+
+}
+
diff --git a/credentials/credentials/api/res-1.2.0-beta02.txt b/credentials/credentials/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/credentials/credentials/api/res-1.2.0-beta02.txt
diff --git a/credentials/credentials/api/restricted_1.2.0-beta02.txt b/credentials/credentials/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..8c9cf86
--- /dev/null
+++ b/credentials/credentials/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1,902 @@
+// Signature format: 4.0
+package androidx.credentials {
+
+  public final class ClearCredentialStateRequest {
+    ctor public ClearCredentialStateRequest();
+  }
+
+  public abstract class CreateCredentialRequest {
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final android.os.Bundle getCredentialData();
+    method public final androidx.credentials.CreateCredentialRequest.DisplayInfo getDisplayInfo();
+    method public final String? getOrigin();
+    method public final boolean getPreferImmediatelyAvailableCredentials();
+    method public final String getType();
+    method public final boolean isAutoSelectAllowed();
+    method public final boolean isSystemProviderRequired();
+    property public final android.os.Bundle candidateQueryData;
+    property public final android.os.Bundle credentialData;
+    property public final androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo;
+    property public final boolean isAutoSelectAllowed;
+    property public final boolean isSystemProviderRequired;
+    property public final String? origin;
+    property public final boolean preferImmediatelyAvailableCredentials;
+    property public final String type;
+  }
+
+  public static final class CreateCredentialRequest.DisplayInfo {
+    ctor public CreateCredentialRequest.DisplayInfo(CharSequence userId);
+    ctor public CreateCredentialRequest.DisplayInfo(CharSequence userId, optional CharSequence? userDisplayName);
+    ctor public CreateCredentialRequest.DisplayInfo(CharSequence userId, CharSequence? userDisplayName, String? preferDefaultProvider);
+    method public CharSequence? getUserDisplayName();
+    method public CharSequence getUserId();
+    property public final CharSequence? userDisplayName;
+    property public final CharSequence userId;
+  }
+
+  public abstract class CreateCredentialResponse {
+    method public final android.os.Bundle getData();
+    method public final String getType();
+    property public final android.os.Bundle data;
+    property public final String type;
+  }
+
+  public class CreateCustomCredentialRequest extends androidx.credentials.CreateCredentialRequest {
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo);
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo, optional boolean isAutoSelectAllowed);
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo, optional boolean isAutoSelectAllowed, optional String? origin);
+    ctor public CreateCustomCredentialRequest(String type, android.os.Bundle credentialData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, androidx.credentials.CreateCredentialRequest.DisplayInfo displayInfo, optional boolean isAutoSelectAllowed, optional String? origin, optional boolean preferImmediatelyAvailableCredentials);
+  }
+
+  public class CreateCustomCredentialResponse extends androidx.credentials.CreateCredentialResponse {
+    ctor public CreateCustomCredentialResponse(String type, android.os.Bundle data);
+  }
+
+  public final class CreatePasswordRequest extends androidx.credentials.CreateCredentialRequest {
+    ctor public CreatePasswordRequest(String id, String password);
+    ctor public CreatePasswordRequest(String id, String password, optional String? origin);
+    ctor public CreatePasswordRequest(String id, String password, optional String? origin, optional boolean preferImmediatelyAvailableCredentials);
+    ctor public CreatePasswordRequest(String id, String password, optional String? origin, optional boolean preferImmediatelyAvailableCredentials, optional boolean isAutoSelectAllowed);
+    ctor public CreatePasswordRequest(String id, String password, String? origin, String? preferDefaultProvider, boolean preferImmediatelyAvailableCredentials, boolean isAutoSelectAllowed);
+    method public String getId();
+    method public String getPassword();
+    property public final String id;
+    property public final String password;
+  }
+
+  public final class CreatePasswordResponse extends androidx.credentials.CreateCredentialResponse {
+    ctor public CreatePasswordResponse();
+  }
+
+  public final class CreatePublicKeyCredentialRequest extends androidx.credentials.CreateCredentialRequest {
+    ctor public CreatePublicKeyCredentialRequest(String requestJson);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash, optional boolean preferImmediatelyAvailableCredentials);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash, optional boolean preferImmediatelyAvailableCredentials, optional String? origin);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, optional byte[]? clientDataHash, optional boolean preferImmediatelyAvailableCredentials, optional String? origin, optional boolean isAutoSelectAllowed);
+    ctor public CreatePublicKeyCredentialRequest(String requestJson, byte[]? clientDataHash, boolean preferImmediatelyAvailableCredentials, String? origin, String? preferDefaultProvider, boolean isAutoSelectAllowed);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public final class CreatePublicKeyCredentialResponse extends androidx.credentials.CreateCredentialResponse {
+    ctor public CreatePublicKeyCredentialResponse(String registrationResponseJson);
+    method public String getRegistrationResponseJson();
+    property public final String registrationResponseJson;
+  }
+
+  public abstract class Credential {
+    method public final android.os.Bundle getData();
+    method public final String getType();
+    property public final android.os.Bundle data;
+    property public final String type;
+  }
+
+  @RequiresApi(16) public interface CredentialManager {
+    method public default suspend Object? clearCredentialState(androidx.credentials.ClearCredentialStateRequest request, kotlin.coroutines.Continuation<? super kotlin.Unit>);
+    method public void clearCredentialStateAsync(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public static androidx.credentials.CredentialManager create(android.content.Context context);
+    method public default suspend Object? createCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.CreateCredentialResponse>);
+    method public void createCredentialAsync(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
+    method @RequiresApi(34) public android.app.PendingIntent createSettingsPendingIntent();
+    method public default suspend Object? getCredential(android.content.Context context, androidx.credentials.GetCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.GetCredentialResponse>);
+    method @RequiresApi(34) public default suspend Object? getCredential(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, kotlin.coroutines.Continuation<? super androidx.credentials.GetCredentialResponse>);
+    method public void getCredentialAsync(android.content.Context context, androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public void getCredentialAsync(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public default suspend Object? prepareGetCredential(androidx.credentials.GetCredentialRequest request, kotlin.coroutines.Continuation<? super androidx.credentials.PrepareGetCredentialResponse>);
+    method @RequiresApi(34) public void prepareGetCredentialAsync(androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.PrepareGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    field public static final androidx.credentials.CredentialManager.Companion Companion;
+  }
+
+  public static final class CredentialManager.Companion {
+    method public androidx.credentials.CredentialManager create(android.content.Context context);
+  }
+
+  public interface CredentialManagerCallback<R, E> {
+    method public void onError(E e);
+    method public void onResult(R result);
+  }
+
+  public abstract class CredentialOption {
+    method public final java.util.Set<android.content.ComponentName> getAllowedProviders();
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final android.os.Bundle getRequestData();
+    method public final String getType();
+    method public final boolean isAutoSelectAllowed();
+    method public final boolean isSystemProviderRequired();
+    property public final java.util.Set<android.content.ComponentName> allowedProviders;
+    property public final android.os.Bundle candidateQueryData;
+    property public final boolean isAutoSelectAllowed;
+    property public final boolean isSystemProviderRequired;
+    property public final android.os.Bundle requestData;
+    property public final String type;
+  }
+
+  public interface CredentialProvider {
+    method public boolean isAvailableOnDevice();
+    method public void onClearCredential(androidx.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+    method public void onCreateCredential(android.content.Context context, androidx.credentials.CreateCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.CreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
+    method public void onGetCredential(android.content.Context context, androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public default void onGetCredential(android.content.Context context, androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle pendingGetCredentialHandle, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.GetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method @RequiresApi(34) public default void onPrepareCredential(androidx.credentials.GetCredentialRequest request, android.os.CancellationSignal? cancellationSignal, java.util.concurrent.Executor executor, androidx.credentials.CredentialManagerCallback<androidx.credentials.PrepareGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+  }
+
+  public class CustomCredential extends androidx.credentials.Credential {
+    ctor public CustomCredential(String type, android.os.Bundle data);
+  }
+
+  public final class GetCredentialRequest {
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin, optional boolean preferIdentityDocUi);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin, optional boolean preferIdentityDocUi, optional android.content.ComponentName? preferUiBrandingComponentName);
+    ctor public GetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, optional String? origin, optional boolean preferIdentityDocUi, optional android.content.ComponentName? preferUiBrandingComponentName, optional boolean preferImmediatelyAvailableCredentials);
+    method public java.util.List<androidx.credentials.CredentialOption> getCredentialOptions();
+    method public String? getOrigin();
+    method public boolean getPreferIdentityDocUi();
+    method public boolean getPreferImmediatelyAvailableCredentials();
+    method public android.content.ComponentName? getPreferUiBrandingComponentName();
+    property public final java.util.List<androidx.credentials.CredentialOption> credentialOptions;
+    property public final String? origin;
+    property public final boolean preferIdentityDocUi;
+    property public final boolean preferImmediatelyAvailableCredentials;
+    property public final android.content.ComponentName? preferUiBrandingComponentName;
+  }
+
+  public static final class GetCredentialRequest.Builder {
+    ctor public GetCredentialRequest.Builder();
+    method public androidx.credentials.GetCredentialRequest.Builder addCredentialOption(androidx.credentials.CredentialOption credentialOption);
+    method public androidx.credentials.GetCredentialRequest build();
+    method public androidx.credentials.GetCredentialRequest.Builder setCredentialOptions(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions);
+    method public androidx.credentials.GetCredentialRequest.Builder setOrigin(String origin);
+    method public androidx.credentials.GetCredentialRequest.Builder setPreferIdentityDocUi(boolean preferIdentityDocUi);
+    method public androidx.credentials.GetCredentialRequest.Builder setPreferImmediatelyAvailableCredentials(boolean preferImmediatelyAvailableCredentials);
+    method public androidx.credentials.GetCredentialRequest.Builder setPreferUiBrandingComponentName(android.content.ComponentName? component);
+  }
+
+  public final class GetCredentialResponse {
+    ctor public GetCredentialResponse(androidx.credentials.Credential credential);
+    method public androidx.credentials.Credential getCredential();
+    property public final androidx.credentials.Credential credential;
+  }
+
+  public class GetCustomCredentialOption extends androidx.credentials.CredentialOption {
+    ctor public GetCustomCredentialOption(String type, android.os.Bundle requestData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired);
+    ctor public GetCustomCredentialOption(String type, android.os.Bundle requestData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, optional boolean isAutoSelectAllowed);
+    ctor public GetCustomCredentialOption(String type, android.os.Bundle requestData, android.os.Bundle candidateQueryData, boolean isSystemProviderRequired, optional boolean isAutoSelectAllowed, optional java.util.Set<android.content.ComponentName> allowedProviders);
+  }
+
+  public final class GetPasswordOption extends androidx.credentials.CredentialOption {
+    ctor public GetPasswordOption();
+    ctor public GetPasswordOption(optional java.util.Set<java.lang.String> allowedUserIds);
+    ctor public GetPasswordOption(optional java.util.Set<java.lang.String> allowedUserIds, optional boolean isAutoSelectAllowed);
+    ctor public GetPasswordOption(optional java.util.Set<java.lang.String> allowedUserIds, optional boolean isAutoSelectAllowed, optional java.util.Set<android.content.ComponentName> allowedProviders);
+    method public java.util.Set<java.lang.String> getAllowedUserIds();
+    property public final java.util.Set<java.lang.String> allowedUserIds;
+  }
+
+  public final class GetPublicKeyCredentialOption extends androidx.credentials.CredentialOption {
+    ctor public GetPublicKeyCredentialOption(String requestJson);
+    ctor public GetPublicKeyCredentialOption(String requestJson, optional byte[]? clientDataHash);
+    ctor public GetPublicKeyCredentialOption(String requestJson, optional byte[]? clientDataHash, optional java.util.Set<android.content.ComponentName> allowedProviders);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public final class PasswordCredential extends androidx.credentials.Credential {
+    ctor public PasswordCredential(String id, String password);
+    method public String getId();
+    method public String getPassword();
+    property public final String id;
+    property public final String password;
+    field public static final androidx.credentials.PasswordCredential.Companion Companion;
+    field public static final String TYPE_PASSWORD_CREDENTIAL = "android.credentials.TYPE_PASSWORD_CREDENTIAL";
+  }
+
+  public static final class PasswordCredential.Companion {
+  }
+
+  @RequiresApi(34) public final class PrepareGetCredentialResponse {
+    method public kotlin.jvm.functions.Function1<java.lang.String,java.lang.Boolean>? getCredentialTypeDelegate();
+    method public kotlin.jvm.functions.Function0<java.lang.Boolean>? getHasAuthResultsDelegate();
+    method public kotlin.jvm.functions.Function0<java.lang.Boolean>? getHasRemoteResultsDelegate();
+    method public androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle? getPendingGetCredentialHandle();
+    method @RequiresPermission(android.Manifest.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS) public boolean hasAuthenticationResults();
+    method @RequiresPermission(android.Manifest.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS) public boolean hasCredentialResults(String credentialType);
+    method @RequiresPermission(android.Manifest.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS) public boolean hasRemoteResults();
+    method public boolean isNullHandlesForTest();
+    property public final kotlin.jvm.functions.Function1<java.lang.String,java.lang.Boolean>? credentialTypeDelegate;
+    property public final kotlin.jvm.functions.Function0<java.lang.Boolean>? hasAuthResultsDelegate;
+    property public final kotlin.jvm.functions.Function0<java.lang.Boolean>? hasRemoteResultsDelegate;
+    property public final boolean isNullHandlesForTest;
+    property public final androidx.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle? pendingGetCredentialHandle;
+  }
+
+  @RequiresApi(34) public static final class PrepareGetCredentialResponse.PendingGetCredentialHandle {
+    ctor public PrepareGetCredentialResponse.PendingGetCredentialHandle(android.credentials.PrepareGetCredentialResponse.PendingGetCredentialHandle? frameworkHandle);
+  }
+
+  @VisibleForTesting public static final class PrepareGetCredentialResponse.TestBuilder {
+    ctor public PrepareGetCredentialResponse.TestBuilder();
+    method public androidx.credentials.PrepareGetCredentialResponse build();
+    method @VisibleForTesting public androidx.credentials.PrepareGetCredentialResponse.TestBuilder setCredentialTypeDelegate(kotlin.jvm.functions.Function1<? super java.lang.String,java.lang.Boolean> handler);
+    method @VisibleForTesting public androidx.credentials.PrepareGetCredentialResponse.TestBuilder setHasAuthResultsDelegate(kotlin.jvm.functions.Function0<java.lang.Boolean> handler);
+    method @VisibleForTesting public androidx.credentials.PrepareGetCredentialResponse.TestBuilder setHasRemoteResultsDelegate(kotlin.jvm.functions.Function0<java.lang.Boolean> handler);
+  }
+
+  public final class PublicKeyCredential extends androidx.credentials.Credential {
+    ctor public PublicKeyCredential(String authenticationResponseJson);
+    method public String getAuthenticationResponseJson();
+    property public final String authenticationResponseJson;
+    field public static final androidx.credentials.PublicKeyCredential.Companion Companion;
+    field public static final String TYPE_PUBLIC_KEY_CREDENTIAL = "androidx.credentials.TYPE_PUBLIC_KEY_CREDENTIAL";
+  }
+
+  public static final class PublicKeyCredential.Companion {
+  }
+
+}
+
+package androidx.credentials.exceptions {
+
+  public final class ClearCredentialCustomException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialCustomException(String type);
+    ctor public ClearCredentialCustomException(String type, optional CharSequence? errorMessage);
+    method public String getType();
+    property public String type;
+  }
+
+  public abstract class ClearCredentialException extends java.lang.Exception {
+  }
+
+  public final class ClearCredentialInterruptedException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialInterruptedException();
+    ctor public ClearCredentialInterruptedException(optional CharSequence? errorMessage);
+  }
+
+  public final class ClearCredentialProviderConfigurationException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialProviderConfigurationException();
+    ctor public ClearCredentialProviderConfigurationException(optional CharSequence? errorMessage);
+  }
+
+  public final class ClearCredentialUnknownException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialUnknownException();
+    ctor public ClearCredentialUnknownException(optional CharSequence? errorMessage);
+  }
+
+  public final class ClearCredentialUnsupportedException extends androidx.credentials.exceptions.ClearCredentialException {
+    ctor public ClearCredentialUnsupportedException();
+    ctor public ClearCredentialUnsupportedException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialCancellationException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialCancellationException();
+    ctor public CreateCredentialCancellationException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialCustomException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialCustomException(String type);
+    ctor public CreateCredentialCustomException(String type, optional CharSequence? errorMessage);
+    method public String getType();
+    property public String type;
+  }
+
+  public abstract class CreateCredentialException extends java.lang.Exception {
+  }
+
+  public final class CreateCredentialInterruptedException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialInterruptedException();
+    ctor public CreateCredentialInterruptedException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialNoCreateOptionException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialNoCreateOptionException();
+    ctor public CreateCredentialNoCreateOptionException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialProviderConfigurationException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialProviderConfigurationException();
+    ctor public CreateCredentialProviderConfigurationException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialUnknownException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialUnknownException();
+    ctor public CreateCredentialUnknownException(optional CharSequence? errorMessage);
+  }
+
+  public final class CreateCredentialUnsupportedException extends androidx.credentials.exceptions.CreateCredentialException {
+    ctor public CreateCredentialUnsupportedException();
+    ctor public CreateCredentialUnsupportedException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialCancellationException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialCancellationException();
+    ctor public GetCredentialCancellationException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialCustomException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialCustomException(String type);
+    ctor public GetCredentialCustomException(String type, optional CharSequence? errorMessage);
+    method public String getType();
+    property public String type;
+  }
+
+  public abstract class GetCredentialException extends java.lang.Exception {
+  }
+
+  public final class GetCredentialInterruptedException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialInterruptedException();
+    ctor public GetCredentialInterruptedException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialProviderConfigurationException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialProviderConfigurationException();
+    ctor public GetCredentialProviderConfigurationException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialUnknownException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialUnknownException();
+    ctor public GetCredentialUnknownException(optional CharSequence? errorMessage);
+  }
+
+  public final class GetCredentialUnsupportedException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public GetCredentialUnsupportedException();
+    ctor public GetCredentialUnsupportedException(optional CharSequence? errorMessage);
+  }
+
+  public final class NoCredentialException extends androidx.credentials.exceptions.GetCredentialException {
+    ctor public NoCredentialException();
+    ctor public NoCredentialException(optional CharSequence? errorMessage);
+  }
+
+}
+
+package androidx.credentials.exceptions.domerrors {
+
+  public final class AbortError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public AbortError();
+  }
+
+  public final class ConstraintError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public ConstraintError();
+  }
+
+  public final class DataCloneError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public DataCloneError();
+  }
+
+  public final class DataError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public DataError();
+  }
+
+  public abstract class DomError {
+    ctor public DomError(String type);
+  }
+
+  public final class EncodingError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public EncodingError();
+  }
+
+  public final class HierarchyRequestError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public HierarchyRequestError();
+  }
+
+  public final class InUseAttributeError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InUseAttributeError();
+  }
+
+  public final class InvalidCharacterError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidCharacterError();
+  }
+
+  public final class InvalidModificationError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidModificationError();
+  }
+
+  public final class InvalidNodeTypeError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidNodeTypeError();
+  }
+
+  public final class InvalidStateError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public InvalidStateError();
+  }
+
+  public final class NamespaceError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NamespaceError();
+  }
+
+  public final class NetworkError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NetworkError();
+  }
+
+  public final class NoModificationAllowedError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NoModificationAllowedError();
+  }
+
+  public final class NotAllowedError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotAllowedError();
+  }
+
+  public final class NotFoundError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotFoundError();
+  }
+
+  public final class NotReadableError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotReadableError();
+  }
+
+  public final class NotSupportedError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public NotSupportedError();
+  }
+
+  public final class OperationError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public OperationError();
+  }
+
+  public final class OptOutError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public OptOutError();
+  }
+
+  public final class QuotaExceededError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public QuotaExceededError();
+  }
+
+  public final class ReadOnlyError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public ReadOnlyError();
+  }
+
+  public final class SecurityError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public SecurityError();
+  }
+
+  public final class SyntaxError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public SyntaxError();
+  }
+
+  public final class TimeoutError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public TimeoutError();
+  }
+
+  public final class TransactionInactiveError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public TransactionInactiveError();
+  }
+
+  public final class UnknownError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public UnknownError();
+  }
+
+  public final class VersionError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public VersionError();
+  }
+
+  public final class WrongDocumentError extends androidx.credentials.exceptions.domerrors.DomError {
+    ctor public WrongDocumentError();
+  }
+
+}
+
+package androidx.credentials.exceptions.publickeycredential {
+
+  public final class CreatePublicKeyCredentialDomException extends androidx.credentials.exceptions.publickeycredential.CreatePublicKeyCredentialException {
+    ctor public CreatePublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError);
+    ctor public CreatePublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError, optional CharSequence? errorMessage);
+    method public androidx.credentials.exceptions.domerrors.DomError getDomError();
+    property public final androidx.credentials.exceptions.domerrors.DomError domError;
+  }
+
+  public class CreatePublicKeyCredentialException extends androidx.credentials.exceptions.CreateCredentialException {
+  }
+
+  public final class GetPublicKeyCredentialDomException extends androidx.credentials.exceptions.publickeycredential.GetPublicKeyCredentialException {
+    ctor public GetPublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError);
+    ctor public GetPublicKeyCredentialDomException(androidx.credentials.exceptions.domerrors.DomError domError, optional CharSequence? errorMessage);
+    method public androidx.credentials.exceptions.domerrors.DomError getDomError();
+    property public final androidx.credentials.exceptions.domerrors.DomError domError;
+  }
+
+  public class GetPublicKeyCredentialException extends androidx.credentials.exceptions.GetCredentialException {
+  }
+
+}
+
+package androidx.credentials.provider {
+
+  public final class Action {
+    ctor public Action(CharSequence title, android.app.PendingIntent pendingIntent, optional CharSequence? subtitle);
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence? getSubtitle();
+    method public CharSequence getTitle();
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence? subtitle;
+    property public final CharSequence title;
+  }
+
+  public static final class Action.Builder {
+    ctor public Action.Builder(CharSequence title, android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.Action build();
+    method public androidx.credentials.provider.Action.Builder setSubtitle(CharSequence? subtitle);
+  }
+
+  public final class AuthenticationAction {
+    ctor public AuthenticationAction(CharSequence title, android.app.PendingIntent pendingIntent);
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence getTitle();
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence title;
+  }
+
+  public static final class AuthenticationAction.Builder {
+    ctor public AuthenticationAction.Builder(CharSequence title, android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.AuthenticationAction build();
+  }
+
+  public abstract class BeginCreateCredentialRequest {
+    ctor public BeginCreateCredentialRequest(String type, android.os.Bundle candidateQueryData, androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+    method public static final android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialRequest request);
+    method public static final androidx.credentials.provider.BeginCreateCredentialRequest? fromBundle(android.os.Bundle bundle);
+    method public final androidx.credentials.provider.CallingAppInfo? getCallingAppInfo();
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final String getType();
+    property public final androidx.credentials.provider.CallingAppInfo? callingAppInfo;
+    property public final android.os.Bundle candidateQueryData;
+    property public final String type;
+    field public static final androidx.credentials.provider.BeginCreateCredentialRequest.Companion Companion;
+  }
+
+  public static final class BeginCreateCredentialRequest.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialRequest request);
+    method public androidx.credentials.provider.BeginCreateCredentialRequest? fromBundle(android.os.Bundle bundle);
+  }
+
+  public final class BeginCreateCredentialResponse {
+    ctor public BeginCreateCredentialResponse(optional java.util.List<androidx.credentials.provider.CreateEntry> createEntries, optional androidx.credentials.provider.RemoteEntry? remoteEntry);
+    method public static android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialResponse response);
+    method public static androidx.credentials.provider.BeginCreateCredentialResponse? fromBundle(android.os.Bundle bundle);
+    method public java.util.List<androidx.credentials.provider.CreateEntry> getCreateEntries();
+    method public androidx.credentials.provider.RemoteEntry? getRemoteEntry();
+    property public final java.util.List<androidx.credentials.provider.CreateEntry> createEntries;
+    property public final androidx.credentials.provider.RemoteEntry? remoteEntry;
+    field public static final androidx.credentials.provider.BeginCreateCredentialResponse.Companion Companion;
+  }
+
+  public static final class BeginCreateCredentialResponse.Builder {
+    ctor public BeginCreateCredentialResponse.Builder();
+    method public androidx.credentials.provider.BeginCreateCredentialResponse.Builder addCreateEntry(androidx.credentials.provider.CreateEntry createEntry);
+    method public androidx.credentials.provider.BeginCreateCredentialResponse build();
+    method public androidx.credentials.provider.BeginCreateCredentialResponse.Builder setCreateEntries(java.util.List<androidx.credentials.provider.CreateEntry> createEntries);
+    method public androidx.credentials.provider.BeginCreateCredentialResponse.Builder setRemoteEntry(androidx.credentials.provider.RemoteEntry? remoteEntry);
+  }
+
+  public static final class BeginCreateCredentialResponse.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginCreateCredentialResponse response);
+    method public androidx.credentials.provider.BeginCreateCredentialResponse? fromBundle(android.os.Bundle bundle);
+  }
+
+  public class BeginCreateCustomCredentialRequest extends androidx.credentials.provider.BeginCreateCredentialRequest {
+    ctor public BeginCreateCustomCredentialRequest(String type, android.os.Bundle candidateQueryData, androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+  }
+
+  public final class BeginCreatePasswordCredentialRequest extends androidx.credentials.provider.BeginCreateCredentialRequest {
+    ctor public BeginCreatePasswordCredentialRequest(androidx.credentials.provider.CallingAppInfo? callingAppInfo, android.os.Bundle candidateQueryData);
+  }
+
+  public final class BeginCreatePublicKeyCredentialRequest extends androidx.credentials.provider.BeginCreateCredentialRequest {
+    ctor public BeginCreatePublicKeyCredentialRequest(String requestJson, androidx.credentials.provider.CallingAppInfo? callingAppInfo, android.os.Bundle candidateQueryData);
+    ctor public BeginCreatePublicKeyCredentialRequest(String requestJson, androidx.credentials.provider.CallingAppInfo? callingAppInfo, android.os.Bundle candidateQueryData, optional byte[]? clientDataHash);
+    method @VisibleForTesting public static androidx.credentials.provider.BeginCreatePublicKeyCredentialRequest createForTest(android.os.Bundle data, androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public abstract class BeginGetCredentialOption {
+    method public final android.os.Bundle getCandidateQueryData();
+    method public final String getId();
+    method public final String getType();
+    property public final android.os.Bundle candidateQueryData;
+    property public final String id;
+    property public final String type;
+  }
+
+  public final class BeginGetCredentialRequest {
+    ctor public BeginGetCredentialRequest(java.util.List<? extends androidx.credentials.provider.BeginGetCredentialOption> beginGetCredentialOptions);
+    ctor public BeginGetCredentialRequest(java.util.List<? extends androidx.credentials.provider.BeginGetCredentialOption> beginGetCredentialOptions, optional androidx.credentials.provider.CallingAppInfo? callingAppInfo);
+    method public static android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialRequest request);
+    method public static androidx.credentials.provider.BeginGetCredentialRequest? fromBundle(android.os.Bundle bundle);
+    method public java.util.List<androidx.credentials.provider.BeginGetCredentialOption> getBeginGetCredentialOptions();
+    method public androidx.credentials.provider.CallingAppInfo? getCallingAppInfo();
+    property public final java.util.List<androidx.credentials.provider.BeginGetCredentialOption> beginGetCredentialOptions;
+    property public final androidx.credentials.provider.CallingAppInfo? callingAppInfo;
+    field public static final androidx.credentials.provider.BeginGetCredentialRequest.Companion Companion;
+  }
+
+  public static final class BeginGetCredentialRequest.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialRequest request);
+    method public androidx.credentials.provider.BeginGetCredentialRequest? fromBundle(android.os.Bundle bundle);
+  }
+
+  public final class BeginGetCredentialResponse {
+    ctor public BeginGetCredentialResponse(optional java.util.List<? extends androidx.credentials.provider.CredentialEntry> credentialEntries, optional java.util.List<androidx.credentials.provider.Action> actions, optional java.util.List<androidx.credentials.provider.AuthenticationAction> authenticationActions, optional androidx.credentials.provider.RemoteEntry? remoteEntry);
+    method public static android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public static androidx.credentials.provider.BeginGetCredentialResponse? fromBundle(android.os.Bundle bundle);
+    method public java.util.List<androidx.credentials.provider.Action> getActions();
+    method public java.util.List<androidx.credentials.provider.AuthenticationAction> getAuthenticationActions();
+    method public java.util.List<androidx.credentials.provider.CredentialEntry> getCredentialEntries();
+    method public androidx.credentials.provider.RemoteEntry? getRemoteEntry();
+    property public final java.util.List<androidx.credentials.provider.Action> actions;
+    property public final java.util.List<androidx.credentials.provider.AuthenticationAction> authenticationActions;
+    property public final java.util.List<androidx.credentials.provider.CredentialEntry> credentialEntries;
+    property public final androidx.credentials.provider.RemoteEntry? remoteEntry;
+    field public static final androidx.credentials.provider.BeginGetCredentialResponse.Companion Companion;
+  }
+
+  public static final class BeginGetCredentialResponse.Builder {
+    ctor public BeginGetCredentialResponse.Builder();
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder addAction(androidx.credentials.provider.Action action);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder addAuthenticationAction(androidx.credentials.provider.AuthenticationAction authenticationAction);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder addCredentialEntry(androidx.credentials.provider.CredentialEntry entry);
+    method public androidx.credentials.provider.BeginGetCredentialResponse build();
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setActions(java.util.List<androidx.credentials.provider.Action> actions);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setAuthenticationActions(java.util.List<androidx.credentials.provider.AuthenticationAction> authenticationEntries);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setCredentialEntries(java.util.List<? extends androidx.credentials.provider.CredentialEntry> entries);
+    method public androidx.credentials.provider.BeginGetCredentialResponse.Builder setRemoteEntry(androidx.credentials.provider.RemoteEntry? remoteEntry);
+  }
+
+  public static final class BeginGetCredentialResponse.Companion {
+    method public android.os.Bundle asBundle(androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public androidx.credentials.provider.BeginGetCredentialResponse? fromBundle(android.os.Bundle bundle);
+  }
+
+  public class BeginGetCustomCredentialOption extends androidx.credentials.provider.BeginGetCredentialOption {
+    ctor public BeginGetCustomCredentialOption(String id, String type, android.os.Bundle candidateQueryData);
+  }
+
+  public final class BeginGetPasswordOption extends androidx.credentials.provider.BeginGetCredentialOption {
+    ctor public BeginGetPasswordOption(java.util.Set<java.lang.String> allowedUserIds, android.os.Bundle candidateQueryData, String id);
+    method @VisibleForTesting public static androidx.credentials.provider.BeginGetPasswordOption createForTest(android.os.Bundle data, String id);
+    method public java.util.Set<java.lang.String> getAllowedUserIds();
+    property public final java.util.Set<java.lang.String> allowedUserIds;
+  }
+
+  public final class BeginGetPublicKeyCredentialOption extends androidx.credentials.provider.BeginGetCredentialOption {
+    ctor public BeginGetPublicKeyCredentialOption(android.os.Bundle candidateQueryData, String id, String requestJson);
+    ctor public BeginGetPublicKeyCredentialOption(android.os.Bundle candidateQueryData, String id, String requestJson, optional byte[]? clientDataHash);
+    method public byte[]? getClientDataHash();
+    method public String getRequestJson();
+    property public final byte[]? clientDataHash;
+    property public final String requestJson;
+  }
+
+  public final class CallingAppInfo {
+    ctor public CallingAppInfo(String packageName, android.content.pm.SigningInfo signingInfo);
+    ctor public CallingAppInfo(String packageName, android.content.pm.SigningInfo signingInfo, optional String? origin);
+    method public String? getOrigin(String privilegedAllowlist);
+    method public String getPackageName();
+    method public android.content.pm.SigningInfo getSigningInfo();
+    method public boolean isOriginPopulated();
+    property public final String packageName;
+    property public final android.content.pm.SigningInfo signingInfo;
+  }
+
+  @RequiresApi(26) public final class CreateEntry {
+    ctor public CreateEntry(CharSequence accountName, android.app.PendingIntent pendingIntent, optional CharSequence? description, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon? icon, optional Integer? passwordCredentialCount, optional Integer? publicKeyCredentialCount, optional Integer? totalCredentialCount, optional boolean isAutoSelectAllowed);
+    method public CharSequence getAccountName();
+    method public CharSequence? getDescription();
+    method public android.graphics.drawable.Icon? getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public Integer? getPasswordCredentialCount();
+    method public android.app.PendingIntent getPendingIntent();
+    method public Integer? getPublicKeyCredentialCount();
+    method public Integer? getTotalCredentialCount();
+    method public boolean isAutoSelectAllowed();
+    property public final CharSequence accountName;
+    property public final CharSequence? description;
+    property public final android.graphics.drawable.Icon? icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+  }
+
+  public static final class CreateEntry.Builder {
+    ctor public CreateEntry.Builder(CharSequence accountName, android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.CreateEntry build();
+    method public androidx.credentials.provider.CreateEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.CreateEntry.Builder setDescription(CharSequence? description);
+    method public androidx.credentials.provider.CreateEntry.Builder setIcon(android.graphics.drawable.Icon? icon);
+    method public androidx.credentials.provider.CreateEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+    method public androidx.credentials.provider.CreateEntry.Builder setPasswordCredentialCount(int count);
+    method public androidx.credentials.provider.CreateEntry.Builder setPublicKeyCredentialCount(int count);
+    method public androidx.credentials.provider.CreateEntry.Builder setTotalCredentialCount(int count);
+  }
+
+  public abstract class CredentialEntry {
+    method public final androidx.credentials.provider.BeginGetCredentialOption getBeginGetCredentialOption();
+    property public final androidx.credentials.provider.BeginGetCredentialOption beginGetCredentialOption;
+  }
+
+  @RequiresApi(34) public abstract class CredentialProviderService extends android.service.credentials.CredentialProviderService {
+    ctor public CredentialProviderService();
+    method public final void onBeginCreateCredential(android.service.credentials.BeginCreateCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<android.service.credentials.BeginCreateCredentialResponse,android.credentials.CreateCredentialException> callback);
+    method public abstract void onBeginCreateCredentialRequest(androidx.credentials.provider.BeginCreateCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<androidx.credentials.provider.BeginCreateCredentialResponse,androidx.credentials.exceptions.CreateCredentialException> callback);
+    method public final void onBeginGetCredential(android.service.credentials.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<android.service.credentials.BeginGetCredentialResponse,android.credentials.GetCredentialException> callback);
+    method public abstract void onBeginGetCredentialRequest(androidx.credentials.provider.BeginGetCredentialRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<androidx.credentials.provider.BeginGetCredentialResponse,androidx.credentials.exceptions.GetCredentialException> callback);
+    method public final void onClearCredentialState(android.service.credentials.ClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,android.credentials.ClearCredentialStateException> callback);
+    method public abstract void onClearCredentialStateRequest(androidx.credentials.provider.ProviderClearCredentialStateRequest request, android.os.CancellationSignal cancellationSignal, android.os.OutcomeReceiver<java.lang.Void,androidx.credentials.exceptions.ClearCredentialException> callback);
+  }
+
+  @RequiresApi(26) public final class CustomCredentialEntry extends androidx.credentials.provider.CredentialEntry {
+    ctor public CustomCredentialEntry(android.content.Context context, CharSequence title, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetCredentialOption beginGetCredentialOption, optional CharSequence? subtitle, optional CharSequence? typeDisplayName, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon icon, optional boolean isAutoSelectAllowed);
+    method public android.graphics.drawable.Icon getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence? getSubtitle();
+    method public CharSequence getTitle();
+    method public String getType();
+    method public CharSequence? getTypeDisplayName();
+    method public boolean isAutoSelectAllowed();
+    property public final android.graphics.drawable.Icon icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence? subtitle;
+    property public final CharSequence title;
+    property public String type;
+    property public final CharSequence? typeDisplayName;
+  }
+
+  public static final class CustomCredentialEntry.Builder {
+    ctor public CustomCredentialEntry.Builder(android.content.Context context, String type, CharSequence title, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetCredentialOption beginGetCredentialOption);
+    method public androidx.credentials.provider.CustomCredentialEntry build();
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setIcon(android.graphics.drawable.Icon icon);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setSubtitle(CharSequence? subtitle);
+    method public androidx.credentials.provider.CustomCredentialEntry.Builder setTypeDisplayName(CharSequence? typeDisplayName);
+  }
+
+  public final class IntentHandlerConverters {
+    method @RequiresApi(34) public static androidx.credentials.provider.BeginGetCredentialResponse? getBeginGetResponse(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.CreateCredentialResponse? getCreateCredentialCredentialResponse(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.CreateCredentialException? getCreateCredentialException(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.GetCredentialException? getGetCredentialException(android.content.Intent);
+    method @RequiresApi(34) public static android.credentials.GetCredentialResponse? getGetCredentialResponse(android.content.Intent);
+  }
+
+  @RequiresApi(26) public final class PasswordCredentialEntry extends androidx.credentials.provider.CredentialEntry {
+    ctor public PasswordCredentialEntry(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPasswordOption beginGetPasswordOption, optional CharSequence? displayName, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon icon, optional boolean isAutoSelectAllowed);
+    method public CharSequence? getDisplayName();
+    method public android.graphics.drawable.Icon getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence getTypeDisplayName();
+    method public CharSequence getUsername();
+    method public boolean isAutoSelectAllowed();
+    property public final CharSequence? displayName;
+    property public final android.graphics.drawable.Icon icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence typeDisplayName;
+    property public final CharSequence username;
+  }
+
+  public static final class PasswordCredentialEntry.Builder {
+    ctor public PasswordCredentialEntry.Builder(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPasswordOption beginGetPasswordOption);
+    method public androidx.credentials.provider.PasswordCredentialEntry build();
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setDisplayName(CharSequence? displayName);
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setIcon(android.graphics.drawable.Icon icon);
+    method public androidx.credentials.provider.PasswordCredentialEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+  }
+
+  @RequiresApi(34) public final class PendingIntentHandler {
+    ctor public PendingIntentHandler();
+    method public static androidx.credentials.provider.BeginGetCredentialRequest? retrieveBeginGetCredentialRequest(android.content.Intent intent);
+    method public static androidx.credentials.provider.ProviderCreateCredentialRequest? retrieveProviderCreateCredentialRequest(android.content.Intent intent);
+    method public static androidx.credentials.provider.ProviderGetCredentialRequest? retrieveProviderGetCredentialRequest(android.content.Intent intent);
+    method public static void setBeginGetCredentialResponse(android.content.Intent intent, androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public static void setCreateCredentialException(android.content.Intent intent, androidx.credentials.exceptions.CreateCredentialException exception);
+    method public static void setCreateCredentialResponse(android.content.Intent intent, androidx.credentials.CreateCredentialResponse response);
+    method public static void setGetCredentialException(android.content.Intent intent, androidx.credentials.exceptions.GetCredentialException exception);
+    method public static void setGetCredentialResponse(android.content.Intent intent, androidx.credentials.GetCredentialResponse response);
+    field public static final androidx.credentials.provider.PendingIntentHandler.Companion Companion;
+  }
+
+  public static final class PendingIntentHandler.Companion {
+    method public androidx.credentials.provider.BeginGetCredentialRequest? retrieveBeginGetCredentialRequest(android.content.Intent intent);
+    method public androidx.credentials.provider.ProviderCreateCredentialRequest? retrieveProviderCreateCredentialRequest(android.content.Intent intent);
+    method public androidx.credentials.provider.ProviderGetCredentialRequest? retrieveProviderGetCredentialRequest(android.content.Intent intent);
+    method public void setBeginGetCredentialResponse(android.content.Intent intent, androidx.credentials.provider.BeginGetCredentialResponse response);
+    method public void setCreateCredentialException(android.content.Intent intent, androidx.credentials.exceptions.CreateCredentialException exception);
+    method public void setCreateCredentialResponse(android.content.Intent intent, androidx.credentials.CreateCredentialResponse response);
+    method public void setGetCredentialException(android.content.Intent intent, androidx.credentials.exceptions.GetCredentialException exception);
+    method public void setGetCredentialResponse(android.content.Intent intent, androidx.credentials.GetCredentialResponse response);
+  }
+
+  public final class ProviderClearCredentialStateRequest {
+    ctor public ProviderClearCredentialStateRequest(androidx.credentials.provider.CallingAppInfo callingAppInfo);
+    method public androidx.credentials.provider.CallingAppInfo getCallingAppInfo();
+    property public final androidx.credentials.provider.CallingAppInfo callingAppInfo;
+  }
+
+  public final class ProviderCreateCredentialRequest {
+    ctor public ProviderCreateCredentialRequest(androidx.credentials.CreateCredentialRequest callingRequest, androidx.credentials.provider.CallingAppInfo callingAppInfo);
+    method public androidx.credentials.provider.CallingAppInfo getCallingAppInfo();
+    method public androidx.credentials.CreateCredentialRequest getCallingRequest();
+    property public final androidx.credentials.provider.CallingAppInfo callingAppInfo;
+    property public final androidx.credentials.CreateCredentialRequest callingRequest;
+  }
+
+  public final class ProviderGetCredentialRequest {
+    ctor public ProviderGetCredentialRequest(java.util.List<? extends androidx.credentials.CredentialOption> credentialOptions, androidx.credentials.provider.CallingAppInfo callingAppInfo);
+    method public androidx.credentials.provider.CallingAppInfo getCallingAppInfo();
+    method public java.util.List<androidx.credentials.CredentialOption> getCredentialOptions();
+    property public final androidx.credentials.provider.CallingAppInfo callingAppInfo;
+    property public final java.util.List<androidx.credentials.CredentialOption> credentialOptions;
+  }
+
+  @RequiresApi(26) public final class PublicKeyCredentialEntry extends androidx.credentials.provider.CredentialEntry {
+    ctor public PublicKeyCredentialEntry(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPublicKeyCredentialOption beginGetPublicKeyCredentialOption, optional CharSequence? displayName, optional java.time.Instant? lastUsedTime, optional android.graphics.drawable.Icon icon, optional boolean isAutoSelectAllowed);
+    method public CharSequence? getDisplayName();
+    method public android.graphics.drawable.Icon getIcon();
+    method public java.time.Instant? getLastUsedTime();
+    method public android.app.PendingIntent getPendingIntent();
+    method public CharSequence getTypeDisplayName();
+    method public CharSequence getUsername();
+    method public boolean isAutoSelectAllowed();
+    property public final CharSequence? displayName;
+    property public final android.graphics.drawable.Icon icon;
+    property public final boolean isAutoSelectAllowed;
+    property public final java.time.Instant? lastUsedTime;
+    property public final android.app.PendingIntent pendingIntent;
+    property public final CharSequence typeDisplayName;
+    property public final CharSequence username;
+  }
+
+  public static final class PublicKeyCredentialEntry.Builder {
+    ctor public PublicKeyCredentialEntry.Builder(android.content.Context context, CharSequence username, android.app.PendingIntent pendingIntent, androidx.credentials.provider.BeginGetPublicKeyCredentialOption beginGetPublicKeyCredentialOption);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry build();
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setAutoSelectAllowed(boolean autoSelectAllowed);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setDisplayName(CharSequence? displayName);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setIcon(android.graphics.drawable.Icon icon);
+    method public androidx.credentials.provider.PublicKeyCredentialEntry.Builder setLastUsedTime(java.time.Instant? lastUsedTime);
+  }
+
+  public final class RemoteEntry {
+    ctor public RemoteEntry(android.app.PendingIntent pendingIntent);
+    method public android.app.PendingIntent getPendingIntent();
+    property public final android.app.PendingIntent pendingIntent;
+  }
+
+  public static final class RemoteEntry.Builder {
+    ctor public RemoteEntry.Builder(android.app.PendingIntent pendingIntent);
+    method public androidx.credentials.provider.RemoteEntry build();
+  }
+
+}
+
diff --git a/datastore/datastore-core/lint-baseline.xml b/datastore/datastore-core/lint-baseline.xml
deleted file mode 100644
index b8e7866..0000000
--- a/datastore/datastore-core/lint-baseline.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-beta05" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta05)" variant="all" version="8.1.0-beta05">
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                coordinator.lock {"
-        errorLine2="                ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                        version = coordinator.getVersion()"
-        errorLine2="                                  ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                    coordinator.updateNotifications.conflate().collect {"
-        errorLine2="                    ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `readDataAndUpdateCache` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                            readDataAndUpdateCache(requireLock = true)"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                coordinator.lock { block() }"
-        errorLine2="                ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `readDataFromFileOrDefault` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                    val data = readDataFromFileOrDefault()"
-        errorLine2="                               ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                    Data(data, data.hashCode(), version = coordinator.getVersion())"
-        errorLine2="                                                          ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                    val preLockVersion = coordinator.getVersion()"
-        errorLine2="                                         ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                    coordinator.tryLock { locked ->"
-        errorLine2="                    ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `readDataFromFileOrDefault` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                        val data = readDataFromFileOrDefault()"
-        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                        val version = if (locked) coordinator.getVersion() else preLockVersion"
-        errorLine2="                                                  ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `readDataFromFileOrDefault` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                            newData = readDataFromFileOrDefault()"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getCoordinator` of class `DataStoreImpl` requires synthetic accessor"
-        errorLine1="                            version = coordinator.getVersion()"
-        errorLine2="                                      ~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/datastore/core/DataStoreImpl.kt"/>
-    </issue>
-
-</issues>
diff --git a/health/health-services-client/lint-baseline.xml b/health/health-services-client/lint-baseline.xml
index c9edad9..f42a2d4 100644
--- a/health/health-services-client/lint-baseline.xml
+++ b/health/health-services-client/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-beta02" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta02)" variant="all" version="8.1.0-beta02">
+<issues format="6" by="lint 8.1.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0)" variant="all" version="8.1.0">
 
     <issue
         id="BanParcelableUsage"
@@ -38,78 +38,6 @@
     </issue>
 
     <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mCurrentVersion` of class `Client` requires synthetic accessor"
-        errorLine1="                        mCurrentVersion ="
-        errorLine2="                        ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/ipc/Client.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConnectionConfiguration` of class `Client` requires synthetic accessor"
-        errorLine1="                        return mConnectionConfiguration;"
-        errorLine2="                               ~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/ipc/Client.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConnectionManager` of class `Client` requires synthetic accessor"
-        errorLine1="                            mConnectionManager.scheduleForExecution("
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/ipc/Client.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConnectionConfiguration` of class `Client` requires synthetic accessor"
-        errorLine1="                                    new BaseQueueOperation(mConnectionConfiguration));"
-        errorLine2="                                                           ~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/ipc/Client.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` field `mConnectionManager` of class `Client` requires synthetic accessor"
-        errorLine1="                            mConnectionManager.scheduleForExecution("
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/ipc/Client.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `createQueueOperation` of class `Client` requires synthetic accessor"
-        errorLine1="                                    createQueueOperation(operation, settableFuture));"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/ipc/Client.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` method `getService` of class `Client` requires synthetic accessor"
-        errorLine1="                operation.execute(getService(binder), settableFuture);"
-        errorLine2="                                  ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/ipc/Client.java"/>
-    </issue>
-
-    <issue
-        id="SyntheticAccessor"
-        message="Access to `private` constructor of class `MeasureCallbackStub` requires synthetic accessor"
-        errorLine1="                measureCallbackStub = MeasureCallbackStub(callbackKey, measureCallback)"
-        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/health/services/client/impl/MeasureCallbackStub.kt"/>
-    </issue>
-
-    <issue
         id="LambdaLast"
         message="Functional interface parameters (such as parameter 1, &quot;operation&quot;, in androidx.health.services.client.impl.ipc.Client.executeWithVersionCheck) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions"
         errorLine1="            RemoteFutureOperation&lt;S, R> operation, int minApiVersion) {"
diff --git a/input/input-motionprediction/api/1.0.0-beta03.txt b/input/input-motionprediction/api/1.0.0-beta03.txt
new file mode 100644
index 0000000..b0eef8e
--- /dev/null
+++ b/input/input-motionprediction/api/1.0.0-beta03.txt
@@ -0,0 +1,11 @@
+// Signature format: 4.0
+package androidx.input.motionprediction {
+
+  public interface MotionEventPredictor {
+    method public static androidx.input.motionprediction.MotionEventPredictor newInstance(android.view.View);
+    method public android.view.MotionEvent? predict();
+    method public void record(android.view.MotionEvent);
+  }
+
+}
+
diff --git a/input/input-motionprediction/api/res-1.0.0-beta03.txt b/input/input-motionprediction/api/res-1.0.0-beta03.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/input/input-motionprediction/api/res-1.0.0-beta03.txt
diff --git a/input/input-motionprediction/api/restricted_1.0.0-beta03.txt b/input/input-motionprediction/api/restricted_1.0.0-beta03.txt
new file mode 100644
index 0000000..b0eef8e
--- /dev/null
+++ b/input/input-motionprediction/api/restricted_1.0.0-beta03.txt
@@ -0,0 +1,11 @@
+// Signature format: 4.0
+package androidx.input.motionprediction {
+
+  public interface MotionEventPredictor {
+    method public static androidx.input.motionprediction.MotionEventPredictor newInstance(android.view.View);
+    method public android.view.MotionEvent? predict();
+    method public void record(android.view.MotionEvent);
+  }
+
+}
+
diff --git a/libraryversions.toml b/libraryversions.toml
index 67979eb..9c45f40 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -4,7 +4,7 @@
 ANNOTATION_EXPERIMENTAL = "1.4.0-alpha01"
 APPACTIONS_BUILTINTYPES = "1.0.0-alpha01"
 APPACTIONS_INTERACTION = "1.0.0-alpha01"
-APPCOMPAT = "1.7.0-alpha03"
+APPCOMPAT = "1.7.0-alpha04"
 APPSEARCH = "1.1.0-alpha04"
 ARCH_CORE = "2.3.0-alpha01"
 ASYNCLAYOUTINFLATER = "1.1.0-alpha02"
@@ -12,38 +12,38 @@
 BENCHMARK = "1.2.0-beta03"
 BIOMETRIC = "1.2.0-alpha06"
 BLUETOOTH = "1.0.0-alpha01"
-BROWSER = "1.6.0-rc01"
+BROWSER = "1.7.0-alpha01"
 BUILDSRC_TESTS = "1.0.0-alpha01"
-CAMERA = "1.3.0-beta02"
+CAMERA = "1.3.0-beta03"
 CAMERA_PIPE = "1.0.0-alpha01"
 CARDVIEW = "1.1.0-alpha01"
 CAR_APP = "1.4.0-beta01"
-COLLECTION = "1.3.0-alpha05"
-COMPOSE = "1.6.0-alpha02"
+COLLECTION = "1.3.0-beta01"
+COMPOSE = "1.6.0-alpha03"
 COMPOSE_COMPILER = "1.5.1"
 COMPOSE_MATERIAL3 = "1.2.0-alpha05"
 COMPOSE_MATERIAL3_ADAPTIVE = "1.0.0-alpha01"
 COMPOSE_RUNTIME_TRACING = "1.0.0-alpha03"
-CONSTRAINTLAYOUT = "2.2.0-alpha11"
-CONSTRAINTLAYOUT_COMPOSE = "1.1.0-alpha11"
-CONSTRAINTLAYOUT_CORE = "1.1.0-alpha11"
+CONSTRAINTLAYOUT = "2.2.0-alpha12"
+CONSTRAINTLAYOUT_COMPOSE = "1.1.0-alpha12"
+CONSTRAINTLAYOUT_CORE = "1.1.0-alpha12"
 CONTENTPAGER = "1.1.0-alpha01"
 COORDINATORLAYOUT = "1.3.0-alpha01"
 CORE = "1.12.0-rc01"
 CORE_ANIMATION = "1.0.0-rc01"
 CORE_ANIMATION_TESTING = "1.0.0-rc01"
 CORE_APPDIGEST = "1.0.0-alpha01"
-CORE_GOOGLE_SHORTCUTS = "1.2.0-alpha01"
+CORE_GOOGLE_SHORTCUTS = "1.2.0-alpha02"
 CORE_HAPTICS = "1.0.0-alpha01"
-CORE_I18N = "1.0.0-alpha01"
-CORE_LOCATION_ALTITUDE = "1.0.0-alpha01"
+CORE_I18N = "1.0.0-alpha02"
+CORE_LOCATION_ALTITUDE = "1.0.0-alpha02"
 CORE_PERFORMANCE = "1.0.0-alpha03"
-CORE_REMOTEVIEWS = "1.0.0-rc01"
+CORE_REMOTEVIEWS = "1.1.0-alpha01"
 CORE_ROLE = "1.2.0-alpha01"
 CORE_SPLASHSCREEN = "1.1.0-alpha01"
 CORE_TELECOM = "1.0.0-alpha01"
-CORE_UWB = "1.0.0-alpha06"
-CREDENTIALS = "1.2.0-rc01"
+CORE_UWB = "1.0.0-alpha07"
+CREDENTIALS = "1.2.0-beta02"
 CURSORADAPTER = "1.1.0-alpha01"
 CUSTOMVIEW = "1.2.0-alpha03"
 CUSTOMVIEW_POOLINGCONTAINER = "1.1.0-alpha01"
@@ -54,7 +54,7 @@
 DYNAMICANIMATION = "1.1.0-alpha04"
 DYNAMICANIMATION_KTX = "1.0.0-alpha04"
 EMOJI = "1.2.0-alpha03"
-EMOJI2 = "1.4.0-rc01"
+EMOJI2 = "1.5.0-alpha01"
 ENTERPRISE = "1.1.0-rc01"
 EXIFINTERFACE = "1.4.0-alpha01"
 FRAGMENT = "1.7.0-alpha02"
@@ -64,17 +64,17 @@
 GLANCE_TEMPLATE = "1.0.0-alpha06"
 GLANCE_WEAR_TILES = "1.0.0-alpha06"
 GRAPHICS_CORE = "1.0.0-alpha04"
-GRAPHICS_PATH = "1.0.0-alpha02"
 GRAPHICS_FILTERS = "1.0.0-alpha01"
+GRAPHICS_PATH = "1.0.0-alpha02"
 GRAPHICS_SHAPES = "1.0.0-alpha03"
 GRIDLAYOUT = "1.1.0-beta02"
 HEALTH_CONNECT = "1.1.0-alpha04"
 HEALTH_SERVICES_CLIENT = "1.1.0-alpha01"
-HEIFWRITER = "1.1.0-alpha02"
+HEIFWRITER = "1.1.0-alpha03"
 HILT = "1.1.0-alpha01"
 HILT_NAVIGATION = "1.1.0-alpha03"
 HILT_NAVIGATION_COMPOSE = "1.1.0-alpha02"
-INPUT_MOTIONPREDICTION = "1.0.0-beta02"
+INPUT_MOTIONPREDICTION = "1.0.0-beta03"
 INSPECTION = "1.0.0"
 INTERPOLATOR = "1.1.0-alpha01"
 JAVASCRIPTENGINE = "1.0.0-alpha06"
@@ -86,14 +86,14 @@
 LEANBACK_TAB = "1.1.0-beta01"
 LEGACY = "1.1.0-alpha01"
 LIBYUV = "0.1.0-dev01"
-LIFECYCLE = "2.7.0-alpha01"
+LIFECYCLE = "2.7.0-alpha02"
 LIFECYCLE_EXTENSIONS = "2.2.0"
 LOADER = "1.2.0-alpha01"
 MEDIA = "1.7.0-beta01"
 MEDIA2 = "1.3.0-alpha01"
 MEDIAROUTER = "1.6.0-beta01"
 METRICS = "1.0.0-alpha05"
-NAVIGATION = "2.7.0-rc01"
+NAVIGATION = "2.8.0-alpha01"
 PAGING = "3.3.0-alpha01"
 PALETTE = "1.1.0-alpha01"
 PERCENTLAYOUT = "1.1.0-alpha01"
@@ -101,9 +101,9 @@
 PRINT = "1.1.0-beta01"
 PRIVACYSANDBOX_ADS = "1.1.0-alpha01"
 PRIVACYSANDBOX_PLUGINS = "1.0.0-alpha02"
-PRIVACYSANDBOX_SDKRUNTIME = "1.0.0-alpha07"
+PRIVACYSANDBOX_SDKRUNTIME = "1.0.0-alpha08"
 PRIVACYSANDBOX_TOOLS = "1.0.0-alpha05"
-PRIVACYSANDBOX_UI = "1.0.0-alpha04"
+PRIVACYSANDBOX_UI = "1.0.0-alpha05"
 PROFILEINSTALLER = "1.4.0-alpha01"
 RECOMMENDATION = "1.1.0-alpha01"
 RECYCLERVIEW = "1.4.0-alpha01"
@@ -131,12 +131,12 @@
 SWIPEREFRESHLAYOUT = "1.2.0-alpha01"
 TESTEXT = "1.0.0-alpha02"
 TESTSCREENSHOT = "1.0.0-alpha01"
-TEST_UIAUTOMATOR = "2.3.0-alpha04"
+TEST_UIAUTOMATOR = "2.3.0-alpha05"
 TEXT = "1.0.0-alpha01"
 TRACING = "1.3.0-alpha02"
 TRACING_PERFETTO = "1.0.0-beta01"
 TRANSITION = "1.5.0-alpha01"
-TV = "1.0.0-alpha08"
+TV = "1.0.0-alpha09"
 TVPROVIDER = "1.1.0-alpha02"
 VECTORDRAWABLE = "1.2.0-rc01"
 VECTORDRAWABLE_ANIMATED = "1.2.0-rc01"
@@ -145,8 +145,8 @@
 VIEWPAGER = "1.1.0-alpha02"
 VIEWPAGER2 = "1.1.0-beta03"
 WEAR = "1.3.0-rc01"
-WEAR_COMPOSE = "1.3.0-alpha02"
-WEAR_COMPOSE_MATERIAL3 = "1.0.0-alpha08"
+WEAR_COMPOSE = "1.3.0-alpha03"
+WEAR_COMPOSE_MATERIAL3 = "1.0.0-alpha09"
 WEAR_INPUT = "1.2.0-alpha03"
 WEAR_INPUT_TESTING = "1.2.0-alpha03"
 WEAR_ONGOING = "1.1.0-alpha01"
@@ -156,11 +156,11 @@
 WEAR_TILES = "1.3.0-alpha01"
 WEAR_WATCHFACE = "1.2.0-alpha09"
 WEBKIT = "1.8.0-rc01"
-WINDOW = "1.2.0-beta01"
+WINDOW = "1.2.0-beta02"
 WINDOW_EXTENSIONS = "1.2.0-rc01"
 WINDOW_EXTENSIONS_CORE = "1.1.0-alpha01"
 WINDOW_SIDECAR = "1.0.0-rc01"
-WORK = "2.9.0-alpha02"
+WORK = "2.9.0-alpha03"
 
 [groups]
 ACTIVITY = { group = "androidx.activity", atomicGroupVersion = "versions.ACTIVITY" }
diff --git a/mediarouter/mediarouter/api/1.6.0-beta01.txt b/mediarouter/mediarouter/api/1.6.0-beta01.txt
index 00e0b0a..bc026c9 100644
--- a/mediarouter/mediarouter/api/1.6.0-beta01.txt
+++ b/mediarouter/mediarouter/api/1.6.0-beta01.txt
@@ -572,7 +572,7 @@
   public final class RouteListingPreference {
     method public java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!> getItems();
     method public android.content.ComponentName? getLinkedItemComponentName();
-    method public boolean getUseSystemOrdering();
+    method public boolean isSystemOrderingEnabled();
     field public static final String ACTION_TRANSFER_MEDIA = "android.media.action.TRANSFER_MEDIA";
     field public static final String EXTRA_ROUTE_ID = "android.media.extra.ROUTE_ID";
   }
@@ -582,7 +582,7 @@
     method public androidx.mediarouter.media.RouteListingPreference build();
     method public androidx.mediarouter.media.RouteListingPreference.Builder setItems(java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!>);
     method public androidx.mediarouter.media.RouteListingPreference.Builder setLinkedItemComponentName(android.content.ComponentName?);
-    method public androidx.mediarouter.media.RouteListingPreference.Builder setUseSystemOrdering(boolean);
+    method public androidx.mediarouter.media.RouteListingPreference.Builder setSystemOrderingEnabled(boolean);
   }
 
   public static final class RouteListingPreference.Item {
diff --git a/mediarouter/mediarouter/api/current.ignore b/mediarouter/mediarouter/api/current.ignore
new file mode 100644
index 0000000..e3f190d
--- /dev/null
+++ b/mediarouter/mediarouter/api/current.ignore
@@ -0,0 +1,11 @@
+// Baseline format: 1.0
+AddedMethod: androidx.mediarouter.media.RouteListingPreference#isSystemOrderingEnabled():
+    Added method androidx.mediarouter.media.RouteListingPreference.isSystemOrderingEnabled()
+AddedMethod: androidx.mediarouter.media.RouteListingPreference.Builder#setSystemOrderingEnabled(boolean):
+    Added method androidx.mediarouter.media.RouteListingPreference.Builder.setSystemOrderingEnabled(boolean)
+
+
+RemovedMethod: androidx.mediarouter.media.RouteListingPreference#getUseSystemOrdering():
+    Removed method androidx.mediarouter.media.RouteListingPreference.getUseSystemOrdering()
+RemovedMethod: androidx.mediarouter.media.RouteListingPreference.Builder#setUseSystemOrdering(boolean):
+    Removed method androidx.mediarouter.media.RouteListingPreference.Builder.setUseSystemOrdering(boolean)
diff --git a/mediarouter/mediarouter/api/current.txt b/mediarouter/mediarouter/api/current.txt
index 00e0b0a..bc026c9 100644
--- a/mediarouter/mediarouter/api/current.txt
+++ b/mediarouter/mediarouter/api/current.txt
@@ -572,7 +572,7 @@
   public final class RouteListingPreference {
     method public java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!> getItems();
     method public android.content.ComponentName? getLinkedItemComponentName();
-    method public boolean getUseSystemOrdering();
+    method public boolean isSystemOrderingEnabled();
     field public static final String ACTION_TRANSFER_MEDIA = "android.media.action.TRANSFER_MEDIA";
     field public static final String EXTRA_ROUTE_ID = "android.media.extra.ROUTE_ID";
   }
@@ -582,7 +582,7 @@
     method public androidx.mediarouter.media.RouteListingPreference build();
     method public androidx.mediarouter.media.RouteListingPreference.Builder setItems(java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!>);
     method public androidx.mediarouter.media.RouteListingPreference.Builder setLinkedItemComponentName(android.content.ComponentName?);
-    method public androidx.mediarouter.media.RouteListingPreference.Builder setUseSystemOrdering(boolean);
+    method public androidx.mediarouter.media.RouteListingPreference.Builder setSystemOrderingEnabled(boolean);
   }
 
   public static final class RouteListingPreference.Item {
diff --git a/mediarouter/mediarouter/api/restricted_1.6.0-beta01.txt b/mediarouter/mediarouter/api/restricted_1.6.0-beta01.txt
index 00e0b0a..bc026c9 100644
--- a/mediarouter/mediarouter/api/restricted_1.6.0-beta01.txt
+++ b/mediarouter/mediarouter/api/restricted_1.6.0-beta01.txt
@@ -572,7 +572,7 @@
   public final class RouteListingPreference {
     method public java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!> getItems();
     method public android.content.ComponentName? getLinkedItemComponentName();
-    method public boolean getUseSystemOrdering();
+    method public boolean isSystemOrderingEnabled();
     field public static final String ACTION_TRANSFER_MEDIA = "android.media.action.TRANSFER_MEDIA";
     field public static final String EXTRA_ROUTE_ID = "android.media.extra.ROUTE_ID";
   }
@@ -582,7 +582,7 @@
     method public androidx.mediarouter.media.RouteListingPreference build();
     method public androidx.mediarouter.media.RouteListingPreference.Builder setItems(java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!>);
     method public androidx.mediarouter.media.RouteListingPreference.Builder setLinkedItemComponentName(android.content.ComponentName?);
-    method public androidx.mediarouter.media.RouteListingPreference.Builder setUseSystemOrdering(boolean);
+    method public androidx.mediarouter.media.RouteListingPreference.Builder setSystemOrderingEnabled(boolean);
   }
 
   public static final class RouteListingPreference.Item {
diff --git a/mediarouter/mediarouter/api/restricted_current.ignore b/mediarouter/mediarouter/api/restricted_current.ignore
new file mode 100644
index 0000000..e3f190d
--- /dev/null
+++ b/mediarouter/mediarouter/api/restricted_current.ignore
@@ -0,0 +1,11 @@
+// Baseline format: 1.0
+AddedMethod: androidx.mediarouter.media.RouteListingPreference#isSystemOrderingEnabled():
+    Added method androidx.mediarouter.media.RouteListingPreference.isSystemOrderingEnabled()
+AddedMethod: androidx.mediarouter.media.RouteListingPreference.Builder#setSystemOrderingEnabled(boolean):
+    Added method androidx.mediarouter.media.RouteListingPreference.Builder.setSystemOrderingEnabled(boolean)
+
+
+RemovedMethod: androidx.mediarouter.media.RouteListingPreference#getUseSystemOrdering():
+    Removed method androidx.mediarouter.media.RouteListingPreference.getUseSystemOrdering()
+RemovedMethod: androidx.mediarouter.media.RouteListingPreference.Builder#setUseSystemOrdering(boolean):
+    Removed method androidx.mediarouter.media.RouteListingPreference.Builder.setUseSystemOrdering(boolean)
diff --git a/mediarouter/mediarouter/api/restricted_current.txt b/mediarouter/mediarouter/api/restricted_current.txt
index 00e0b0a..bc026c9 100644
--- a/mediarouter/mediarouter/api/restricted_current.txt
+++ b/mediarouter/mediarouter/api/restricted_current.txt
@@ -572,7 +572,7 @@
   public final class RouteListingPreference {
     method public java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!> getItems();
     method public android.content.ComponentName? getLinkedItemComponentName();
-    method public boolean getUseSystemOrdering();
+    method public boolean isSystemOrderingEnabled();
     field public static final String ACTION_TRANSFER_MEDIA = "android.media.action.TRANSFER_MEDIA";
     field public static final String EXTRA_ROUTE_ID = "android.media.extra.ROUTE_ID";
   }
@@ -582,7 +582,7 @@
     method public androidx.mediarouter.media.RouteListingPreference build();
     method public androidx.mediarouter.media.RouteListingPreference.Builder setItems(java.util.List<androidx.mediarouter.media.RouteListingPreference.Item!>);
     method public androidx.mediarouter.media.RouteListingPreference.Builder setLinkedItemComponentName(android.content.ComponentName?);
-    method public androidx.mediarouter.media.RouteListingPreference.Builder setUseSystemOrdering(boolean);
+    method public androidx.mediarouter.media.RouteListingPreference.Builder setSystemOrderingEnabled(boolean);
   }
 
   public static final class RouteListingPreference.Item {
diff --git a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterTest.java b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterTest.java
index 4f37053..6f7b964 100644
--- a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterTest.java
+++ b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/MediaRouterTest.java
@@ -279,13 +279,13 @@
     @UiThreadTest
     public void testReset() {
         assertNotNull(mRouter);
-        assertNotNull(MediaRouter.getGlobalRouter());
+        assertNotNull(MediaRouter.sGlobal);
 
         MediaRouterTestHelper.resetMediaRouter();
-        assertNull(MediaRouter.getGlobalRouter());
+        assertNull(MediaRouter.sGlobal);
 
         MediaRouter newInstance = MediaRouter.getInstance(mContext);
-        assertNotNull(MediaRouter.getGlobalRouter());
+        assertNotNull(MediaRouter.sGlobal);
         assertFalse(newInstance.getRoutes().isEmpty());
     }
 
diff --git a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/RouteListingPreferenceTest.java b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/RouteListingPreferenceTest.java
index e99c4e9..5bcc40d 100644
--- a/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/RouteListingPreferenceTest.java
+++ b/mediarouter/mediarouter/src/androidTest/java/androidx/mediarouter/media/RouteListingPreferenceTest.java
@@ -93,7 +93,7 @@
                 new RouteListingPreference.Builder()
                         .setItems(Collections.singletonList(fakeRlpItem))
                         .setLinkedItemComponentName(FAKE_COMPONENT_NAME)
-                        .setUseSystemOrdering(false)
+                        .setSystemOrderingEnabled(false)
                         .build();
         android.media.RouteListingPreference platformRlp =
                 fakeRouteListingPreference.toPlatformRouteListingPreference();
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java
index b18543e..e2f4e1f 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/MediaRouteChooserDialog.java
@@ -19,7 +19,10 @@
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED;
 import static androidx.mediarouter.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
@@ -98,6 +101,7 @@
     private ProgressBar mSearchingProgressBar;
     private ListView mListView;
     private RouteAdapter mAdapter;
+    private ScreenOnOffReceiver mScreenOnOffReceiver;
 
     private boolean mAttachedToWindow;
     private long mLastUpdateTime;
@@ -140,6 +144,7 @@
 
         mRouter = MediaRouter.getInstance(context);
         mCallback = new MediaRouterCallback();
+        mScreenOnOffReceiver = new ScreenOnOffReceiver();
     }
 
     /**
@@ -249,6 +254,27 @@
         mListView.setEmptyView(findViewById(android.R.id.empty));
 
         updateLayout();
+
+        registerBroadcastReceiver();
+    }
+
+    private void registerBroadcastReceiver() {
+        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
+        getContext().registerReceiver(mScreenOnOffReceiver, filter);
+    }
+
+    @Override
+    public void dismiss() {
+        unregisterBroadcastReceiver();
+        super.dismiss();
+    }
+
+    private void unregisterBroadcastReceiver() {
+        try {
+            getContext().unregisterReceiver(mScreenOnOffReceiver);
+        } catch (IllegalArgumentException e) {
+            // May already be unregistered; ignore.
+        }
     }
 
     /**
@@ -563,4 +589,13 @@
             return lhs.getName().compareToIgnoreCase(rhs.getName());
         }
     }
+
+    final class ScreenOnOffReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {
+                dismiss();
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
index 3091883..00c0ad0 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/MediaRouter.java
@@ -142,10 +142,7 @@
      */
     public static final int UNSELECT_REASON_ROUTE_CHANGED = 3;
 
-    // Maintains global media router state for the process.
-    // This field is initialized lazily when it is necessary.
-    // Access this field directly only when you don't want to initialize it.
-    // Use {@link #getGlobalRouter()} to get a valid instance.
+    /** Maintains global media router state for the process. */
     static GlobalMediaRouter sGlobal;
 
     // Context-bound state of the media router.
@@ -326,14 +323,14 @@
         sGlobal = null;
     }
 
-    /**
-     * Gets the initialized global router.
-     */
+    /** Gets the initialized global router. */
+    @RestrictTo(LIBRARY_GROUP)
+    @NonNull
     static GlobalMediaRouter getGlobalRouter() {
         if (sGlobal == null) {
-            return null;
+            throw new IllegalStateException(
+                    "getGlobalRouter cannot be called when sGlobal is " + "null");
         }
-        sGlobal.ensureInitialized();
         return sGlobal;
     }
 
@@ -347,9 +344,7 @@
     @NonNull
     public List<RouteInfo> getRoutes() {
         checkCallingThread();
-        GlobalMediaRouter globalMediaRouter = getGlobalRouter();
-        return globalMediaRouter == null ? Collections.emptyList() :
-                globalMediaRouter.getRoutes();
+        return getGlobalRouter().getRoutes();
     }
 
     /**
@@ -362,9 +357,7 @@
     @NonNull
     public List<ProviderInfo> getProviders() {
         checkCallingThread();
-        GlobalMediaRouter globalMediaRouter = getGlobalRouter();
-        return globalMediaRouter == null ? Collections.emptyList() :
-                globalMediaRouter.getProviders();
+        return getGlobalRouter().getProviders();
     }
 
     /**
@@ -395,8 +388,7 @@
     @Nullable
     public RouteInfo getBluetoothRoute() {
         checkCallingThread();
-        GlobalMediaRouter globalMediaRouter = getGlobalRouter();
-        return globalMediaRouter == null ? null : globalMediaRouter.getBluetoothRoute();
+        return getGlobalRouter().getBluetoothRoute();
     }
 
     /**
@@ -980,8 +972,7 @@
     @Nullable
     public MediaRouterParams getRouterParams() {
         checkCallingThread();
-        GlobalMediaRouter globalMediaRouter = getGlobalRouter();
-        return globalMediaRouter == null ? null : globalMediaRouter.getRouterParams();
+        return getGlobalRouter().getRouterParams();
     }
 
     /**
@@ -1079,8 +1070,7 @@
      * Returns whether transferring media from remote to local is enabled.
      */
     static boolean isTransferToLocalEnabled() {
-        GlobalMediaRouter globalMediaRouter = getGlobalRouter();
-        return globalMediaRouter != null && globalMediaRouter.isTransferToLocalEnabled();
+        return getGlobalRouter().isTransferToLocalEnabled();
     }
 
     /**
@@ -1534,7 +1524,7 @@
             }
             checkCallingThread();
 
-            for (IntentFilter intentFilter: mControlFilters) {
+            for (IntentFilter intentFilter : mControlFilters) {
                 if (intentFilter.hasCategory(category)) {
                     return true;
                 }
@@ -1572,7 +1562,7 @@
             }
             checkCallingThread();
 
-            for (IntentFilter intentFilter: mControlFilters) {
+            for (IntentFilter intentFilter : mControlFilters) {
                 if (intentFilter.hasCategory(category) && intentFilter.hasAction(action)) {
                     return true;
                 }
@@ -1603,7 +1593,7 @@
             checkCallingThread();
 
             ContentResolver contentResolver = getGlobalRouter().getContentResolver();
-            for (IntentFilter intentFilter: mControlFilters) {
+            for (IntentFilter intentFilter : mControlFilters) {
                 if (intentFilter.match(contentResolver, intent, true, TAG) >= 0) {
                     return true;
                 }
@@ -2264,7 +2254,7 @@
         }
 
         RouteInfo findRouteByDescriptorId(String id) {
-            for (RouteInfo route: mRoutes) {
+            for (RouteInfo route : mRoutes) {
                 if (route.mDescriptorId.equals(id)) {
                     return route;
                 }
@@ -2561,7 +2551,6 @@
             implements SystemMediaRouteProvider.SyncCallback,
             RegisteredMediaRouteProviderWatcher.Callback {
         final Context mApplicationContext;
-        private boolean mIsInitialized;
 
         SystemMediaRouteProvider mSystemProvider;
         @VisibleForTesting
@@ -2625,27 +2614,15 @@
                     ActivityManagerCompat.isLowRamDevice(
                             (ActivityManager)
                                     applicationContext.getSystemService(Context.ACTIVITY_SERVICE));
-        }
 
-        @SuppressLint({"NewApi", "SyntheticAccessor"})
-        void ensureInitialized() {
-            if (mIsInitialized) {
-                return;
-            }
-            mIsInitialized = true;
-
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-                mTransferReceiverDeclared = MediaTransferReceiver.isDeclared(mApplicationContext);
-            } else {
-                mTransferReceiverDeclared = false;
-            }
-
-            if (mTransferReceiverDeclared) {
-                mMr2Provider = new MediaRoute2Provider(
-                        mApplicationContext, new Mr2ProviderCallback());
-            } else {
-                mMr2Provider = null;
-            }
+            mTransferReceiverDeclared =
+                    Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
+                            && MediaTransferReceiver.isDeclared(mApplicationContext);
+            mMr2Provider =
+                    Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && mTransferReceiverDeclared
+                            ? new MediaRoute2Provider(
+                                    mApplicationContext, new Mr2ProviderCallback())
+                            : null;
 
             // Add the system media route provider for interoperating with
             // the framework media router.  This one is special and receives
@@ -2655,7 +2632,6 @@
         }
 
         private void start() {
-            // Using lambda would break some apps.
             mActiveScanThrottlingHelper =
                     new MediaRouterActiveScanThrottlingHelper(this::updateDiscoveryRequest);
             addProvider(mSystemProvider, /* treatRouteDescriptorIdsAsUnique= */ true);
@@ -2671,15 +2647,13 @@
         }
 
         void reset() {
-            if (!mIsInitialized) {
-                return;
-            }
-            mRegisteredProviderWatcher.stop();
             mActiveScanThrottlingHelper.reset();
 
             setRouteListingPreference(null);
-
             setMediaSessionCompat(null);
+
+            mRegisteredProviderWatcher.stop();
+
             for (RemoteControlClientRecord record : mRemoteControlClients) {
                 record.disconnect();
             }
@@ -3036,7 +3010,7 @@
             }
 
             // Notify providers.
-            for (ProviderInfo providerInfo: mProviders) {
+            for (ProviderInfo providerInfo : mProviders) {
                 MediaRouteProvider provider = providerInfo.mProviderInstance;
                 if (provider == mMr2Provider) {
                     // MediaRoute2Provider is handled by updateMr2ProviderDiscoveryRequest().
@@ -3167,7 +3141,7 @@
         }
 
         private ProviderInfo findProviderInfo(MediaRouteProvider providerInstance) {
-            for (ProviderInfo providerInfo: mProviders) {
+            for (ProviderInfo providerInfo : mProviders) {
                 if (providerInfo.mProviderInstance == providerInstance) {
                     return providerInfo;
                 }
@@ -3433,31 +3407,7 @@
                     && route.mDescriptorId.equals(SystemMediaRouteProvider.DEFAULT_ROUTE_ID);
         }
 
-        void selectRouteInternal(@NonNull RouteInfo route,
-                @UnselectReason int unselectReason) {
-            // TODO: Remove the following logging when no longer needed.
-            if (sGlobal == null || (mBluetoothRoute != null && route.isDefault())) {
-                final StackTraceElement[] callStack = Thread.currentThread().getStackTrace();
-                StringBuilder sb = new StringBuilder();
-                // callStack[3] is the caller of this method.
-                for (int i = 3; i < callStack.length; i++) {
-                    StackTraceElement caller = callStack[i];
-                    sb.append(caller.getClassName())
-                            .append(".")
-                            .append(caller.getMethodName())
-                            .append(":")
-                            .append(caller.getLineNumber())
-                            .append("  ");
-                }
-                if (sGlobal == null) {
-                    Log.w(TAG, "setSelectedRouteInternal is called while sGlobal is null: pkgName="
-                            + mApplicationContext.getPackageName() + ", callers=" + sb);
-                } else {
-                    Log.w(TAG, "Default route is selected while a BT route is available: pkgName="
-                            + mApplicationContext.getPackageName() + ", callers=" + sb);
-                }
-            }
-
+        void selectRouteInternal(@NonNull RouteInfo route, @UnselectReason int unselectReason) {
             if (mSelectedRoute == route) {
                 return;
             }
@@ -3719,7 +3669,7 @@
                     mPlaybackInfo.volumeControlId = null;
                 }
 
-                for (RemoteControlClientRecord remoteControlClientRecord: mRemoteControlClients) {
+                for (RemoteControlClientRecord remoteControlClientRecord : mRemoteControlClients) {
                     remoteControlClientRecord.updatePlaybackInfo();
                 }
                 if (mMediaSession != null) {
@@ -3832,32 +3782,30 @@
                         mVpCompat.setCurrentVolume(current);
                     } else {
                         // Otherwise create a new provider and update
-                        mVpCompat = new VolumeProviderCompat(controlType, max, current,
-                                volumeControlId) {
-                            @Override
-                            public void onSetVolumeTo(final int volume) {
-                                mCallbackHandler.post(new Runnable() {
+                        mVpCompat =
+                                new VolumeProviderCompat(
+                                        controlType, max, current, volumeControlId) {
                                     @Override
-                                    public void run() {
-                                        if (mSelectedRoute != null) {
-                                            mSelectedRoute.requestSetVolume(volume);
-                                        }
+                                    public void onSetVolumeTo(final int volume) {
+                                        mCallbackHandler.post(
+                                                () -> {
+                                                    if (mSelectedRoute != null) {
+                                                        mSelectedRoute.requestSetVolume(volume);
+                                                    }
+                                                });
                                     }
-                                });
-                            }
 
-                            @Override
-                            public void onAdjustVolume(final int direction) {
-                                mCallbackHandler.post(new Runnable() {
                                     @Override
-                                    public void run() {
-                                        if (mSelectedRoute != null) {
-                                            mSelectedRoute.requestUpdateVolume(direction);
-                                        }
+                                    public void onAdjustVolume(final int direction) {
+                                        mCallbackHandler.post(
+                                                () -> {
+                                                    if (mSelectedRoute != null) {
+                                                        mSelectedRoute.requestUpdateVolume(
+                                                                direction);
+                                                    }
+                                                });
                                     }
-                                });
-                            }
-                        };
+                                };
                         mMsCompat.setPlaybackToRemote(mVpCompat);
                     }
                 }
@@ -3982,9 +3930,8 @@
                         }
                     }
 
-                    final int callbackCount = mTempCallbackRecords.size();
-                    for (int i = 0; i < callbackCount; i++) {
-                        invokeCallback(mTempCallbackRecords.get(i), what, obj, arg);
+                    for (CallbackRecord tempCallbackRecord : mTempCallbackRecords) {
+                        invokeCallback(tempCallbackRecord, what, obj, arg);
                     }
                 } finally {
                     mTempCallbackRecords.clear();
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RouteListingPreference.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RouteListingPreference.java
index 9f9735b..5ea089f 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RouteListingPreference.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/media/RouteListingPreference.java
@@ -73,13 +73,13 @@
     public static final String EXTRA_ROUTE_ID = android.media.RouteListingPreference.EXTRA_ROUTE_ID;
 
     @NonNull private final List<RouteListingPreference.Item> mItems;
-    private final boolean mUseSystemOrdering;
+    private final boolean mIsSystemOrderingEnabled;
     @Nullable private final ComponentName mLinkedItemComponentName;
 
     // Must be package private to avoid a synthetic accessor for the builder.
     /* package */ RouteListingPreference(RouteListingPreference.Builder builder) {
         mItems = builder.mItems;
-        mUseSystemOrdering = builder.mUseSystemOrdering;
+        mIsSystemOrderingEnabled = builder.mIsSystemOrderingEnabled;
         mLinkedItemComponentName = builder.mLinkedItemComponentName;
     }
 
@@ -100,8 +100,8 @@
      * <p>The system's ordering strategy is implementation-dependent, but may take into account each
      * route's recency or frequency of use in order to rank them.
      */
-    public boolean getUseSystemOrdering() {
-        return mUseSystemOrdering;
+    public boolean isSystemOrderingEnabled() {
+        return mIsSystemOrderingEnabled;
     }
 
     /**
@@ -134,13 +134,13 @@
         }
         RouteListingPreference that = (RouteListingPreference) other;
         return mItems.equals(that.mItems)
-                && mUseSystemOrdering == that.mUseSystemOrdering
+                && mIsSystemOrderingEnabled == that.mIsSystemOrderingEnabled
                 && Objects.equals(mLinkedItemComponentName, that.mLinkedItemComponentName);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mItems, mUseSystemOrdering, mLinkedItemComponentName);
+        return Objects.hash(mItems, mIsSystemOrderingEnabled, mLinkedItemComponentName);
     }
 
     // Internal methods.
@@ -158,13 +158,13 @@
 
         // The builder fields must be package private to avoid synthetic accessors.
         /* package */ List<RouteListingPreference.Item> mItems;
-        /* package */ boolean mUseSystemOrdering;
+        /* package */ boolean mIsSystemOrderingEnabled;
         /* package */ ComponentName mLinkedItemComponentName;
 
         /** Creates a new instance with default values (documented in the setters). */
         public Builder() {
             mItems = Collections.emptyList();
-            mUseSystemOrdering = true;
+            mIsSystemOrderingEnabled = true;
         }
 
         /**
@@ -180,15 +180,14 @@
         }
 
         /**
-         * See {@link #getUseSystemOrdering()}
+         * See {@link #isSystemOrderingEnabled()}
          *
          * <p>The default value is {@code true}.
          */
-        // Lint requires "isUseSystemOrdering", but "getUseSystemOrdering" is a better name.
-        @SuppressWarnings("MissingGetterMatchingBuilder")
         @NonNull
-        public RouteListingPreference.Builder setUseSystemOrdering(boolean useSystemOrdering) {
-            mUseSystemOrdering = useSystemOrdering;
+        public RouteListingPreference.Builder setSystemOrderingEnabled(
+                boolean systemOrderingEnabled) {
+            mIsSystemOrderingEnabled = systemOrderingEnabled;
             return this;
         }
 
@@ -576,7 +575,7 @@
             return new android.media.RouteListingPreference.Builder()
                     .setItems(platformRlpItems)
                     .setLinkedItemComponentName(routeListingPreference.getLinkedItemComponentName())
-                    .setUseSystemOrdering(routeListingPreference.getUseSystemOrdering())
+                    .setUseSystemOrdering(routeListingPreference.isSystemOrderingEnabled())
                     .build();
         }
 
diff --git a/privacysandbox/ads/ads-adservices/api/current.txt b/privacysandbox/ads/ads-adservices/api/current.txt
index 6a4905b..7af040f 100644
--- a/privacysandbox/ads/ads-adservices/api/current.txt
+++ b/privacysandbox/ads/ads-adservices/api/current.txt
@@ -100,20 +100,13 @@
 package androidx.privacysandbox.ads.adservices.common {
 
   public final class AdData {
-    ctor public AdData(optional android.net.Uri renderUri, optional String metadata);
+    ctor public AdData(android.net.Uri renderUri, String metadata);
     method public String getMetadata();
     method public android.net.Uri getRenderUri();
     property public final String metadata;
     property public final android.net.Uri renderUri;
   }
 
-  @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public static final class AdData.Builder {
-    ctor public AdData.Builder();
-    method public androidx.privacysandbox.ads.adservices.common.AdData build();
-    method public androidx.privacysandbox.ads.adservices.common.AdData.Builder setMetadata(String metadata);
-    method public androidx.privacysandbox.ads.adservices.common.AdData.Builder setRenderUri(android.net.Uri renderUri);
-  }
-
   public final class AdSelectionSignals {
     ctor public AdSelectionSignals(String signals);
     method public String getSignals();
@@ -198,20 +191,13 @@
   }
 
   public final class TrustedBiddingData {
-    ctor public TrustedBiddingData(optional android.net.Uri trustedBiddingUri, optional java.util.List<java.lang.String> trustedBiddingKeys);
+    ctor public TrustedBiddingData(android.net.Uri trustedBiddingUri, java.util.List<java.lang.String> trustedBiddingKeys);
     method public java.util.List<java.lang.String> getTrustedBiddingKeys();
     method public android.net.Uri getTrustedBiddingUri();
     property public final java.util.List<java.lang.String> trustedBiddingKeys;
     property public final android.net.Uri trustedBiddingUri;
   }
 
-  @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public static final class TrustedBiddingData.Builder {
-    ctor public TrustedBiddingData.Builder();
-    method public androidx.privacysandbox.ads.adservices.customaudience.TrustedBiddingData build();
-    method public androidx.privacysandbox.ads.adservices.customaudience.TrustedBiddingData.Builder setTrustedBiddingKeys(java.util.List<java.lang.String> trustedBiddingKeys);
-    method public androidx.privacysandbox.ads.adservices.customaudience.TrustedBiddingData.Builder setTrustedBiddingUri(android.net.Uri trustedBiddingUri);
-  }
-
 }
 
 package androidx.privacysandbox.ads.adservices.measurement {
diff --git a/privacysandbox/ads/ads-adservices/api/restricted_current.txt b/privacysandbox/ads/ads-adservices/api/restricted_current.txt
index 6a4905b..7af040f 100644
--- a/privacysandbox/ads/ads-adservices/api/restricted_current.txt
+++ b/privacysandbox/ads/ads-adservices/api/restricted_current.txt
@@ -100,20 +100,13 @@
 package androidx.privacysandbox.ads.adservices.common {
 
   public final class AdData {
-    ctor public AdData(optional android.net.Uri renderUri, optional String metadata);
+    ctor public AdData(android.net.Uri renderUri, String metadata);
     method public String getMetadata();
     method public android.net.Uri getRenderUri();
     property public final String metadata;
     property public final android.net.Uri renderUri;
   }
 
-  @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public static final class AdData.Builder {
-    ctor public AdData.Builder();
-    method public androidx.privacysandbox.ads.adservices.common.AdData build();
-    method public androidx.privacysandbox.ads.adservices.common.AdData.Builder setMetadata(String metadata);
-    method public androidx.privacysandbox.ads.adservices.common.AdData.Builder setRenderUri(android.net.Uri renderUri);
-  }
-
   public final class AdSelectionSignals {
     ctor public AdSelectionSignals(String signals);
     method public String getSignals();
@@ -198,20 +191,13 @@
   }
 
   public final class TrustedBiddingData {
-    ctor public TrustedBiddingData(optional android.net.Uri trustedBiddingUri, optional java.util.List<java.lang.String> trustedBiddingKeys);
+    ctor public TrustedBiddingData(android.net.Uri trustedBiddingUri, java.util.List<java.lang.String> trustedBiddingKeys);
     method public java.util.List<java.lang.String> getTrustedBiddingKeys();
     method public android.net.Uri getTrustedBiddingUri();
     property public final java.util.List<java.lang.String> trustedBiddingKeys;
     property public final android.net.Uri trustedBiddingUri;
   }
 
-  @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public static final class TrustedBiddingData.Builder {
-    ctor public TrustedBiddingData.Builder();
-    method public androidx.privacysandbox.ads.adservices.customaudience.TrustedBiddingData build();
-    method public androidx.privacysandbox.ads.adservices.customaudience.TrustedBiddingData.Builder setTrustedBiddingKeys(java.util.List<java.lang.String> trustedBiddingKeys);
-    method public androidx.privacysandbox.ads.adservices.customaudience.TrustedBiddingData.Builder setTrustedBiddingUri(android.net.Uri trustedBiddingUri);
-  }
-
 }
 
 package androidx.privacysandbox.ads.adservices.measurement {
diff --git a/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/common/AdDataTest.kt b/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/common/AdDataTest.kt
index cc86a64..c140524 100644
--- a/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/common/AdDataTest.kt
+++ b/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/common/AdDataTest.kt
@@ -17,10 +17,7 @@
 package androidx.privacysandbox.ads.adservices.common
 
 import android.net.Uri
-import android.os.Build
-import androidx.annotation.RequiresApi
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
 import org.junit.Test
@@ -28,10 +25,10 @@
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
-@SdkSuppress(minSdkVersion = 33)
 class AdDataTest {
     private val uri: Uri = Uri.parse("abc.com")
     private val metadata = "metadata"
+
     @Test
     fun testToString() {
         val result = "AdData: renderUri=$uri, metadata='$metadata'"
@@ -45,14 +42,4 @@
         var adData2 = AdData(Uri.parse("abc.com"), "metadata")
         Truth.assertThat(adData1 == adData2).isTrue()
     }
-
-    @Test
-    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
-    fun testBuilderSetters() {
-        val constructed = AdData(uri, metadata)
-        val builder = AdData.Builder()
-            .setRenderUri(uri)
-            .setMetadata(metadata)
-        Truth.assertThat(builder.build()).isEqualTo(constructed)
-    }
 }
diff --git a/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingDataTest.kt b/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingDataTest.kt
index 5b74ef1..4cb9357 100644
--- a/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingDataTest.kt
+++ b/privacysandbox/ads/ads-adservices/src/androidTest/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingDataTest.kt
@@ -17,10 +17,7 @@
 package androidx.privacysandbox.ads.adservices.customaudience
 
 import android.net.Uri
-import android.os.Build
-import androidx.annotation.RequiresApi
 import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SdkSuppress
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
 import org.junit.Test
@@ -28,24 +25,14 @@
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
-@SdkSuppress(minSdkVersion = 33)
 class TrustedBiddingDataTest {
     private val uri = Uri.parse("abc.com")
     private val keys = listOf("key1", "key2")
+
     @Test
     fun testToString() {
         val result = "TrustedBiddingData: trustedBiddingUri=abc.com trustedBiddingKeys=[key1, key2]"
         val trustedBiddingData = TrustedBiddingData(uri, keys)
         Truth.assertThat(trustedBiddingData.toString()).isEqualTo(result)
     }
-
-    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
-    @Test
-    fun testBuilderSetters() {
-        val constructed = TrustedBiddingData(uri, keys)
-        val builder = TrustedBiddingData.Builder()
-            .setTrustedBiddingUri(uri)
-            .setTrustedBiddingKeys(keys)
-        Truth.assertThat(builder.build()).isEqualTo(constructed)
-    }
 }
diff --git a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/common/AdData.kt b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/common/AdData.kt
index a274659..c12afe8 100644
--- a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/common/AdData.kt
+++ b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/common/AdData.kt
@@ -17,8 +17,6 @@
 package androidx.privacysandbox.ads.adservices.common
 
 import android.net.Uri
-import android.os.Build
-import androidx.annotation.RequiresApi
 
 /**
  * Represents data specific to an ad that is necessary for ad selection and rendering.
@@ -26,8 +24,8 @@
  * @param metadata buyer ad metadata represented as a JSON string
  */
 class AdData public constructor(
-    val renderUri: Uri = Uri.EMPTY,
-    val metadata: String = ""
+    val renderUri: Uri,
+    val metadata: String
     ) {
 
     /** Checks whether two [AdData] objects contain the same information.  */
@@ -49,42 +47,4 @@
     override fun toString(): String {
         return "AdData: renderUri=$renderUri, metadata='$metadata'"
     }
-
-    /** Builder for [AdData] objects. */
-    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
-    public class Builder {
-        private var renderUri: Uri = Uri.EMPTY
-        private var metadata: String = ""
-
-        /**
-         * Sets the URI that points to the ad's rendering assets. The URI must use HTTPS.
-         *
-         * @param renderUri a URI pointing to the ad's rendering assets
-         */
-        fun setRenderUri(renderUri: Uri): Builder = apply {
-            this.renderUri = renderUri
-        }
-
-        /**
-         * Sets the buyer ad metadata used during the ad selection process.
-         *
-         * @param metadata The metadata should be a valid JSON object serialized as a string.
-         * Metadata represents ad-specific bidding information that will be used during ad selection
-         * as part of bid generation and used in buyer JavaScript logic, which is executed in an
-         * isolated execution environment.
-         *
-         * If the metadata is not a valid JSON object that can be consumed by the buyer's JS, the
-         * ad will not be eligible for ad selection.
-         */
-        fun setMetadata(metadata: String): Builder = apply {
-            this.metadata = metadata
-        }
-
-        /**
-         * Builds an instance of [AdData]
-         */
-        fun build(): AdData {
-            return AdData(renderUri, metadata)
-        }
-    }
 }
diff --git a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingData.kt b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingData.kt
index 077c397..64c7d67 100644
--- a/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingData.kt
+++ b/privacysandbox/ads/ads-adservices/src/main/java/androidx/privacysandbox/ads/adservices/customaudience/TrustedBiddingData.kt
@@ -17,8 +17,6 @@
 package androidx.privacysandbox.ads.adservices.customaudience
 
 import android.net.Uri
-import android.os.Build
-import androidx.annotation.RequiresApi
 
 /**
  * Represents data used during the ad selection process to fetch buyer bidding signals from a
@@ -31,8 +29,8 @@
  * bidding signals.
  */
 class TrustedBiddingData public constructor(
-    val trustedBiddingUri: Uri = Uri.EMPTY,
-    val trustedBiddingKeys: List<String> = emptyList()
+    val trustedBiddingUri: Uri,
+    val trustedBiddingKeys: List<String>
     ) {
     /**
      * @return `true` if two [TrustedBiddingData] objects contain the same information
@@ -55,38 +53,4 @@
         return "TrustedBiddingData: trustedBiddingUri=$trustedBiddingUri " +
             "trustedBiddingKeys=$trustedBiddingKeys"
     }
-
-    /** Builder for [TrustedBiddingData] objects. */
-    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
-    public class Builder {
-        private var trustedBiddingUri: Uri = Uri.EMPTY
-        private var trustedBiddingKeys: List<String> = emptyList()
-
-        /**
-         * Sets the trusted Bidding Uri
-         *
-         * @param trustedBiddingUri the URI pointing to the trusted key-value server holding bidding
-         * signals. The URI must use HTTPS.
-         */
-        fun setTrustedBiddingUri(trustedBiddingUri: Uri): Builder = apply {
-            this.trustedBiddingUri = trustedBiddingUri
-        }
-
-        /**
-         * Sets the trusted Bidding keys.
-         *
-         * @param trustedBiddingKeys list of keys to query the trusted key-value server with.
-         * This list is permitted to be empty.
-         */
-        fun setTrustedBiddingKeys(trustedBiddingKeys: List<String>): Builder = apply {
-            this.trustedBiddingKeys = trustedBiddingKeys
-        }
-
-        /**
-         * Builds and instance of [TrustedBiddingData]
-         */
-        fun build(): TrustedBiddingData {
-            return TrustedBiddingData(trustedBiddingUri, trustedBiddingKeys)
-        }
-    }
 }
diff --git a/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt b/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt
index bcae96fd..b3d581a 100644
--- a/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt
+++ b/privacysandbox/ui/ui-client/src/main/java/androidx/privacysandbox/ui/client/view/SandboxedSdkView.kt
@@ -133,6 +133,10 @@
 
     /**
      * Sets the Z-ordering of the [SandboxedSdkView]'s surface, relative to its window.
+     *
+     * When [setOnTop] is true, every [android.view.MotionEvent] on the [SandboxedSdkView] will be
+     * sent to the UI provider. When [setOnTop] is false, every [android.view.MotionEvent] will be
+     * sent to the client. By default, motion events are sent to the UI provider.
      */
     fun setZOrderOnTopAndEnableUserInteraction(setOnTop: Boolean) {
         if (setOnTop == isZOrderOnTop) return
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/RoutesManager.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/RoutesManager.java
index 1c4ecff..94676b4 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/RoutesManager.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/RoutesManager.java
@@ -317,7 +317,7 @@
                             .setItems(items)
                             .setLinkedItemComponentName(
                                     new ComponentName(mContext, MainActivity.class))
-                            .setUseSystemOrdering(mRouteListingSystemOrderingPreferred)
+                            .setSystemOrderingEnabled(mRouteListingSystemOrderingPreferred)
                             .build();
         }
         mMediaRouter.setRouteListingPreference(routeListingPreference);
diff --git a/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt b/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt
index a04f924..cf0399d 100644
--- a/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt
+++ b/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/ScalingLazyListLayoutInfoTest.kt
@@ -133,6 +133,7 @@
         scope!!.launch {
             state.animateScrollBy(scrollDistance.toFloat())
         }
+
         rule.runOnIdle {
             assertThat(state.centerItemIndex).isEqualTo(1)
             assertThat(state.centerItemScrollOffset).isEqualTo(scrollDistance)
@@ -419,6 +420,7 @@
                 }
             }
         }
+        rule.mainClock.autoAdvance = false
 
         // TODO(b/210654937): Remove the waitUntil once we no longer need 2 stage initialization
         rule.waitUntil { state.initialized.value }
@@ -426,7 +428,8 @@
             state.animateScrollBy(localItemSizePx.toFloat() * 10)
         }
 
-        rule.waitUntil { !state.isScrollInProgress }
+        rule.mainClock.advanceTimeBy(milliseconds = 1000)
+        assert(!state.isScrollInProgress)
         assertThat(state.centerItemIndex).isEqualTo(4)
         assertThat(state.centerItemScrollOffset).isEqualTo(0)
 
@@ -434,7 +437,8 @@
             state.animateScrollBy(- localItemSizePx.toFloat() * 10)
         }
 
-        rule.waitUntil { !state.isScrollInProgress }
+        rule.mainClock.advanceTimeBy(milliseconds = 1000)
+        assert(!state.isScrollInProgress)
         assertThat(state.centerItemIndex).isEqualTo(autoCenterItem)
         assertThat(state.centerItemScrollOffset).isEqualTo(0)
     }
diff --git a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/ScalingLazyColumn.kt b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/ScalingLazyColumn.kt
index 7a6eba0..677dca7 100644
--- a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/ScalingLazyColumn.kt
+++ b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/ScalingLazyColumn.kt
@@ -34,11 +34,11 @@
 import androidx.compose.foundation.lazy.LazyListScope
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Immutable
-import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -58,6 +58,7 @@
 import androidx.compose.ui.unit.offset
 import androidx.wear.compose.foundation.ExperimentalWearFoundationApi
 import androidx.wear.compose.foundation.LocalReduceMotion
+import kotlinx.coroutines.launch
 
 /**
  * Receiver scope which is used by [ScalingLazyColumn].
@@ -395,6 +396,7 @@
             state.reverseLayout.value = reverseLayout
             state.localInspectionMode.value = LocalInspectionMode.current
 
+            val coroutineScope = rememberCoroutineScope()
             LazyColumn(
                 modifier = Modifier
                     .clipToBounds()
@@ -406,6 +408,9 @@
                             layoutInfo.readyForInitialScroll
                         ) {
                             initialized = true
+                            coroutineScope.launch {
+                                state.scrollToInitialItem()
+                            }
                         }
                     },
                 horizontalAlignment = horizontalAlignment,
@@ -443,11 +448,6 @@
                     }
                 }
             }
-            if (initialized) {
-                LaunchedEffect(state) {
-                    state.scrollToInitialItem()
-                }
-            }
         }
     }
 }
diff --git a/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt b/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
index 75181cf..e57f587 100644
--- a/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
+++ b/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/ScalingLazyListLayoutInfoTest.kt
@@ -134,6 +134,7 @@
         scope!!.launch {
             state.animateScrollBy(scrollDistance.toFloat())
         }
+
         rule.runOnIdle {
             assertThat(state.centerItemIndex).isEqualTo(1)
             assertThat(state.centerItemScrollOffset).isEqualTo(scrollDistance)
@@ -419,6 +420,7 @@
                 }
             }
         }
+        rule.mainClock.autoAdvance = false
 
         // TODO(b/210654937): Remove the waitUntil once we no longer need 2 stage initialization
         rule.waitUntil { state.initialized.value }
@@ -426,7 +428,8 @@
             state.animateScrollBy(localItemSizePx.toFloat() * 10)
         }
 
-        rule.waitUntil { !state.isScrollInProgress }
+        rule.mainClock.advanceTimeBy(milliseconds = 1000)
+        assert(!state.isScrollInProgress)
         assertThat(state.centerItemIndex).isEqualTo(4)
         assertThat(state.centerItemScrollOffset).isEqualTo(0)
 
@@ -434,7 +437,8 @@
             state.animateScrollBy(- localItemSizePx.toFloat() * 10)
         }
 
-        rule.waitUntil { !state.isScrollInProgress }
+        rule.mainClock.advanceTimeBy(milliseconds = 1000)
+        assert(!state.isScrollInProgress)
         assertThat(state.centerItemIndex).isEqualTo(autoCenterItem)
         assertThat(state.centerItemScrollOffset).isEqualTo(0)
     }
diff --git a/wear/compose/integration-tests/demos/build.gradle b/wear/compose/integration-tests/demos/build.gradle
index 36e7808d..892fc54 100644
--- a/wear/compose/integration-tests/demos/build.gradle
+++ b/wear/compose/integration-tests/demos/build.gradle
@@ -50,6 +50,8 @@
 
     implementation("androidx.wear:wear:1.1.0")
 
+    implementation("androidx.tracing:tracing:1.1.0")
+
     implementation(project(":compose:foundation:foundation"))
     implementation(project(":compose:foundation:foundation-layout"))
     implementation(project(":compose:integration-tests:demos:common"))
diff --git a/wear/compose/integration-tests/demos/src/androidTest/java/androidx/wear/compose/integration/demos/test/DemoTest.kt b/wear/compose/integration-tests/demos/src/androidTest/java/androidx/wear/compose/integration/demos/test/DemoTest.kt
index 646addf..0e3f0ea 100644
--- a/wear/compose/integration-tests/demos/src/androidTest/java/androidx/wear/compose/integration/demos/test/DemoTest.kt
+++ b/wear/compose/integration-tests/demos/src/androidTest/java/androidx/wear/compose/integration/demos/test/DemoTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.wear.compose.integration.demos.test
 
+import android.util.Log
 import androidx.compose.ui.test.ExperimentalTestApi
 import androidx.compose.ui.test.SemanticsNodeInteractionCollection
 import androidx.compose.ui.test.hasClickAction
@@ -33,15 +34,19 @@
 import androidx.wear.compose.integration.demos.common.Demo
 import androidx.wear.compose.integration.demos.common.DemoCategory
 import com.google.common.truth.Truth.assertThat
-import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 
 private val ignoredDemos = listOf<String>(
-    // Not ignoring any of them \o/
+    // TODO(b/294013164): Reinstate these tests
+    "Material > Curved Text > Basic Styling",
+    "Material > Curved Text > Provider Styling",
 )
 
+// Run this test on a phone emulator.
+// There are issues running on Watch emulators that menu items off screen are not found,
+// given the use of ScalingLAZYColumn.
 @LargeTest
 @RunWith(AndroidJUnit4::class)
 @OptIn(ExperimentalTestApi::class)
@@ -50,7 +55,6 @@
     @get:Rule
     val rule = createAndroidComposeRule<DemoActivity>()
 
-    @Ignore("b/276935528")
     @Test
     fun navigateThroughAllDemos() {
         // Compose integration-tests are split into batches due to size,
@@ -102,6 +106,7 @@
         path: List<DemoCategory>,
         fastForwardClock: Boolean
     ) {
+        Log.d("TEST", "Visit ${this.navigationTitle(path)}")
         if (fastForwardClock) {
             // Skip through the enter animation of the list screen
             fastForwardClock()
diff --git a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt
index 8c7e17e..e76aa06 100644
--- a/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt
+++ b/wear/watchface/watchface/src/androidTest/java/androidx/wear/watchface/WatchFaceServiceAndroidTest.kt
@@ -43,9 +43,8 @@
         val context: Context = ApplicationProvider.getApplicationContext()
         val serviceSpy =
             object : SimpleWatchFaceTestService() {
-                override val resourcesContext: Context
-                    get() =
-                        this.createPackageContext(context.packageName, Context.CONTEXT_RESTRICTED)
+                override fun getResourcesContext(runtimePackage: String): Context =
+                    this.createPackageContext(context.packageName, Context.CONTEXT_RESTRICTED)
             }
         val engine = serviceSpy.onCreateEngine() as WatchFaceService.EngineWrapper
 
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 c32fa26..476da70 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
@@ -437,9 +437,9 @@
             }
     }
 
-    /** The context used to resolve resources. Unlocks future work. */
-    protected open val resourcesContext: Context
-        @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) get() = this
+    /** Returns the context used to resolve resources. */
+    @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    protected open fun getResourcesContext(runtimePackage: String): Context = this
 
     /**
      * Returns the id of the XmlSchemaAndComplicationSlotsDefinition XML resource or 0 if it can't
@@ -2644,7 +2644,7 @@
                 for (styleSetting in schema.userStyleSettings) {
                     estimatedBytes +=
                         styleSetting.estimateWireSizeInBytesAndValidateIconDimensions(
-                            resourcesContext,
+                            getResourcesContext(getComponentName().packageName),
                             MAX_REASONABLE_SCHEMA_ICON_WIDTH,
                             MAX_REASONABLE_SCHEMA_ICON_HEIGHT,
                         )
diff --git a/window/window-core/api/1.2.0-beta02.txt b/window/window-core/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..624b2df
--- /dev/null
+++ b/window/window-core/api/1.2.0-beta02.txt
@@ -0,0 +1,38 @@
+// Signature format: 4.0
+package androidx.window.core.layout {
+
+  public final class WindowHeightSizeClass {
+    field public static final androidx.window.core.layout.WindowHeightSizeClass COMPACT;
+    field public static final androidx.window.core.layout.WindowHeightSizeClass.Companion Companion;
+    field public static final androidx.window.core.layout.WindowHeightSizeClass EXPANDED;
+    field public static final androidx.window.core.layout.WindowHeightSizeClass MEDIUM;
+  }
+
+  public static final class WindowHeightSizeClass.Companion {
+  }
+
+  public final class WindowSizeClass {
+    method public static androidx.window.core.layout.WindowSizeClass compute(float dpWidth, float dpHeight);
+    method public androidx.window.core.layout.WindowHeightSizeClass getWindowHeightSizeClass();
+    method public androidx.window.core.layout.WindowWidthSizeClass getWindowWidthSizeClass();
+    property public final androidx.window.core.layout.WindowHeightSizeClass windowHeightSizeClass;
+    property public final androidx.window.core.layout.WindowWidthSizeClass windowWidthSizeClass;
+    field public static final androidx.window.core.layout.WindowSizeClass.Companion Companion;
+  }
+
+  public static final class WindowSizeClass.Companion {
+    method public androidx.window.core.layout.WindowSizeClass compute(float dpWidth, float dpHeight);
+  }
+
+  public final class WindowWidthSizeClass {
+    field public static final androidx.window.core.layout.WindowWidthSizeClass COMPACT;
+    field public static final androidx.window.core.layout.WindowWidthSizeClass.Companion Companion;
+    field public static final androidx.window.core.layout.WindowWidthSizeClass EXPANDED;
+    field public static final androidx.window.core.layout.WindowWidthSizeClass MEDIUM;
+  }
+
+  public static final class WindowWidthSizeClass.Companion {
+  }
+
+}
+
diff --git a/window/window-core/api/res-1.2.0-beta02.txt b/window/window-core/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/window/window-core/api/res-1.2.0-beta02.txt
diff --git a/window/window-core/api/restricted_1.2.0-beta02.txt b/window/window-core/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..624b2df
--- /dev/null
+++ b/window/window-core/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1,38 @@
+// Signature format: 4.0
+package androidx.window.core.layout {
+
+  public final class WindowHeightSizeClass {
+    field public static final androidx.window.core.layout.WindowHeightSizeClass COMPACT;
+    field public static final androidx.window.core.layout.WindowHeightSizeClass.Companion Companion;
+    field public static final androidx.window.core.layout.WindowHeightSizeClass EXPANDED;
+    field public static final androidx.window.core.layout.WindowHeightSizeClass MEDIUM;
+  }
+
+  public static final class WindowHeightSizeClass.Companion {
+  }
+
+  public final class WindowSizeClass {
+    method public static androidx.window.core.layout.WindowSizeClass compute(float dpWidth, float dpHeight);
+    method public androidx.window.core.layout.WindowHeightSizeClass getWindowHeightSizeClass();
+    method public androidx.window.core.layout.WindowWidthSizeClass getWindowWidthSizeClass();
+    property public final androidx.window.core.layout.WindowHeightSizeClass windowHeightSizeClass;
+    property public final androidx.window.core.layout.WindowWidthSizeClass windowWidthSizeClass;
+    field public static final androidx.window.core.layout.WindowSizeClass.Companion Companion;
+  }
+
+  public static final class WindowSizeClass.Companion {
+    method public androidx.window.core.layout.WindowSizeClass compute(float dpWidth, float dpHeight);
+  }
+
+  public final class WindowWidthSizeClass {
+    field public static final androidx.window.core.layout.WindowWidthSizeClass COMPACT;
+    field public static final androidx.window.core.layout.WindowWidthSizeClass.Companion Companion;
+    field public static final androidx.window.core.layout.WindowWidthSizeClass EXPANDED;
+    field public static final androidx.window.core.layout.WindowWidthSizeClass MEDIUM;
+  }
+
+  public static final class WindowWidthSizeClass.Companion {
+  }
+
+}
+
diff --git a/window/window-java/api/1.2.0-beta02.txt b/window/window-java/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..2e19128
--- /dev/null
+++ b/window/window-java/api/1.2.0-beta02.txt
@@ -0,0 +1,32 @@
+// Signature format: 4.0
+package androidx.window.java.area {
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class WindowAreaControllerCallbackAdapter implements androidx.window.area.WindowAreaController {
+    ctor public WindowAreaControllerCallbackAdapter(androidx.window.area.WindowAreaController controller);
+    method public void addWindowAreaInfoListListener(java.util.concurrent.Executor executor, androidx.core.util.Consumer<java.util.List<androidx.window.area.WindowAreaInfo>> listener);
+    method public void removeWindowAreaInfoListListener(androidx.core.util.Consumer<java.util.List<androidx.window.area.WindowAreaInfo>> listener);
+  }
+
+}
+
+package androidx.window.java.embedding {
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class SplitControllerCallbackAdapter {
+    ctor public SplitControllerCallbackAdapter(androidx.window.embedding.SplitController controller);
+    method public void addSplitListener(android.app.Activity activity, java.util.concurrent.Executor executor, androidx.core.util.Consumer<java.util.List<androidx.window.embedding.SplitInfo>> consumer);
+    method public void removeSplitListener(androidx.core.util.Consumer<java.util.List<androidx.window.embedding.SplitInfo>> consumer);
+  }
+
+}
+
+package androidx.window.java.layout {
+
+  public final class WindowInfoTrackerCallbackAdapter implements androidx.window.layout.WindowInfoTracker {
+    ctor public WindowInfoTrackerCallbackAdapter(androidx.window.layout.WindowInfoTracker tracker);
+    method public void addWindowLayoutInfoListener(android.app.Activity activity, java.util.concurrent.Executor executor, androidx.core.util.Consumer<androidx.window.layout.WindowLayoutInfo> consumer);
+    method public void addWindowLayoutInfoListener(@UiContext android.content.Context context, java.util.concurrent.Executor executor, androidx.core.util.Consumer<androidx.window.layout.WindowLayoutInfo> consumer);
+    method public void removeWindowLayoutInfoListener(androidx.core.util.Consumer<androidx.window.layout.WindowLayoutInfo> consumer);
+  }
+
+}
+
diff --git a/window/window-java/api/res-1.2.0-beta02.txt b/window/window-java/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/window/window-java/api/res-1.2.0-beta02.txt
diff --git a/window/window-java/api/restricted_1.2.0-beta02.txt b/window/window-java/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..2e19128
--- /dev/null
+++ b/window/window-java/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1,32 @@
+// Signature format: 4.0
+package androidx.window.java.area {
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class WindowAreaControllerCallbackAdapter implements androidx.window.area.WindowAreaController {
+    ctor public WindowAreaControllerCallbackAdapter(androidx.window.area.WindowAreaController controller);
+    method public void addWindowAreaInfoListListener(java.util.concurrent.Executor executor, androidx.core.util.Consumer<java.util.List<androidx.window.area.WindowAreaInfo>> listener);
+    method public void removeWindowAreaInfoListListener(androidx.core.util.Consumer<java.util.List<androidx.window.area.WindowAreaInfo>> listener);
+  }
+
+}
+
+package androidx.window.java.embedding {
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class SplitControllerCallbackAdapter {
+    ctor public SplitControllerCallbackAdapter(androidx.window.embedding.SplitController controller);
+    method public void addSplitListener(android.app.Activity activity, java.util.concurrent.Executor executor, androidx.core.util.Consumer<java.util.List<androidx.window.embedding.SplitInfo>> consumer);
+    method public void removeSplitListener(androidx.core.util.Consumer<java.util.List<androidx.window.embedding.SplitInfo>> consumer);
+  }
+
+}
+
+package androidx.window.java.layout {
+
+  public final class WindowInfoTrackerCallbackAdapter implements androidx.window.layout.WindowInfoTracker {
+    ctor public WindowInfoTrackerCallbackAdapter(androidx.window.layout.WindowInfoTracker tracker);
+    method public void addWindowLayoutInfoListener(android.app.Activity activity, java.util.concurrent.Executor executor, androidx.core.util.Consumer<androidx.window.layout.WindowLayoutInfo> consumer);
+    method public void addWindowLayoutInfoListener(@UiContext android.content.Context context, java.util.concurrent.Executor executor, androidx.core.util.Consumer<androidx.window.layout.WindowLayoutInfo> consumer);
+    method public void removeWindowLayoutInfoListener(androidx.core.util.Consumer<androidx.window.layout.WindowLayoutInfo> consumer);
+  }
+
+}
+
diff --git a/window/window-rxjava2/api/1.2.0-beta02.txt b/window/window-rxjava2/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..5250696
--- /dev/null
+++ b/window/window-rxjava2/api/1.2.0-beta02.txt
@@ -0,0 +1,12 @@
+// Signature format: 4.0
+package androidx.window.rxjava2.layout {
+
+  public final class WindowInfoTrackerRx {
+    method public static io.reactivex.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+    method public static io.reactivex.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+  }
+
+}
+
diff --git a/window/window-rxjava2/api/res-1.2.0-beta02.txt b/window/window-rxjava2/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/window/window-rxjava2/api/res-1.2.0-beta02.txt
diff --git a/window/window-rxjava2/api/restricted_1.2.0-beta02.txt b/window/window-rxjava2/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..5250696
--- /dev/null
+++ b/window/window-rxjava2/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1,12 @@
+// Signature format: 4.0
+package androidx.window.rxjava2.layout {
+
+  public final class WindowInfoTrackerRx {
+    method public static io.reactivex.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+    method public static io.reactivex.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+  }
+
+}
+
diff --git a/window/window-rxjava3/api/1.2.0-beta02.txt b/window/window-rxjava3/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..23510cc
--- /dev/null
+++ b/window/window-rxjava3/api/1.2.0-beta02.txt
@@ -0,0 +1,12 @@
+// Signature format: 4.0
+package androidx.window.rxjava3.layout {
+
+  public final class WindowInfoTrackerRx {
+    method public static io.reactivex.rxjava3.core.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.rxjava3.core.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+    method public static io.reactivex.rxjava3.core.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.rxjava3.core.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+  }
+
+}
+
diff --git a/window/window-rxjava3/api/res-1.2.0-beta02.txt b/window/window-rxjava3/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/window/window-rxjava3/api/res-1.2.0-beta02.txt
diff --git a/window/window-rxjava3/api/restricted_1.2.0-beta02.txt b/window/window-rxjava3/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..23510cc
--- /dev/null
+++ b/window/window-rxjava3/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1,12 @@
+// Signature format: 4.0
+package androidx.window.rxjava3.layout {
+
+  public final class WindowInfoTrackerRx {
+    method public static io.reactivex.rxjava3.core.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.rxjava3.core.Flowable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoFlowable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+    method public static io.reactivex.rxjava3.core.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, android.app.Activity activity);
+    method public static io.reactivex.rxjava3.core.Observable<androidx.window.layout.WindowLayoutInfo> windowLayoutInfoObservable(androidx.window.layout.WindowInfoTracker, @UiContext android.content.Context context);
+  }
+
+}
+
diff --git a/window/window-testing/api/1.2.0-beta02.txt b/window/window-testing/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..847a9e8
--- /dev/null
+++ b/window/window-testing/api/1.2.0-beta02.txt
@@ -0,0 +1,73 @@
+// Signature format: 4.0
+package androidx.window.testing.embedding {
+
+  public final class ActivityEmbeddingRule implements org.junit.rules.TestRule {
+    ctor public ActivityEmbeddingRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+    method public void overrideIsActivityEmbedded(android.app.Activity activity, boolean isActivityEmbedded);
+    method public void overrideSplitInfo(android.app.Activity activity, java.util.List<androidx.window.embedding.SplitInfo> splitInfoList);
+    method public void overrideSplitSupportStatus(androidx.window.embedding.SplitController.SplitSupportStatus status);
+  }
+
+  public final class TestActivityStack {
+    method public static androidx.window.embedding.ActivityStack createTestActivityStack();
+    method public static androidx.window.embedding.ActivityStack createTestActivityStack(optional java.util.List<? extends android.app.Activity> activitiesInProcess);
+    method public static androidx.window.embedding.ActivityStack createTestActivityStack(optional java.util.List<? extends android.app.Activity> activitiesInProcess, optional boolean isEmpty);
+  }
+
+  public final class TestSplitAttributesCalculatorParams {
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo, optional androidx.window.embedding.SplitAttributes defaultSplitAttributes);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo, optional androidx.window.embedding.SplitAttributes defaultSplitAttributes, optional boolean areDefaultConstraintsSatisfied);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo, optional androidx.window.embedding.SplitAttributes defaultSplitAttributes, optional boolean areDefaultConstraintsSatisfied, optional String? splitRuleTag);
+  }
+
+  public final class TestSplitInfo {
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo();
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo(optional androidx.window.embedding.ActivityStack primaryActivityStack);
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo(optional androidx.window.embedding.ActivityStack primaryActivityStack, optional androidx.window.embedding.ActivityStack secondActivityStack);
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo(optional androidx.window.embedding.ActivityStack primaryActivityStack, optional androidx.window.embedding.ActivityStack secondActivityStack, optional androidx.window.embedding.SplitAttributes splitAttributes);
+  }
+
+}
+
+package androidx.window.testing.layout {
+
+  public final class DisplayFeatureTesting {
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+  }
+
+  public final class FoldingFeatureTestingConstants {
+    field public static final int FOLDING_FEATURE_CENTER_DEFAULT = -1; // 0xffffffff
+    field public static final androidx.window.testing.layout.FoldingFeatureTestingConstants INSTANCE;
+  }
+
+  public final class WindowLayoutInfoPublisherRule implements org.junit.rules.TestRule {
+    ctor public WindowLayoutInfoPublisherRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+    method public void overrideWindowLayoutInfo(androidx.window.layout.WindowLayoutInfo info);
+  }
+
+  public final class WindowLayoutInfoTesting {
+    method public static androidx.window.layout.WindowLayoutInfo createWindowLayoutInfo();
+    method public static androidx.window.layout.WindowLayoutInfo createWindowLayoutInfo(optional java.util.List<? extends androidx.window.layout.DisplayFeature> displayFeatures);
+  }
+
+  public final class WindowMetricsCalculatorRule implements org.junit.rules.TestRule {
+    ctor public WindowMetricsCalculatorRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+  }
+
+}
+
diff --git a/window/window-testing/api/res-1.2.0-beta02.txt b/window/window-testing/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/window/window-testing/api/res-1.2.0-beta02.txt
diff --git a/window/window-testing/api/restricted_1.2.0-beta02.txt b/window/window-testing/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..847a9e8
--- /dev/null
+++ b/window/window-testing/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1,73 @@
+// Signature format: 4.0
+package androidx.window.testing.embedding {
+
+  public final class ActivityEmbeddingRule implements org.junit.rules.TestRule {
+    ctor public ActivityEmbeddingRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+    method public void overrideIsActivityEmbedded(android.app.Activity activity, boolean isActivityEmbedded);
+    method public void overrideSplitInfo(android.app.Activity activity, java.util.List<androidx.window.embedding.SplitInfo> splitInfoList);
+    method public void overrideSplitSupportStatus(androidx.window.embedding.SplitController.SplitSupportStatus status);
+  }
+
+  public final class TestActivityStack {
+    method public static androidx.window.embedding.ActivityStack createTestActivityStack();
+    method public static androidx.window.embedding.ActivityStack createTestActivityStack(optional java.util.List<? extends android.app.Activity> activitiesInProcess);
+    method public static androidx.window.embedding.ActivityStack createTestActivityStack(optional java.util.List<? extends android.app.Activity> activitiesInProcess, optional boolean isEmpty);
+  }
+
+  public final class TestSplitAttributesCalculatorParams {
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo, optional androidx.window.embedding.SplitAttributes defaultSplitAttributes);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo, optional androidx.window.embedding.SplitAttributes defaultSplitAttributes, optional boolean areDefaultConstraintsSatisfied);
+    method public static androidx.window.embedding.SplitAttributesCalculatorParams createTestSplitAttributesCalculatorParams(androidx.window.layout.WindowMetrics parentWindowMetrics, optional android.content.res.Configuration parentConfiguration, optional androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo, optional androidx.window.embedding.SplitAttributes defaultSplitAttributes, optional boolean areDefaultConstraintsSatisfied, optional String? splitRuleTag);
+  }
+
+  public final class TestSplitInfo {
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo();
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo(optional androidx.window.embedding.ActivityStack primaryActivityStack);
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo(optional androidx.window.embedding.ActivityStack primaryActivityStack, optional androidx.window.embedding.ActivityStack secondActivityStack);
+    method public static androidx.window.embedding.SplitInfo createTestSplitInfo(optional androidx.window.embedding.ActivityStack primaryActivityStack, optional androidx.window.embedding.ActivityStack secondActivityStack, optional androidx.window.embedding.SplitAttributes splitAttributes);
+  }
+
+}
+
+package androidx.window.testing.layout {
+
+  public final class DisplayFeatureTesting {
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.app.Activity activity, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state);
+    method public static androidx.window.layout.FoldingFeature createFoldingFeature(android.graphics.Rect windowBounds, optional @IntRange(from=-1L) int center, optional int size, optional androidx.window.layout.FoldingFeature.State state, optional androidx.window.layout.FoldingFeature.Orientation orientation);
+  }
+
+  public final class FoldingFeatureTestingConstants {
+    field public static final int FOLDING_FEATURE_CENTER_DEFAULT = -1; // 0xffffffff
+    field public static final androidx.window.testing.layout.FoldingFeatureTestingConstants INSTANCE;
+  }
+
+  public final class WindowLayoutInfoPublisherRule implements org.junit.rules.TestRule {
+    ctor public WindowLayoutInfoPublisherRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+    method public void overrideWindowLayoutInfo(androidx.window.layout.WindowLayoutInfo info);
+  }
+
+  public final class WindowLayoutInfoTesting {
+    method public static androidx.window.layout.WindowLayoutInfo createWindowLayoutInfo();
+    method public static androidx.window.layout.WindowLayoutInfo createWindowLayoutInfo(optional java.util.List<? extends androidx.window.layout.DisplayFeature> displayFeatures);
+  }
+
+  public final class WindowMetricsCalculatorRule implements org.junit.rules.TestRule {
+    ctor public WindowMetricsCalculatorRule();
+    method public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description);
+  }
+
+}
+
diff --git a/window/window/api/1.2.0-beta02.txt b/window/window/api/1.2.0-beta02.txt
new file mode 100644
index 0000000..7c79bde
--- /dev/null
+++ b/window/window/api/1.2.0-beta02.txt
@@ -0,0 +1,465 @@
+// Signature format: 4.0
+package androidx.window {
+
+  public final class WindowProperties {
+    field public static final androidx.window.WindowProperties INSTANCE;
+    field public static final String PROPERTY_ACTIVITY_EMBEDDING_ALLOW_SYSTEM_OVERRIDE = "android.window.PROPERTY_ACTIVITY_EMBEDDING_ALLOW_SYSTEM_OVERRIDE";
+    field public static final String PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED = "android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED";
+    field public static final String PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED = "android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED";
+    field public static final String PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE";
+    field public static final String PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES = "android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES";
+  }
+
+}
+
+package androidx.window.area {
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class WindowAreaCapability {
+    method public androidx.window.area.WindowAreaCapability.Operation getOperation();
+    method public androidx.window.area.WindowAreaCapability.Status getStatus();
+    property public final androidx.window.area.WindowAreaCapability.Operation operation;
+    property public final androidx.window.area.WindowAreaCapability.Status status;
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static final class WindowAreaCapability.Operation {
+    field public static final androidx.window.area.WindowAreaCapability.Operation.Companion Companion;
+    field public static final androidx.window.area.WindowAreaCapability.Operation OPERATION_PRESENT_ON_AREA;
+    field public static final androidx.window.area.WindowAreaCapability.Operation OPERATION_TRANSFER_ACTIVITY_TO_AREA;
+  }
+
+  public static final class WindowAreaCapability.Operation.Companion {
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static final class WindowAreaCapability.Status {
+    field public static final androidx.window.area.WindowAreaCapability.Status.Companion Companion;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_ACTIVE;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_AVAILABLE;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_UNAVAILABLE;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_UNSUPPORTED;
+  }
+
+  public static final class WindowAreaCapability.Status.Companion {
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaController {
+    method public static androidx.window.area.WindowAreaController getOrCreate();
+    method public kotlinx.coroutines.flow.Flow<java.util.List<androidx.window.area.WindowAreaInfo>> getWindowAreaInfos();
+    method public void presentContentOnWindowArea(android.os.Binder token, android.app.Activity activity, java.util.concurrent.Executor executor, androidx.window.area.WindowAreaPresentationSessionCallback windowAreaPresentationSessionCallback);
+    method public void transferActivityToWindowArea(android.os.Binder token, android.app.Activity activity, java.util.concurrent.Executor executor, androidx.window.area.WindowAreaSessionCallback windowAreaSessionCallback);
+    property public abstract kotlinx.coroutines.flow.Flow<java.util.List<androidx.window.area.WindowAreaInfo>> windowAreaInfos;
+    field public static final androidx.window.area.WindowAreaController.Companion Companion;
+  }
+
+  public static final class WindowAreaController.Companion {
+    method public androidx.window.area.WindowAreaController getOrCreate();
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class WindowAreaInfo {
+    method public androidx.window.area.WindowAreaSession? getActiveSession(androidx.window.area.WindowAreaCapability.Operation operation);
+    method public androidx.window.area.WindowAreaCapability? getCapability(androidx.window.area.WindowAreaCapability.Operation operation);
+    method public androidx.window.layout.WindowMetrics getMetrics();
+    method public android.os.Binder getToken();
+    method public androidx.window.area.WindowAreaInfo.Type getType();
+    method public void setMetrics(androidx.window.layout.WindowMetrics);
+    property public final androidx.window.layout.WindowMetrics metrics;
+    property public final android.os.Binder token;
+    property public final androidx.window.area.WindowAreaInfo.Type type;
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static final class WindowAreaInfo.Type {
+    field public static final androidx.window.area.WindowAreaInfo.Type.Companion Companion;
+    field public static final androidx.window.area.WindowAreaInfo.Type TYPE_REAR_FACING;
+  }
+
+  public static final class WindowAreaInfo.Type.Companion {
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaPresentationSessionCallback {
+    method public void onContainerVisibilityChanged(boolean isVisible);
+    method public void onSessionEnded(Throwable? t);
+    method public void onSessionStarted(androidx.window.area.WindowAreaSessionPresenter session);
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaSession {
+    method public void close();
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaSessionCallback {
+    method public void onSessionEnded(Throwable? t);
+    method public void onSessionStarted(androidx.window.area.WindowAreaSession session);
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaSessionPresenter extends androidx.window.area.WindowAreaSession {
+    method public android.content.Context getContext();
+    method public void setContentView(android.view.View view);
+    property public abstract android.content.Context context;
+  }
+
+}
+
+package androidx.window.core {
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(level=kotlin.RequiresOptIn.Level.WARNING) @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWindowApi {
+  }
+
+}
+
+package androidx.window.embedding {
+
+  public final class ActivityEmbeddingController {
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public void finishActivityStacks(java.util.Set<androidx.window.embedding.ActivityStack> activityStacks);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public androidx.window.embedding.ActivityStack? getActivityStack(android.app.Activity activity);
+    method public static androidx.window.embedding.ActivityEmbeddingController getInstance(android.content.Context context);
+    method public boolean isActivityEmbedded(android.app.Activity activity);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public boolean isFinishingActivityStacksSupported();
+    field public static final androidx.window.embedding.ActivityEmbeddingController.Companion Companion;
+  }
+
+  public static final class ActivityEmbeddingController.Companion {
+    method public androidx.window.embedding.ActivityEmbeddingController getInstance(android.content.Context context);
+  }
+
+  public final class ActivityEmbeddingOptions {
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static boolean isSetLaunchingActivityStackSupported(android.app.ActivityOptions);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static android.app.ActivityOptions setLaunchingActivityStack(android.app.ActivityOptions, android.app.Activity activity);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static android.app.ActivityOptions setLaunchingActivityStack(android.app.ActivityOptions, android.content.Context context, androidx.window.embedding.ActivityStack activityStack);
+  }
+
+  public final class ActivityFilter {
+    ctor public ActivityFilter(android.content.ComponentName componentName, String? intentAction);
+    method public android.content.ComponentName getComponentName();
+    method public String? getIntentAction();
+    method public boolean matchesActivity(android.app.Activity activity);
+    method public boolean matchesIntent(android.content.Intent intent);
+    property public final android.content.ComponentName componentName;
+    property public final String? intentAction;
+  }
+
+  public final class ActivityRule extends androidx.window.embedding.EmbeddingRule {
+    method public boolean getAlwaysExpand();
+    method public java.util.Set<androidx.window.embedding.ActivityFilter> getFilters();
+    property public final boolean alwaysExpand;
+    property public final java.util.Set<androidx.window.embedding.ActivityFilter> filters;
+  }
+
+  public static final class ActivityRule.Builder {
+    ctor public ActivityRule.Builder(java.util.Set<androidx.window.embedding.ActivityFilter> filters);
+    method public androidx.window.embedding.ActivityRule build();
+    method public androidx.window.embedding.ActivityRule.Builder setAlwaysExpand(boolean alwaysExpand);
+    method public androidx.window.embedding.ActivityRule.Builder setTag(String? tag);
+  }
+
+  public final class ActivityStack {
+    method public operator boolean contains(android.app.Activity activity);
+    method public boolean isEmpty();
+    property public final boolean isEmpty;
+  }
+
+  public final class EmbeddingAspectRatio {
+    method public static androidx.window.embedding.EmbeddingAspectRatio ratio(@FloatRange(from=1.0, fromInclusive=false) float ratio);
+    field public static final androidx.window.embedding.EmbeddingAspectRatio ALWAYS_ALLOW;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio ALWAYS_DISALLOW;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio.Companion Companion;
+  }
+
+  public static final class EmbeddingAspectRatio.Companion {
+    method public androidx.window.embedding.EmbeddingAspectRatio ratio(@FloatRange(from=1.0, fromInclusive=false) float ratio);
+  }
+
+  public abstract class EmbeddingRule {
+    method public final String? getTag();
+    property public final String? tag;
+  }
+
+  public final class RuleController {
+    method public void addRule(androidx.window.embedding.EmbeddingRule rule);
+    method public void clearRules();
+    method public static androidx.window.embedding.RuleController getInstance(android.content.Context context);
+    method public java.util.Set<androidx.window.embedding.EmbeddingRule> getRules();
+    method public static java.util.Set<androidx.window.embedding.EmbeddingRule> parseRules(android.content.Context context, @XmlRes int staticRuleResourceId);
+    method public void removeRule(androidx.window.embedding.EmbeddingRule rule);
+    method public void setRules(java.util.Set<? extends androidx.window.embedding.EmbeddingRule> rules);
+    field public static final androidx.window.embedding.RuleController.Companion Companion;
+  }
+
+  public static final class RuleController.Companion {
+    method public androidx.window.embedding.RuleController getInstance(android.content.Context context);
+    method public java.util.Set<androidx.window.embedding.EmbeddingRule> parseRules(android.content.Context context, @XmlRes int staticRuleResourceId);
+  }
+
+  public final class SplitAttributes {
+    method public androidx.window.embedding.SplitAttributes.LayoutDirection getLayoutDirection();
+    method public androidx.window.embedding.SplitAttributes.SplitType getSplitType();
+    property public final androidx.window.embedding.SplitAttributes.LayoutDirection layoutDirection;
+    property public final androidx.window.embedding.SplitAttributes.SplitType splitType;
+    field public static final androidx.window.embedding.SplitAttributes.Companion Companion;
+  }
+
+  public static final class SplitAttributes.Builder {
+    ctor public SplitAttributes.Builder();
+    method public androidx.window.embedding.SplitAttributes build();
+    method public androidx.window.embedding.SplitAttributes.Builder setLayoutDirection(androidx.window.embedding.SplitAttributes.LayoutDirection layoutDirection);
+    method public androidx.window.embedding.SplitAttributes.Builder setSplitType(androidx.window.embedding.SplitAttributes.SplitType type);
+  }
+
+  public static final class SplitAttributes.Companion {
+  }
+
+  public static final class SplitAttributes.LayoutDirection {
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection BOTTOM_TO_TOP;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection.Companion Companion;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection LEFT_TO_RIGHT;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection LOCALE;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection RIGHT_TO_LEFT;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection TOP_TO_BOTTOM;
+  }
+
+  public static final class SplitAttributes.LayoutDirection.Companion {
+  }
+
+  public static final class SplitAttributes.SplitType {
+    method public static androidx.window.embedding.SplitAttributes.SplitType ratio(@FloatRange(from=0.0, to=1.0, fromInclusive=false, toInclusive=false) float ratio);
+    field public static final androidx.window.embedding.SplitAttributes.SplitType.Companion Companion;
+    field public static final androidx.window.embedding.SplitAttributes.SplitType SPLIT_TYPE_EQUAL;
+    field public static final androidx.window.embedding.SplitAttributes.SplitType SPLIT_TYPE_EXPAND;
+    field public static final androidx.window.embedding.SplitAttributes.SplitType SPLIT_TYPE_HINGE;
+  }
+
+  public static final class SplitAttributes.SplitType.Companion {
+    method public androidx.window.embedding.SplitAttributes.SplitType ratio(@FloatRange(from=0.0, to=1.0, fromInclusive=false, toInclusive=false) float ratio);
+  }
+
+  public final class SplitAttributesCalculatorParams {
+    method public boolean getAreDefaultConstraintsSatisfied();
+    method public androidx.window.embedding.SplitAttributes getDefaultSplitAttributes();
+    method public android.content.res.Configuration getParentConfiguration();
+    method public androidx.window.layout.WindowLayoutInfo getParentWindowLayoutInfo();
+    method public androidx.window.layout.WindowMetrics getParentWindowMetrics();
+    method public String? getSplitRuleTag();
+    property public final boolean areDefaultConstraintsSatisfied;
+    property public final androidx.window.embedding.SplitAttributes defaultSplitAttributes;
+    property public final android.content.res.Configuration parentConfiguration;
+    property public final androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo;
+    property public final androidx.window.layout.WindowMetrics parentWindowMetrics;
+    property public final String? splitRuleTag;
+  }
+
+  public final class SplitController {
+    method public void clearSplitAttributesCalculator();
+    method public static androidx.window.embedding.SplitController getInstance(android.content.Context context);
+    method public androidx.window.embedding.SplitController.SplitSupportStatus getSplitSupportStatus();
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public void invalidateTopVisibleSplitAttributes();
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public boolean isInvalidatingTopVisibleSplitAttributesSupported();
+    method public boolean isSplitAttributesCalculatorSupported();
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public boolean isUpdatingSplitAttributesSupported();
+    method public void setSplitAttributesCalculator(kotlin.jvm.functions.Function1<? super androidx.window.embedding.SplitAttributesCalculatorParams,androidx.window.embedding.SplitAttributes> calculator);
+    method public kotlinx.coroutines.flow.Flow<java.util.List<androidx.window.embedding.SplitInfo>> splitInfoList(android.app.Activity activity);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public void updateSplitAttributes(androidx.window.embedding.SplitInfo splitInfo, androidx.window.embedding.SplitAttributes splitAttributes);
+    property public final androidx.window.embedding.SplitController.SplitSupportStatus splitSupportStatus;
+    field public static final androidx.window.embedding.SplitController.Companion Companion;
+  }
+
+  public static final class SplitController.Companion {
+    method public androidx.window.embedding.SplitController getInstance(android.content.Context context);
+  }
+
+  public static final class SplitController.SplitSupportStatus {
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus.Companion Companion;
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus SPLIT_AVAILABLE;
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus SPLIT_ERROR_PROPERTY_NOT_DECLARED;
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus SPLIT_UNAVAILABLE;
+  }
+
+  public static final class SplitController.SplitSupportStatus.Companion {
+  }
+
+  public final class SplitInfo {
+    method public operator boolean contains(android.app.Activity activity);
+    method public androidx.window.embedding.ActivityStack getPrimaryActivityStack();
+    method public androidx.window.embedding.ActivityStack getSecondaryActivityStack();
+    method public androidx.window.embedding.SplitAttributes getSplitAttributes();
+    property public final androidx.window.embedding.ActivityStack primaryActivityStack;
+    property public final androidx.window.embedding.ActivityStack secondaryActivityStack;
+    property public final androidx.window.embedding.SplitAttributes splitAttributes;
+  }
+
+  public final class SplitPairFilter {
+    ctor public SplitPairFilter(android.content.ComponentName primaryActivityName, android.content.ComponentName secondaryActivityName, String? secondaryActivityIntentAction);
+    method public android.content.ComponentName getPrimaryActivityName();
+    method public String? getSecondaryActivityIntentAction();
+    method public android.content.ComponentName getSecondaryActivityName();
+    method public boolean matchesActivityIntentPair(android.app.Activity primaryActivity, android.content.Intent secondaryActivityIntent);
+    method public boolean matchesActivityPair(android.app.Activity primaryActivity, android.app.Activity secondaryActivity);
+    property public final android.content.ComponentName primaryActivityName;
+    property public final String? secondaryActivityIntentAction;
+    property public final android.content.ComponentName secondaryActivityName;
+  }
+
+  public final class SplitPairRule extends androidx.window.embedding.SplitRule {
+    method public boolean getClearTop();
+    method public java.util.Set<androidx.window.embedding.SplitPairFilter> getFilters();
+    method public androidx.window.embedding.SplitRule.FinishBehavior getFinishPrimaryWithSecondary();
+    method public androidx.window.embedding.SplitRule.FinishBehavior getFinishSecondaryWithPrimary();
+    property public final boolean clearTop;
+    property public final java.util.Set<androidx.window.embedding.SplitPairFilter> filters;
+    property public final androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithSecondary;
+    property public final androidx.window.embedding.SplitRule.FinishBehavior finishSecondaryWithPrimary;
+  }
+
+  public static final class SplitPairRule.Builder {
+    ctor public SplitPairRule.Builder(java.util.Set<androidx.window.embedding.SplitPairFilter> filters);
+    method public androidx.window.embedding.SplitPairRule build();
+    method public androidx.window.embedding.SplitPairRule.Builder setClearTop(boolean clearTop);
+    method public androidx.window.embedding.SplitPairRule.Builder setDefaultSplitAttributes(androidx.window.embedding.SplitAttributes defaultSplitAttributes);
+    method public androidx.window.embedding.SplitPairRule.Builder setFinishPrimaryWithSecondary(androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithSecondary);
+    method public androidx.window.embedding.SplitPairRule.Builder setFinishSecondaryWithPrimary(androidx.window.embedding.SplitRule.FinishBehavior finishSecondaryWithPrimary);
+    method public androidx.window.embedding.SplitPairRule.Builder setMaxAspectRatioInLandscape(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPairRule.Builder setMaxAspectRatioInPortrait(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPairRule.Builder setMinHeightDp(@IntRange(from=0L) int minHeightDp);
+    method public androidx.window.embedding.SplitPairRule.Builder setMinSmallestWidthDp(@IntRange(from=0L) int minSmallestWidthDp);
+    method public androidx.window.embedding.SplitPairRule.Builder setMinWidthDp(@IntRange(from=0L) int minWidthDp);
+    method public androidx.window.embedding.SplitPairRule.Builder setTag(String? tag);
+  }
+
+  public final class SplitPlaceholderRule extends androidx.window.embedding.SplitRule {
+    method public java.util.Set<androidx.window.embedding.ActivityFilter> getFilters();
+    method public androidx.window.embedding.SplitRule.FinishBehavior getFinishPrimaryWithPlaceholder();
+    method public android.content.Intent getPlaceholderIntent();
+    method public boolean isSticky();
+    property public final java.util.Set<androidx.window.embedding.ActivityFilter> filters;
+    property public final androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithPlaceholder;
+    property public final boolean isSticky;
+    property public final android.content.Intent placeholderIntent;
+  }
+
+  public static final class SplitPlaceholderRule.Builder {
+    ctor public SplitPlaceholderRule.Builder(java.util.Set<androidx.window.embedding.ActivityFilter> filters, android.content.Intent placeholderIntent);
+    method public androidx.window.embedding.SplitPlaceholderRule build();
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setDefaultSplitAttributes(androidx.window.embedding.SplitAttributes defaultSplitAttributes);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setFinishPrimaryWithPlaceholder(androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithPlaceholder);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMaxAspectRatioInLandscape(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMaxAspectRatioInPortrait(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMinHeightDp(@IntRange(from=0L) int minHeightDp);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMinSmallestWidthDp(@IntRange(from=0L) int minSmallestWidthDp);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMinWidthDp(@IntRange(from=0L) int minWidthDp);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setSticky(boolean isSticky);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setTag(String? tag);
+  }
+
+  public class SplitRule extends androidx.window.embedding.EmbeddingRule {
+    method public final androidx.window.embedding.SplitAttributes getDefaultSplitAttributes();
+    method public final androidx.window.embedding.EmbeddingAspectRatio getMaxAspectRatioInLandscape();
+    method public final androidx.window.embedding.EmbeddingAspectRatio getMaxAspectRatioInPortrait();
+    method public final int getMinHeightDp();
+    method public final int getMinSmallestWidthDp();
+    method public final int getMinWidthDp();
+    property public final androidx.window.embedding.SplitAttributes defaultSplitAttributes;
+    property public final androidx.window.embedding.EmbeddingAspectRatio maxAspectRatioInLandscape;
+    property public final androidx.window.embedding.EmbeddingAspectRatio maxAspectRatioInPortrait;
+    property public final int minHeightDp;
+    property public final int minSmallestWidthDp;
+    property public final int minWidthDp;
+    field public static final androidx.window.embedding.SplitRule.Companion Companion;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio SPLIT_MAX_ASPECT_RATIO_LANDSCAPE_DEFAULT;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio SPLIT_MAX_ASPECT_RATIO_PORTRAIT_DEFAULT;
+    field public static final int SPLIT_MIN_DIMENSION_ALWAYS_ALLOW = 0; // 0x0
+    field public static final int SPLIT_MIN_DIMENSION_DP_DEFAULT = 600; // 0x258
+  }
+
+  public static final class SplitRule.Companion {
+  }
+
+  public static final class SplitRule.FinishBehavior {
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior ADJACENT;
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior ALWAYS;
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior.Companion Companion;
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior NEVER;
+  }
+
+  public static final class SplitRule.FinishBehavior.Companion {
+  }
+
+}
+
+package androidx.window.layout {
+
+  public interface DisplayFeature {
+    method public android.graphics.Rect getBounds();
+    property public abstract android.graphics.Rect bounds;
+  }
+
+  public interface FoldingFeature extends androidx.window.layout.DisplayFeature {
+    method public androidx.window.layout.FoldingFeature.OcclusionType getOcclusionType();
+    method public androidx.window.layout.FoldingFeature.Orientation getOrientation();
+    method public androidx.window.layout.FoldingFeature.State getState();
+    method public boolean isSeparating();
+    property public abstract boolean isSeparating;
+    property public abstract androidx.window.layout.FoldingFeature.OcclusionType occlusionType;
+    property public abstract androidx.window.layout.FoldingFeature.Orientation orientation;
+    property public abstract androidx.window.layout.FoldingFeature.State state;
+  }
+
+  public static final class FoldingFeature.OcclusionType {
+    field public static final androidx.window.layout.FoldingFeature.OcclusionType.Companion Companion;
+    field public static final androidx.window.layout.FoldingFeature.OcclusionType FULL;
+    field public static final androidx.window.layout.FoldingFeature.OcclusionType NONE;
+  }
+
+  public static final class FoldingFeature.OcclusionType.Companion {
+  }
+
+  public static final class FoldingFeature.Orientation {
+    field public static final androidx.window.layout.FoldingFeature.Orientation.Companion Companion;
+    field public static final androidx.window.layout.FoldingFeature.Orientation HORIZONTAL;
+    field public static final androidx.window.layout.FoldingFeature.Orientation VERTICAL;
+  }
+
+  public static final class FoldingFeature.Orientation.Companion {
+  }
+
+  public static final class FoldingFeature.State {
+    field public static final androidx.window.layout.FoldingFeature.State.Companion Companion;
+    field public static final androidx.window.layout.FoldingFeature.State FLAT;
+    field public static final androidx.window.layout.FoldingFeature.State HALF_OPENED;
+  }
+
+  public static final class FoldingFeature.State.Companion {
+  }
+
+  public interface WindowInfoTracker {
+    method public static androidx.window.layout.WindowInfoTracker getOrCreate(android.content.Context context);
+    method public kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(android.app.Activity activity);
+    method public default kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(@UiContext android.content.Context context);
+    field public static final androidx.window.layout.WindowInfoTracker.Companion Companion;
+  }
+
+  public static final class WindowInfoTracker.Companion {
+    method public androidx.window.layout.WindowInfoTracker getOrCreate(android.content.Context context);
+  }
+
+  public final class WindowLayoutInfo {
+    method public java.util.List<androidx.window.layout.DisplayFeature> getDisplayFeatures();
+    property public final java.util.List<androidx.window.layout.DisplayFeature> displayFeatures;
+  }
+
+  public final class WindowMetrics {
+    method public android.graphics.Rect getBounds();
+    method @SuppressCompatibility @RequiresApi(android.os.Build.VERSION_CODES.R) @androidx.window.core.ExperimentalWindowApi public androidx.core.view.WindowInsetsCompat getWindowInsets();
+    property public final android.graphics.Rect bounds;
+  }
+
+  public interface WindowMetricsCalculator {
+    method public androidx.window.layout.WindowMetrics computeCurrentWindowMetrics(android.app.Activity activity);
+    method public default androidx.window.layout.WindowMetrics computeCurrentWindowMetrics(@UiContext android.content.Context context);
+    method public androidx.window.layout.WindowMetrics computeMaximumWindowMetrics(android.app.Activity activity);
+    method public default androidx.window.layout.WindowMetrics computeMaximumWindowMetrics(@UiContext android.content.Context context);
+    method public static androidx.window.layout.WindowMetricsCalculator getOrCreate();
+    field public static final androidx.window.layout.WindowMetricsCalculator.Companion Companion;
+  }
+
+  public static final class WindowMetricsCalculator.Companion {
+    method public androidx.window.layout.WindowMetricsCalculator getOrCreate();
+  }
+
+}
+
diff --git a/window/window/api/res-1.2.0-beta02.txt b/window/window/api/res-1.2.0-beta02.txt
new file mode 100644
index 0000000..185352b
--- /dev/null
+++ b/window/window/api/res-1.2.0-beta02.txt
@@ -0,0 +1,21 @@
+attr activityAction
+attr activityName
+attr alwaysExpand
+attr animationBackgroundColor
+attr clearTop
+attr finishPrimaryWithPlaceholder
+attr finishPrimaryWithSecondary
+attr finishSecondaryWithPrimary
+attr placeholderActivityName
+attr primaryActivityName
+attr secondaryActivityAction
+attr secondaryActivityName
+attr splitLayoutDirection
+attr splitMaxAspectRatioInLandscape
+attr splitMaxAspectRatioInPortrait
+attr splitMinHeightDp
+attr splitMinSmallestWidthDp
+attr splitMinWidthDp
+attr splitRatio
+attr stickyPlaceholder
+attr tag
diff --git a/window/window/api/restricted_1.2.0-beta02.txt b/window/window/api/restricted_1.2.0-beta02.txt
new file mode 100644
index 0000000..7c79bde
--- /dev/null
+++ b/window/window/api/restricted_1.2.0-beta02.txt
@@ -0,0 +1,465 @@
+// Signature format: 4.0
+package androidx.window {
+
+  public final class WindowProperties {
+    field public static final androidx.window.WindowProperties INSTANCE;
+    field public static final String PROPERTY_ACTIVITY_EMBEDDING_ALLOW_SYSTEM_OVERRIDE = "android.window.PROPERTY_ACTIVITY_EMBEDDING_ALLOW_SYSTEM_OVERRIDE";
+    field public static final String PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED = "android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED";
+    field public static final String PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED = "android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED";
+    field public static final String PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE";
+    field public static final String PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES = "android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES";
+  }
+
+}
+
+package androidx.window.area {
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class WindowAreaCapability {
+    method public androidx.window.area.WindowAreaCapability.Operation getOperation();
+    method public androidx.window.area.WindowAreaCapability.Status getStatus();
+    property public final androidx.window.area.WindowAreaCapability.Operation operation;
+    property public final androidx.window.area.WindowAreaCapability.Status status;
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static final class WindowAreaCapability.Operation {
+    field public static final androidx.window.area.WindowAreaCapability.Operation.Companion Companion;
+    field public static final androidx.window.area.WindowAreaCapability.Operation OPERATION_PRESENT_ON_AREA;
+    field public static final androidx.window.area.WindowAreaCapability.Operation OPERATION_TRANSFER_ACTIVITY_TO_AREA;
+  }
+
+  public static final class WindowAreaCapability.Operation.Companion {
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static final class WindowAreaCapability.Status {
+    field public static final androidx.window.area.WindowAreaCapability.Status.Companion Companion;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_ACTIVE;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_AVAILABLE;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_UNAVAILABLE;
+    field public static final androidx.window.area.WindowAreaCapability.Status WINDOW_AREA_STATUS_UNSUPPORTED;
+  }
+
+  public static final class WindowAreaCapability.Status.Companion {
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaController {
+    method public static androidx.window.area.WindowAreaController getOrCreate();
+    method public kotlinx.coroutines.flow.Flow<java.util.List<androidx.window.area.WindowAreaInfo>> getWindowAreaInfos();
+    method public void presentContentOnWindowArea(android.os.Binder token, android.app.Activity activity, java.util.concurrent.Executor executor, androidx.window.area.WindowAreaPresentationSessionCallback windowAreaPresentationSessionCallback);
+    method public void transferActivityToWindowArea(android.os.Binder token, android.app.Activity activity, java.util.concurrent.Executor executor, androidx.window.area.WindowAreaSessionCallback windowAreaSessionCallback);
+    property public abstract kotlinx.coroutines.flow.Flow<java.util.List<androidx.window.area.WindowAreaInfo>> windowAreaInfos;
+    field public static final androidx.window.area.WindowAreaController.Companion Companion;
+  }
+
+  public static final class WindowAreaController.Companion {
+    method public androidx.window.area.WindowAreaController getOrCreate();
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public final class WindowAreaInfo {
+    method public androidx.window.area.WindowAreaSession? getActiveSession(androidx.window.area.WindowAreaCapability.Operation operation);
+    method public androidx.window.area.WindowAreaCapability? getCapability(androidx.window.area.WindowAreaCapability.Operation operation);
+    method public androidx.window.layout.WindowMetrics getMetrics();
+    method public android.os.Binder getToken();
+    method public androidx.window.area.WindowAreaInfo.Type getType();
+    method public void setMetrics(androidx.window.layout.WindowMetrics);
+    property public final androidx.window.layout.WindowMetrics metrics;
+    property public final android.os.Binder token;
+    property public final androidx.window.area.WindowAreaInfo.Type type;
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static final class WindowAreaInfo.Type {
+    field public static final androidx.window.area.WindowAreaInfo.Type.Companion Companion;
+    field public static final androidx.window.area.WindowAreaInfo.Type TYPE_REAR_FACING;
+  }
+
+  public static final class WindowAreaInfo.Type.Companion {
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaPresentationSessionCallback {
+    method public void onContainerVisibilityChanged(boolean isVisible);
+    method public void onSessionEnded(Throwable? t);
+    method public void onSessionStarted(androidx.window.area.WindowAreaSessionPresenter session);
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaSession {
+    method public void close();
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaSessionCallback {
+    method public void onSessionEnded(Throwable? t);
+    method public void onSessionStarted(androidx.window.area.WindowAreaSession session);
+  }
+
+  @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public interface WindowAreaSessionPresenter extends androidx.window.area.WindowAreaSession {
+    method public android.content.Context getContext();
+    method public void setContentView(android.view.View view);
+    property public abstract android.content.Context context;
+  }
+
+}
+
+package androidx.window.core {
+
+  @SuppressCompatibility @kotlin.RequiresOptIn(level=kotlin.RequiresOptIn.Level.WARNING) @kotlin.annotation.MustBeDocumented @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalWindowApi {
+  }
+
+}
+
+package androidx.window.embedding {
+
+  public final class ActivityEmbeddingController {
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public void finishActivityStacks(java.util.Set<androidx.window.embedding.ActivityStack> activityStacks);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public androidx.window.embedding.ActivityStack? getActivityStack(android.app.Activity activity);
+    method public static androidx.window.embedding.ActivityEmbeddingController getInstance(android.content.Context context);
+    method public boolean isActivityEmbedded(android.app.Activity activity);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public boolean isFinishingActivityStacksSupported();
+    field public static final androidx.window.embedding.ActivityEmbeddingController.Companion Companion;
+  }
+
+  public static final class ActivityEmbeddingController.Companion {
+    method public androidx.window.embedding.ActivityEmbeddingController getInstance(android.content.Context context);
+  }
+
+  public final class ActivityEmbeddingOptions {
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static boolean isSetLaunchingActivityStackSupported(android.app.ActivityOptions);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static android.app.ActivityOptions setLaunchingActivityStack(android.app.ActivityOptions, android.app.Activity activity);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public static android.app.ActivityOptions setLaunchingActivityStack(android.app.ActivityOptions, android.content.Context context, androidx.window.embedding.ActivityStack activityStack);
+  }
+
+  public final class ActivityFilter {
+    ctor public ActivityFilter(android.content.ComponentName componentName, String? intentAction);
+    method public android.content.ComponentName getComponentName();
+    method public String? getIntentAction();
+    method public boolean matchesActivity(android.app.Activity activity);
+    method public boolean matchesIntent(android.content.Intent intent);
+    property public final android.content.ComponentName componentName;
+    property public final String? intentAction;
+  }
+
+  public final class ActivityRule extends androidx.window.embedding.EmbeddingRule {
+    method public boolean getAlwaysExpand();
+    method public java.util.Set<androidx.window.embedding.ActivityFilter> getFilters();
+    property public final boolean alwaysExpand;
+    property public final java.util.Set<androidx.window.embedding.ActivityFilter> filters;
+  }
+
+  public static final class ActivityRule.Builder {
+    ctor public ActivityRule.Builder(java.util.Set<androidx.window.embedding.ActivityFilter> filters);
+    method public androidx.window.embedding.ActivityRule build();
+    method public androidx.window.embedding.ActivityRule.Builder setAlwaysExpand(boolean alwaysExpand);
+    method public androidx.window.embedding.ActivityRule.Builder setTag(String? tag);
+  }
+
+  public final class ActivityStack {
+    method public operator boolean contains(android.app.Activity activity);
+    method public boolean isEmpty();
+    property public final boolean isEmpty;
+  }
+
+  public final class EmbeddingAspectRatio {
+    method public static androidx.window.embedding.EmbeddingAspectRatio ratio(@FloatRange(from=1.0, fromInclusive=false) float ratio);
+    field public static final androidx.window.embedding.EmbeddingAspectRatio ALWAYS_ALLOW;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio ALWAYS_DISALLOW;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio.Companion Companion;
+  }
+
+  public static final class EmbeddingAspectRatio.Companion {
+    method public androidx.window.embedding.EmbeddingAspectRatio ratio(@FloatRange(from=1.0, fromInclusive=false) float ratio);
+  }
+
+  public abstract class EmbeddingRule {
+    method public final String? getTag();
+    property public final String? tag;
+  }
+
+  public final class RuleController {
+    method public void addRule(androidx.window.embedding.EmbeddingRule rule);
+    method public void clearRules();
+    method public static androidx.window.embedding.RuleController getInstance(android.content.Context context);
+    method public java.util.Set<androidx.window.embedding.EmbeddingRule> getRules();
+    method public static java.util.Set<androidx.window.embedding.EmbeddingRule> parseRules(android.content.Context context, @XmlRes int staticRuleResourceId);
+    method public void removeRule(androidx.window.embedding.EmbeddingRule rule);
+    method public void setRules(java.util.Set<? extends androidx.window.embedding.EmbeddingRule> rules);
+    field public static final androidx.window.embedding.RuleController.Companion Companion;
+  }
+
+  public static final class RuleController.Companion {
+    method public androidx.window.embedding.RuleController getInstance(android.content.Context context);
+    method public java.util.Set<androidx.window.embedding.EmbeddingRule> parseRules(android.content.Context context, @XmlRes int staticRuleResourceId);
+  }
+
+  public final class SplitAttributes {
+    method public androidx.window.embedding.SplitAttributes.LayoutDirection getLayoutDirection();
+    method public androidx.window.embedding.SplitAttributes.SplitType getSplitType();
+    property public final androidx.window.embedding.SplitAttributes.LayoutDirection layoutDirection;
+    property public final androidx.window.embedding.SplitAttributes.SplitType splitType;
+    field public static final androidx.window.embedding.SplitAttributes.Companion Companion;
+  }
+
+  public static final class SplitAttributes.Builder {
+    ctor public SplitAttributes.Builder();
+    method public androidx.window.embedding.SplitAttributes build();
+    method public androidx.window.embedding.SplitAttributes.Builder setLayoutDirection(androidx.window.embedding.SplitAttributes.LayoutDirection layoutDirection);
+    method public androidx.window.embedding.SplitAttributes.Builder setSplitType(androidx.window.embedding.SplitAttributes.SplitType type);
+  }
+
+  public static final class SplitAttributes.Companion {
+  }
+
+  public static final class SplitAttributes.LayoutDirection {
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection BOTTOM_TO_TOP;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection.Companion Companion;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection LEFT_TO_RIGHT;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection LOCALE;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection RIGHT_TO_LEFT;
+    field public static final androidx.window.embedding.SplitAttributes.LayoutDirection TOP_TO_BOTTOM;
+  }
+
+  public static final class SplitAttributes.LayoutDirection.Companion {
+  }
+
+  public static final class SplitAttributes.SplitType {
+    method public static androidx.window.embedding.SplitAttributes.SplitType ratio(@FloatRange(from=0.0, to=1.0, fromInclusive=false, toInclusive=false) float ratio);
+    field public static final androidx.window.embedding.SplitAttributes.SplitType.Companion Companion;
+    field public static final androidx.window.embedding.SplitAttributes.SplitType SPLIT_TYPE_EQUAL;
+    field public static final androidx.window.embedding.SplitAttributes.SplitType SPLIT_TYPE_EXPAND;
+    field public static final androidx.window.embedding.SplitAttributes.SplitType SPLIT_TYPE_HINGE;
+  }
+
+  public static final class SplitAttributes.SplitType.Companion {
+    method public androidx.window.embedding.SplitAttributes.SplitType ratio(@FloatRange(from=0.0, to=1.0, fromInclusive=false, toInclusive=false) float ratio);
+  }
+
+  public final class SplitAttributesCalculatorParams {
+    method public boolean getAreDefaultConstraintsSatisfied();
+    method public androidx.window.embedding.SplitAttributes getDefaultSplitAttributes();
+    method public android.content.res.Configuration getParentConfiguration();
+    method public androidx.window.layout.WindowLayoutInfo getParentWindowLayoutInfo();
+    method public androidx.window.layout.WindowMetrics getParentWindowMetrics();
+    method public String? getSplitRuleTag();
+    property public final boolean areDefaultConstraintsSatisfied;
+    property public final androidx.window.embedding.SplitAttributes defaultSplitAttributes;
+    property public final android.content.res.Configuration parentConfiguration;
+    property public final androidx.window.layout.WindowLayoutInfo parentWindowLayoutInfo;
+    property public final androidx.window.layout.WindowMetrics parentWindowMetrics;
+    property public final String? splitRuleTag;
+  }
+
+  public final class SplitController {
+    method public void clearSplitAttributesCalculator();
+    method public static androidx.window.embedding.SplitController getInstance(android.content.Context context);
+    method public androidx.window.embedding.SplitController.SplitSupportStatus getSplitSupportStatus();
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public void invalidateTopVisibleSplitAttributes();
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public boolean isInvalidatingTopVisibleSplitAttributesSupported();
+    method public boolean isSplitAttributesCalculatorSupported();
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public boolean isUpdatingSplitAttributesSupported();
+    method public void setSplitAttributesCalculator(kotlin.jvm.functions.Function1<? super androidx.window.embedding.SplitAttributesCalculatorParams,androidx.window.embedding.SplitAttributes> calculator);
+    method public kotlinx.coroutines.flow.Flow<java.util.List<androidx.window.embedding.SplitInfo>> splitInfoList(android.app.Activity activity);
+    method @SuppressCompatibility @androidx.window.core.ExperimentalWindowApi public void updateSplitAttributes(androidx.window.embedding.SplitInfo splitInfo, androidx.window.embedding.SplitAttributes splitAttributes);
+    property public final androidx.window.embedding.SplitController.SplitSupportStatus splitSupportStatus;
+    field public static final androidx.window.embedding.SplitController.Companion Companion;
+  }
+
+  public static final class SplitController.Companion {
+    method public androidx.window.embedding.SplitController getInstance(android.content.Context context);
+  }
+
+  public static final class SplitController.SplitSupportStatus {
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus.Companion Companion;
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus SPLIT_AVAILABLE;
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus SPLIT_ERROR_PROPERTY_NOT_DECLARED;
+    field public static final androidx.window.embedding.SplitController.SplitSupportStatus SPLIT_UNAVAILABLE;
+  }
+
+  public static final class SplitController.SplitSupportStatus.Companion {
+  }
+
+  public final class SplitInfo {
+    method public operator boolean contains(android.app.Activity activity);
+    method public androidx.window.embedding.ActivityStack getPrimaryActivityStack();
+    method public androidx.window.embedding.ActivityStack getSecondaryActivityStack();
+    method public androidx.window.embedding.SplitAttributes getSplitAttributes();
+    property public final androidx.window.embedding.ActivityStack primaryActivityStack;
+    property public final androidx.window.embedding.ActivityStack secondaryActivityStack;
+    property public final androidx.window.embedding.SplitAttributes splitAttributes;
+  }
+
+  public final class SplitPairFilter {
+    ctor public SplitPairFilter(android.content.ComponentName primaryActivityName, android.content.ComponentName secondaryActivityName, String? secondaryActivityIntentAction);
+    method public android.content.ComponentName getPrimaryActivityName();
+    method public String? getSecondaryActivityIntentAction();
+    method public android.content.ComponentName getSecondaryActivityName();
+    method public boolean matchesActivityIntentPair(android.app.Activity primaryActivity, android.content.Intent secondaryActivityIntent);
+    method public boolean matchesActivityPair(android.app.Activity primaryActivity, android.app.Activity secondaryActivity);
+    property public final android.content.ComponentName primaryActivityName;
+    property public final String? secondaryActivityIntentAction;
+    property public final android.content.ComponentName secondaryActivityName;
+  }
+
+  public final class SplitPairRule extends androidx.window.embedding.SplitRule {
+    method public boolean getClearTop();
+    method public java.util.Set<androidx.window.embedding.SplitPairFilter> getFilters();
+    method public androidx.window.embedding.SplitRule.FinishBehavior getFinishPrimaryWithSecondary();
+    method public androidx.window.embedding.SplitRule.FinishBehavior getFinishSecondaryWithPrimary();
+    property public final boolean clearTop;
+    property public final java.util.Set<androidx.window.embedding.SplitPairFilter> filters;
+    property public final androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithSecondary;
+    property public final androidx.window.embedding.SplitRule.FinishBehavior finishSecondaryWithPrimary;
+  }
+
+  public static final class SplitPairRule.Builder {
+    ctor public SplitPairRule.Builder(java.util.Set<androidx.window.embedding.SplitPairFilter> filters);
+    method public androidx.window.embedding.SplitPairRule build();
+    method public androidx.window.embedding.SplitPairRule.Builder setClearTop(boolean clearTop);
+    method public androidx.window.embedding.SplitPairRule.Builder setDefaultSplitAttributes(androidx.window.embedding.SplitAttributes defaultSplitAttributes);
+    method public androidx.window.embedding.SplitPairRule.Builder setFinishPrimaryWithSecondary(androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithSecondary);
+    method public androidx.window.embedding.SplitPairRule.Builder setFinishSecondaryWithPrimary(androidx.window.embedding.SplitRule.FinishBehavior finishSecondaryWithPrimary);
+    method public androidx.window.embedding.SplitPairRule.Builder setMaxAspectRatioInLandscape(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPairRule.Builder setMaxAspectRatioInPortrait(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPairRule.Builder setMinHeightDp(@IntRange(from=0L) int minHeightDp);
+    method public androidx.window.embedding.SplitPairRule.Builder setMinSmallestWidthDp(@IntRange(from=0L) int minSmallestWidthDp);
+    method public androidx.window.embedding.SplitPairRule.Builder setMinWidthDp(@IntRange(from=0L) int minWidthDp);
+    method public androidx.window.embedding.SplitPairRule.Builder setTag(String? tag);
+  }
+
+  public final class SplitPlaceholderRule extends androidx.window.embedding.SplitRule {
+    method public java.util.Set<androidx.window.embedding.ActivityFilter> getFilters();
+    method public androidx.window.embedding.SplitRule.FinishBehavior getFinishPrimaryWithPlaceholder();
+    method public android.content.Intent getPlaceholderIntent();
+    method public boolean isSticky();
+    property public final java.util.Set<androidx.window.embedding.ActivityFilter> filters;
+    property public final androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithPlaceholder;
+    property public final boolean isSticky;
+    property public final android.content.Intent placeholderIntent;
+  }
+
+  public static final class SplitPlaceholderRule.Builder {
+    ctor public SplitPlaceholderRule.Builder(java.util.Set<androidx.window.embedding.ActivityFilter> filters, android.content.Intent placeholderIntent);
+    method public androidx.window.embedding.SplitPlaceholderRule build();
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setDefaultSplitAttributes(androidx.window.embedding.SplitAttributes defaultSplitAttributes);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setFinishPrimaryWithPlaceholder(androidx.window.embedding.SplitRule.FinishBehavior finishPrimaryWithPlaceholder);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMaxAspectRatioInLandscape(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMaxAspectRatioInPortrait(androidx.window.embedding.EmbeddingAspectRatio aspectRatio);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMinHeightDp(@IntRange(from=0L) int minHeightDp);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMinSmallestWidthDp(@IntRange(from=0L) int minSmallestWidthDp);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setMinWidthDp(@IntRange(from=0L) int minWidthDp);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setSticky(boolean isSticky);
+    method public androidx.window.embedding.SplitPlaceholderRule.Builder setTag(String? tag);
+  }
+
+  public class SplitRule extends androidx.window.embedding.EmbeddingRule {
+    method public final androidx.window.embedding.SplitAttributes getDefaultSplitAttributes();
+    method public final androidx.window.embedding.EmbeddingAspectRatio getMaxAspectRatioInLandscape();
+    method public final androidx.window.embedding.EmbeddingAspectRatio getMaxAspectRatioInPortrait();
+    method public final int getMinHeightDp();
+    method public final int getMinSmallestWidthDp();
+    method public final int getMinWidthDp();
+    property public final androidx.window.embedding.SplitAttributes defaultSplitAttributes;
+    property public final androidx.window.embedding.EmbeddingAspectRatio maxAspectRatioInLandscape;
+    property public final androidx.window.embedding.EmbeddingAspectRatio maxAspectRatioInPortrait;
+    property public final int minHeightDp;
+    property public final int minSmallestWidthDp;
+    property public final int minWidthDp;
+    field public static final androidx.window.embedding.SplitRule.Companion Companion;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio SPLIT_MAX_ASPECT_RATIO_LANDSCAPE_DEFAULT;
+    field public static final androidx.window.embedding.EmbeddingAspectRatio SPLIT_MAX_ASPECT_RATIO_PORTRAIT_DEFAULT;
+    field public static final int SPLIT_MIN_DIMENSION_ALWAYS_ALLOW = 0; // 0x0
+    field public static final int SPLIT_MIN_DIMENSION_DP_DEFAULT = 600; // 0x258
+  }
+
+  public static final class SplitRule.Companion {
+  }
+
+  public static final class SplitRule.FinishBehavior {
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior ADJACENT;
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior ALWAYS;
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior.Companion Companion;
+    field public static final androidx.window.embedding.SplitRule.FinishBehavior NEVER;
+  }
+
+  public static final class SplitRule.FinishBehavior.Companion {
+  }
+
+}
+
+package androidx.window.layout {
+
+  public interface DisplayFeature {
+    method public android.graphics.Rect getBounds();
+    property public abstract android.graphics.Rect bounds;
+  }
+
+  public interface FoldingFeature extends androidx.window.layout.DisplayFeature {
+    method public androidx.window.layout.FoldingFeature.OcclusionType getOcclusionType();
+    method public androidx.window.layout.FoldingFeature.Orientation getOrientation();
+    method public androidx.window.layout.FoldingFeature.State getState();
+    method public boolean isSeparating();
+    property public abstract boolean isSeparating;
+    property public abstract androidx.window.layout.FoldingFeature.OcclusionType occlusionType;
+    property public abstract androidx.window.layout.FoldingFeature.Orientation orientation;
+    property public abstract androidx.window.layout.FoldingFeature.State state;
+  }
+
+  public static final class FoldingFeature.OcclusionType {
+    field public static final androidx.window.layout.FoldingFeature.OcclusionType.Companion Companion;
+    field public static final androidx.window.layout.FoldingFeature.OcclusionType FULL;
+    field public static final androidx.window.layout.FoldingFeature.OcclusionType NONE;
+  }
+
+  public static final class FoldingFeature.OcclusionType.Companion {
+  }
+
+  public static final class FoldingFeature.Orientation {
+    field public static final androidx.window.layout.FoldingFeature.Orientation.Companion Companion;
+    field public static final androidx.window.layout.FoldingFeature.Orientation HORIZONTAL;
+    field public static final androidx.window.layout.FoldingFeature.Orientation VERTICAL;
+  }
+
+  public static final class FoldingFeature.Orientation.Companion {
+  }
+
+  public static final class FoldingFeature.State {
+    field public static final androidx.window.layout.FoldingFeature.State.Companion Companion;
+    field public static final androidx.window.layout.FoldingFeature.State FLAT;
+    field public static final androidx.window.layout.FoldingFeature.State HALF_OPENED;
+  }
+
+  public static final class FoldingFeature.State.Companion {
+  }
+
+  public interface WindowInfoTracker {
+    method public static androidx.window.layout.WindowInfoTracker getOrCreate(android.content.Context context);
+    method public kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(android.app.Activity activity);
+    method public default kotlinx.coroutines.flow.Flow<androidx.window.layout.WindowLayoutInfo> windowLayoutInfo(@UiContext android.content.Context context);
+    field public static final androidx.window.layout.WindowInfoTracker.Companion Companion;
+  }
+
+  public static final class WindowInfoTracker.Companion {
+    method public androidx.window.layout.WindowInfoTracker getOrCreate(android.content.Context context);
+  }
+
+  public final class WindowLayoutInfo {
+    method public java.util.List<androidx.window.layout.DisplayFeature> getDisplayFeatures();
+    property public final java.util.List<androidx.window.layout.DisplayFeature> displayFeatures;
+  }
+
+  public final class WindowMetrics {
+    method public android.graphics.Rect getBounds();
+    method @SuppressCompatibility @RequiresApi(android.os.Build.VERSION_CODES.R) @androidx.window.core.ExperimentalWindowApi public androidx.core.view.WindowInsetsCompat getWindowInsets();
+    property public final android.graphics.Rect bounds;
+  }
+
+  public interface WindowMetricsCalculator {
+    method public androidx.window.layout.WindowMetrics computeCurrentWindowMetrics(android.app.Activity activity);
+    method public default androidx.window.layout.WindowMetrics computeCurrentWindowMetrics(@UiContext android.content.Context context);
+    method public androidx.window.layout.WindowMetrics computeMaximumWindowMetrics(android.app.Activity activity);
+    method public default androidx.window.layout.WindowMetrics computeMaximumWindowMetrics(@UiContext android.content.Context context);
+    method public static androidx.window.layout.WindowMetricsCalculator getOrCreate();
+    field public static final androidx.window.layout.WindowMetricsCalculator.Companion Companion;
+  }
+
+  public static final class WindowMetricsCalculator.Companion {
+    method public androidx.window.layout.WindowMetricsCalculator getOrCreate();
+  }
+
+}
+